透明度说明
GenAIScript 基础
简介
GenAIScript 是一个赋能团队(包括非开发人员)创建和使用AI增强脚本以支持其工作流程的框架。GenAIScript 提供了编写和调试JavaScript脚本的支持,这些脚本在执行过程中包含对基础模型和LLMs1的调用。GenAIScript 是一个编程框架,允许用户编写AI脚本(我们称之为GenAIScript),在基于VS Code扩展的开发环境中调试这些脚本,并将这些脚本打包成可部署于多种场景的命令行界面。
我们的VS Code扩展支持通过使用Markdown语法编写自然语言加上少量风格化的JavaScript编程,轻松创作GenAIScript。我们的框架允许用户利用多个LLM模型,参数化对模型的调用,执行和调试脚本,追踪LLM提示的构建过程,并提供从提示构建到LLM生成再到解析LLM结果的完整执行跟踪。我们的框架还支持从LLM生成中提取多种形式的输出,包括不同类型文件的输出、旨在编辑现有文件的输出以及结构化格式(如JSON)的输出。
关键术语
GenAIScript 一种风格化的JavaScript程序,用于定义LLM调用的上下文,允许执行任意JavaScript代码,为LLM打包提示输入,调用LLM,并根据提示中给出的指令解包LLM输出。
GPVM: 一个运行时系统,给定一个GenAIScript后执行该GenAIScript,包括将上下文集成到提示中、调用指定的LLM以及从LLM结果中提取内容。
VS Code GenAIScript 扩展 这是一个 VS Code 的插件,为用户提供简单的方法来创建、编辑、运行和调试 GenAIScript。
基础模型与大型语言模型 虽然GenAIScript目前支持多种大型语言模型,但我们预计未来将整合除大型语言模型之外的更多基础模型。
功能
系统行为
GenAIScript是一个通用的AI脚本编写框架,用于无缝集成代码执行和基础模型/LLM调用。GenAIScript是一个采用特定格式的JavaScript程序,使用户能够轻松指定LLM上下文和提示,调用指定模型,并根据用户需求解析输出结果。这一功能使得即使非程序员用户也能检查模型结果并验证其正确性。
GenAIScript可以在任何IDE中编写,但VS Code的GenAIScript插件使得创建、执行和调试GenAIScript变得特别简单。GenAIScript用户可以开发能够通过单一工具生成和编辑多个文件的工具,并且我们与VS Code的集成利用了现有重构功能,让用户能轻松查看工具执行结果。该插件支持创建新的GenAIScript、调用指定GenAIScript、跟踪GenAIScript在建立LLM上下文和最终提示时的执行过程,并将LLM输出解析为用户指定的元素。所有这些功能的示例都可以在GenAIScript仓库的文档中查看:microsoft/GenAIScript: Generative AI Scripting (github.com)
GenAIScript的目标是赋能广泛的潜在用户,通过构建AI驱动的脚本来创新,并找到利用AI提升日常工作效率的新方法。我们预计熟悉编写和使用脚本以提高生产力的专业开发者将成为GenAIScript的早期采用者。GenAIScript将为这些用户带来价值,因为它能实现JavaScript和Python等传统脚本语言无法完成的许多功能。虽然开发者可以使用其他框架(如langchain和Semantic Kernel)将LLM调用集成到Python等语言中,但这些框架需要更多用户投入,且IDE支持不如GenAIScript完善。最终,由于我们的目标是让GenAIScript易于编写、修改、调试和运行,我们预期它的应用范围将远超专业开发者群体。GenAIScript的一个重要影响是让非开发者也能创新并构建提升生产力的GenAIScripts。下文将通过示例说明这一点。
文档
为了帮助用户开始使用GenAIScript,我们在代码库中包含了文档,通过代码片段展示了多个不同GenAIScript的内容。该文档既展示了示例GenAIScript的外观,也展示了GenAIScript作用于特定输入时的效果。虽然这些示例旨在解释该技术,但它们并非用户编写工具的基础。
使用场景
预期用途
GenAIScript可以在任何需要使用其他编程语言编写的命令行脚本的场景中使用,但它的应用场景要宏大得多,因为LLM能做的远不止普通代码。以下是一些示例:
-
检查配置文件集合或其他内容中的潜在不一致性。 利用LLM技术,GenAIScript可以检查配置文件,并借助LLM对常见配置错误的理解来检测和报告这些问题。在LLM出现之前,专业开发人员会编写诸如lint2之类的工具,这些是检测代码文件语法不一致性的复杂程序。通过GenAIScript,可以为更丰富的场景(例如检查不恰当的变量名)编写检查工具,而且可以由非专业开发人员来完成。
-
自动化文档翻译: 给定存储库中以某种自然语言编写的文档,可以编写一个GenAIScript来将该文档翻译成另一种语言。举个具体例子说明为什么GenAIScript对此用途很重要,考虑维护MakeCode3文档本地化的任务。MakeCode文档有近200万个文件,通常是混合了代码片段的markdown格式。许多文档是部分翻译的(在段落级别)。为了检查文档翻译的正确性,有3500名注册志愿者翻译35种以上语言。不能直接使用Bing翻译来处理这个用例,因为它通常会破坏代码片段。使用GenAIScript,我们可以编写一个脚本遍历每个文档文件,提取当前的本地化版本并组装提示,要求LLM填补缺失的翻译,同时保留现有的翻译。因为我们使用的LLM模型已经在MakeCode示例和文档上训练过,它了解语法。
-
通过总结每个章节来创建较长白皮书的简短版本。 大型语言模型在文档摘要方面非常有效。可以编写一个GenAIScript来获取长文档的每个章节,并在较短文档的一个部分中进行总结。
-
将独白转换为对话。 给定视频转录中的一段独白,可以编写一个GenAIScript来将独白重写为两个人之间的对话(类似于体育解说员之间的交谈),使视频更有趣且更易于理解。
非预期用途
GenAIScript是一个通用的脚本编写框架。因此,攻击者可能利用GenAIScript来编写恶意脚本。所有针对GenAIScript的对抗性使用同样可以在其他LLM语言扩展框架中实现,例如Sematic Kernel、autogen和langchain,所以GenAIScript意外使用带来的风险主要源于它可能降低了编写对抗性脚本的难度。这个问题存在于任何简化编程的基础设施中,包括PowerShell、JavaScript和Python等语言,以及VS Code和Visual Studio等IDE。虽然我们无法阻止意外使用,但我们会鼓励用户在构建GenAIScripts时考虑负责任的人工智能实践。更多关于安全和信任相关问题的详细信息,请参阅security and trust。
基础模型最佳实践
我们强烈建议GenAIScript用户使用支持强大负责任AI缓解措施的基础模型和LLM,例如Azure Open AI(AOAI)服务。这些服务会持续更新安全性和RAI缓解措施,以跟踪我们对如何最负责任地部署和使用基础模型的最新理解。以下是帮助您在使用基础模型开发脚本和应用程序时理解并采用最佳实践的资源:
我们建议查阅内容安全文档,以获取更多关于如何防范有害内容和越狱行为的信息。
限制条件
GenAIScript是一个不断发展的框架,将根据用户反馈持续改进。目前该框架的局限性包括:仅支持集成到一种IDE(VS Code)中,内置仅支持OpenAI API及少量其他LLM模型。我们计划让用户能够在GenAIScript中集成调用外部服务(如RAG),从而为LLM提供更丰富的上下文信息。随着应用场景的发展,我们预计会添加对更多基础模型的支持。
我们也预期使用GenAIScript的上手过程会逐步演进。我们已探索过在VS Code Copilot Chat体验中支持调用GenAIScript框架(托管在VS Code Insider版本中)。我们也理解部分开发者更倾向于使用Python而非JavaScript来实现他们的GenAIScript。我们预期未来会构建一个Python绑定表单来创作GenAIScripts。
技术限制、操作因素和范围
GenAIScript在执行框架本身时不使用任何AI模型。 使用GenAIScript编写自己AI脚本的个人将受限于 其脚本所使用的AI LLM的技术限制、操作因素和范围。
提升系统性能的最佳实践
GenAIScript鼓励用户参考最佳实践,以便为他们工具中调用的特定LLM编写有效的提示。
了解更多关于负责任的人工智能
了解更多关于GenAIScript的信息
了解更多关于GenAIScript的信息,请访问我们的GitHub站点,microsoft/GenAIScript: GenAI Scripting (github.com)
联系我们
对本文档提供反馈意见请联系:zorn@microsoft.com, jhalleux@microsoft.com
关于本文档
© 2024 微软公司。保留所有权利。本文档按“原样”提供,仅供参考。文档中表达的信息和观点,包括URL和其他互联网网站引用,可能随时更改,恕不另行通知。使用风险由您自行承担。部分示例仅用于说明目的且为虚构内容。无意暗示或推断任何实际关联。
本文档并非旨在提供,也不应被解释为提供法律建议。您所在司法管辖区可能有适用于您AI系统的各种监管或法律要求。如果您不确定可能适用于您系统的法律法规,特别是如果您认为这些法规可能影响这些建议,请咨询法律专家。请注意,并非所有这些建议和资源都适用于每种情况,反之,这些建议和资源可能不足以应对某些情况。
-
发布日期:2024年3月18日
-
最后更新:2024年3月18日
脚注
-
在本文档中,当我们提到LLMs时,指的是任何与我们的接口兼容的基础模型。↩