genaiscript
GenAIScript 是一款让开发者能用 JavaScript 代码“编写”提示词(Prompt)的开源工具。它核心理念是“提示即编程”,旨在解决传统手动编写提示词难以复用、缺乏版本控制且无法灵活处理复杂数据的问题。通过 GenAIScript,用户可以像编写普通程序一样,将文件读取、数据处理、逻辑判断与大模型调用无缝结合,轻松实现自动化工作流。
这款工具特别适合熟悉 JavaScript 或 TypeScript 的开发者、工程师及技术研究人员使用。如果你希望将大模型能力集成到现有代码项目中,或者需要批量处理 PDF、DOCX 等文档并提取结构化数据,GenAIScript 能提供极大便利。其独特亮点在于内置了强大的数据模式(Schema)支持(兼容 Zod),可自动验证和修复大模型输出的数据格式;同时提供深度的 Visual Studio Code 集成,支持断点调试与测试,让开发体验如同编写传统软件般流畅。此外,它还原生支持 GitHub Copilot、OpenAI、Azure 及 Anthropic 等多种主流模型服务,帮助用户高效构建可维护、可共享的智能脚本。
使用场景
某科技公司的数据分析师需要每周从数十份格式各异的 PDF 产品报告中提取关键指标,并整理为标准的 JSON 格式供下游系统使用。
没有 genaiscript 时
- 分析师需手动打开每个 PDF 复制文本到聊天窗口,反复粘贴提示词,效率极低且容易出错。
- 缺乏统一的数据结构约束,大模型返回的 JSON 格式经常不一致,导致后续代码解析频繁报错。
- 处理流程无法版本化管理,一旦逻辑调整,难以追溯历史操作或与他人协作复用脚本。
- 面对非文本格式(如扫描版 PDF 或 DOCX),需要额外编写复杂的预处理代码来提取内容。
使用 genaiscript 后
- 通过几行 JavaScript 代码即可批量读取文件夹内的所有 PDF/DOCX,自动将内容注入提示词上下文,实现一键全自动处理。
- 利用内置的
defSchema定义严格的数据校验规则,genaiscript 能自动修复大模型的输出偏差,确保生成的 JSON 永远符合预期结构。 - 整个提取逻辑被封装为可版本控制的脚本文件,团队成员可直接在 VS Code 中调试、共享和迭代这套自动化流程。
- 原生支持多种文档格式的解析抽象,无需关心底层文件转换细节,专注于业务逻辑本身。
genaiscript 将原本繁琐的人工“复制 - 粘贴 - 清洗”工作流,转变为可维护、可测试且高度自动化的代码工程,极大提升了数据处理的可靠性与开发效率。
运行环境要求
- 未说明
- 非必需
- 支持通过 Ollama、LocalAI 等运行本地开源模型(如 Phi-3),或使用 GitHub Models、OpenAI、Azure OpenAI、Anthropic 等云端 API
- 若运行本地模型,具体 GPU 需求取决于所选模型
未说明

快速开始

GenAIScript
提示词即代码
使用 JavaScript 以编程方式组装大型语言模型的提示词。在代码中编排 LLM、工具和数据。
用于处理提示词的 JavaScript 工具箱
简化操作并提高效率的抽象层
无缝集成 Visual Studio Code 或灵活的命令行界面
内置对 GitHub Copilot 和 GitHub Models、OpenAI、Azure OpenAI、Anthropic 等的支持
📄 在线文档请访问 microsoft.github.io/genaiscript
💬 加入 Discord 服务器
📝 阅读 博客 获取最新资讯
📺 观看 前田先生的温馨 AI 厨房
🤖 代理 - 阅读 llms-full.txt
Hello world
假设你想创建一个生成“hello world”诗歌的 LLM 脚本。你可以编写如下脚本:
$`写一首“hello world”诗。`
$ 函数是一个模板标签,用于创建提示词。随后,该提示词会被发送到你已配置的 LLM,由其生成诗歌。
让我们通过添加文件、数据和结构化输出来使它更有趣。假设你想在提示词中包含一个文件,并将输出保存到另一个文件中。你可以编写如下脚本:
// 读取文件
const file = await workspace.readText("data.txt")
// 以适合上下文的方式将文件内容纳入提示词
def("DATA", file)
// 任务
$`分析 DATA,并将数据提取为 JSON 格式,保存到 data.json 中。`
def 函数会将文件内容纳入提示词,并在必要时为目标 LLM 进行优化。GenAIScript 脚本还会解析 LLM 的输出,并自动提取出 data.json 文件。
🚀 快速入门指南
通过安装 Visual Studio Code 扩展 或使用 命令行 即可快速上手。
✨ 功能特性
🎨 风格化的 JavaScript 和 TypeScript
使用 JavaScript 或 TypeScript 以编程方式构建提示词。
def("FILE", env.files, { endsWith: ".pdf" })
$`总结 FILE。今天是 ${new Date()}。`
🚀 快速开发循环
在 Visual Studio Code 或通过 命令行 中编辑、调试、运行 和 测试 你的脚本。
🔗 脚本的复用与分享
脚本就是 文件! 它们可以被版本控制、共享和分叉。
// 定义上下文
def("FILE", env.files, { endsWith: ".pdf" })
// 构建数据结构
const schema = defSchema("DATA", { type: "array", items: { type: "string" } })
// 分配任务
$`分析 FILE,并使用 ${schema} 模式将数据提取为 JSON。`
📋 数据模式
使用 模式 定义、验证和修复数据。内置 Zod 支持。
const data = defSchema("MY_DATA", { type: "array", items: { ... } })
$`使用 ${data} 模式从文件中提取数据。`
📄 从 PDF、DOCX 等中提取文本
def("PDF", env.files, { endsWith: ".pdf" })
const { pages } = await parsers.PDF(env.files[0])
📊 从 CSV、XLSX 等中提取表格数据
def("DATA", env.files, { endsWith: ".csv", sliceHead: 100 })
const rows = await parsers.CSV(env.files[0])
defData("ROWS", rows, { sliceHead: 100 })
📝 生成文件
从 LLM 输出中提取文件并进行差异比较。在 Refactoring UI 中预览更改。
$`将结果保存到 poem.txt 中。`
FILE ./poem.txt
敏捷的棕狐跃过懒狗。
🔍 文件搜索
使用 grep 或模糊搜索 文件。
const { files } = await workspace.grep(/[a-z][a-z0-9]+/, { globs: "*.md" })
分类
对文本、图片或两者的混合进行分类。
const joke = await classify(
"为什么鸡要过马路?为了在阳光下煎一煎。",
{
yes: "好笑",
no: "不好笑",
}
)
LLM 工具
将 JavaScript 函数注册为 工具,并提供对不支持工具的模型的回退机制。还支持 模型上下文协议 (MCP) 工具。
defTool(
"weather",
"查询天气 Web API",
{ location: "string" },
async (args) =>
await fetch(`https://weather.api.api/?location=${args.location}`)
)
LLM 代理
将 JavaScript 函数注册为 工具,并将工具与提示词结合形成代理。
defAgent(
"git",
"使用 Git 查询仓库以完成任务。",
`你是一个有用的 LLM 代理,可以使用 git 工具查询当前仓库。
回答 QUERY 中的问题。
- 当前仓库与 GitHub 仓库相同。`,
{ model, system: ["system.github_info"], tools: ["git"] }
)
然后将其作为工具使用:
script({ tools: "agent_git" })
$`对最近的提交进行统计分析。`
参见 git 代理源码。
🔍 内置 RAG
向量搜索。
const { files } = await retrieval.vectorSearch("cats", "**/*.md")
🐙 GitHub 模型和 GitHub Copilot
通过 GitHub 模型 或 GitHub Copilot 运行模型。
script({ ..., model: "github:gpt-4o" })
💻 本地模型
使用 开源模型(如 Phi-3),通过 Ollama 或 LocalAI 运行你的脚本。
script({ ..., model: "ollama:phi3" })
🐍 代码解释器
让大语言模型在一个沙盒执行环境中运行代码。
script({ tools: ["python_code_interpreter"] })
🐳 容器
在 Docker 容器 中运行代码。
const c = await host.container({ image: "python:alpine" })
const res = await c.exec("python --version")
视频处理
对视频进行转录和截图,以便高效地将其输入到大语言模型的请求中。
// 转录
const transcript = await transcript("path/to/audio.mp3")
// 按片段截取屏幕截图
const frames = await ffmpeg.extractFrames("path_url_to_video", { transcript })
def("TRANSCRIPT", transcript)
def("FRAMES", frames)
🧩 大语言模型组合
运行大语言模型 来构建你的大语言模型提示。
for (const file of env.files) {
const { text } = await runPrompt((_) => {
_.def("FILE", file)
_.$`总结 FILE。`
})
def("SUMMARY", text)
}
$`总结所有摘要。`
🅿️ Prompty 支持
也可以运行你的 Prompty 文件!
---
name: poem
---
给我写一首诗
可插拔的秘密扫描
使用 秘密扫描 扫描你的聊天内容中的敏感信息。
{
"secretPatterns": {
...,
"OpenAI API Key": "sk-[A-Za-z0-9]{32,48}"
}
}
⚙ 使用 CLI 或 API 自动化
npx genaiscript run tlaplus-linter "*.tla"
import { run } from "genaiscript/api"
const res = await run("tlaplus-linter", "*.tla")
安全第一!
GenAIScript 提供内置的负责任 AI 系统提示以及 Azure 内容安全支持,以验证 内容安全。
script({ ...,
system: ["system.safety_harmful_content", ...],
contentSafety: "azure" // 使用 Azure 内容安全
})
const safety = await host.contentSafety()
const res = await safety.detectPromptInjection(env.vars.input)
💬 拉取请求评审
通过评论、评审或描述更新,将 GenAIScript 集成到你的 拉取请求检查 中。支持 GitHub Actions 和 Azure DevOps 流水线。
npx genaiscript ... --pull-request-reviews
⭐ 测试与评估
使用由 promptfoo 提供支持的 测试和评估,构建可靠的提示。
script({ ..., tests: {
files: "penguins.csv",
rubric: "is a data analysis report",
facts: "The data refers about penguin population in Antarctica.",
}})
大语言模型友好的文档
整个文档的内容以 Markdown 格式渲染在 https://microsoft.github.io/genaiscript/llms-full.txt 上。可以直接将其输入到你喜爱的 RAG 系统中。
如果你是大语言模型爬虫,只需在任何文档 URL 后添加 .md 后缀,即可获取原始 Markdown 内容。例如,https://microsoft.github.io/genaiscript/guides/prompt-as-code.md(注意 .md 扩展名)。
贡献
我们欢迎贡献!请查看 CONTRIBUTING 页面,了解详细信息和开发者设置。
商标
该项目可能包含项目、产品或服务的商标或标识。微软商标或标识的授权使用须遵守并遵循 微软商标与品牌指南。在本项目的修改版本中使用微软商标或标识时,不得造成混淆或暗示微软的赞助关系。任何第三方商标或标识的使用均受该第三方政策的约束。
版本历史
2.5.12025/09/262.5.02025/09/162.4.12025/08/222.4.02025/08/192.3.152025/08/122.3.142025/08/062.3.132025/08/042.3.122025/08/022.3.112025/08/012.3.102025/07/252.3.92025/07/212.3.82025/07/212.3.72025/07/212.3.62025/07/172.3.52025/07/172.3.42025/07/172.3.32025/07/172.3.22025/07/172.3.12025/07/172.3.02025/07/16常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。