返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

微软开源 GenAIScript:用 JavaScript 掌控 LLM 的力量

[复制链接]
链载Ai 显示全部楼层 发表于 昨天 11:48 |阅读模式 打印 上一主题 下一主题

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: inherit;letter-spacing: 0.1em;border-width: 0px;border-style: solid;border-color: hsl(var(--border));text-align: left;line-height: 1.75;color: rgb(15, 76, 129);">GenAIScript 是微软开源的,允许你使用 JavaScript 语法编写和管理 LLM prompts 的强大工具。它与 VS Code 深度集成,提供便捷的开发环境,并支持多种 LLM 模型。通过 "rompt 即代码" 的理念,GenAIScript 简化了 LLM 应用的开发流程,并提升了效率。本文将带你深入了解 GenAIScript,从入门到最佳实践,并通过实例展示其强大功能。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;display: table;padding: 0.3em 1em;color: rgb(255, 255, 255);background: rgb(15, 76, 129);border-radius: 8px;box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 6px;">GenAIScript 简介

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;color: rgb(63, 63, 63);">

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;letter-spacing: 0.1em;color: rgb(63, 63, 63);text-align: left;">ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);">GenAIScript 的优势:

    ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;color: rgb(63, 63, 63);" class="list-paddingleft-1">
  • ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;text-indent: -1em;display: block;margin: 0.5em 8px;">

    ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: inherit;color: rgb(15, 76, 129);">Prompt 即代码:以编程方式构建和管理 prompt,提高了 prompt 的可重用性和可维护性。

  • ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;text-indent: -1em;display: block;margin: 0.5em 8px;">

    与 VS Code 深度集成:提供了便捷的开发、调试、测试和运行环境。

  • 支持多种 LLM 模型:连接 GitHub Models、GitHub Copilot、开源模型等,提供灵活的选择。

  • 丰富的功能:包括文件读写、数据处理、LLM 工具和代理、RAG、安全检测等,涵盖 LLM 应用开发的各个方面。

GenAIScript 的应用场景:

  • 自动化文档处理:例如翻译、摘要、审查等。

  • 代码生成和分析:例如生成代码注释、进行代码审查、修复代码错误等。

  • 数据提取和分析:例如从非结构化数据中提取关键信息、进行情感分析等。

  • 构建聊天机器人和 AI 代理:创建更智能、更具交互性的对话体验。

核心代码逻辑:Prompt 即代码

GenAIScript 的核心在于其"Prompt 即代码" 的理念。它将 LLM prompt 转化为可编程、可管理的 JavaScript 代码,让开发者可以像编写普通代码一样构建和操作 prompt。

最基本的 prompt 创建方式如下:

$`Writea'helloworld'poem.`

$函数在这里充当了一个模板标签,将字符串内容转换为发送给 LLM 的 prompt。

GenAIScript 支持将变量、文件内容等动态地嵌入到 prompt 中:

//读取文件
constfile=awaitworkspace.readText("data.txt");
//定义变量DATA,并将文件内容赋值给它
def("DATA",file);
//构建prompt,引用变量DATA
$`AnalyzeDATAandextractdatainJSONandsaveittodata.json.`

def函数不仅引入了文件内容,还会对其进行优化,以适应目标 LLM 的特性。同时,GenAIScript 也能智能地解析 LLM 的输出,并自动提取data.json文件。

GenAIScript 入门

安装与配置

推荐使用 VS Code 插件,可以获得更好的开发体验,包括语法高亮、代码补全、调试等功能。你也可以使用命令行工具。

  1. 1. 在 VS Code 中打开 Extensions Marketplace (Ctrl+Shift+X)。

  2. 2. 搜索 "GenAIScript" 并安装。

  3. 3. 安装完成后,需要在 VS Code 的设置中配置 LLM 模型的访问密钥等信息。参考配置文档:GenAIScript 配置文档

编写第一个 GenAIScript

创建一个以.genai.mjs.genai.mts为后缀的文件,例如summarize.genai.mjs

//定义文件变量FILE,使用env.files获取当前选中文件的内容
constfile=def("FILE",env.files);
//构建prompt,引用变量FILE
$`Summarize${file}inonesentence.`

在 VS Code 中右键点击文件,选择 "Run GenAIScript" 即可运行脚本。env.files会自动获取你所选中的文件内容作为输入。

GenAIScript 最佳实践

  • 提供充足的上下文:使用def函数将相关文档和数据引入 prompt,为 LLM 提供更丰富的背景信息,使其更好地理解任务。

  • 专注于单一任务:避免在一个 GenAIScript 中处理过于复杂的任务。将复杂任务分解成多个小的、专注的脚本,更易于调试和维护。

  • 组合多个脚本:利用 GenAIScript 的 CLI 或其他工具,将多个脚本组合成一个完整的工作流程,实现更复杂的功能。

  • 选择合适的 LLM:根据任务需求、性能和成本,选择最合适的 LLM 模型。

  • 利用 Schema 定义结构化数据:使用defSchema定义预期的数据结构,可以更有效地从 LLM 输出中提取信息,并提高输出的可靠性。

  • 善用工具和代理:GenAIScript 支持自定义工具和代理,可以扩展 LLM 的能力,使其能够执行更复杂的操作,例如访问外部 API、执行代码等。

  • 测试和评估:使用 GenAIScript 内置的测试和评估功能,可以确保 prompt 的质量和可靠性。

GenAIScript 实例:文档翻译

MakeCode 文档翻译案例充分展现了 GenAIScript 的实用价值。由于 MakeCode 文档中包含许多自定义宏和语法,传统的翻译工具难以处理。GenAIScript 通过定制 prompt,成功地解决了这个问题。

实例实现说明:

该脚本的目标是将 MakeCode 文档翻译成不同的语言。它利用 GenAIScript 的$函数构建 prompt,并利用def函数将待翻译的文档内容传入 prompt。脚本中定义了详细的翻译规则,以指导 LLM 正确地翻译文档,并保留 MakeCode 文档中的自定义宏和语法。通过命令行参数lang可以指定目标语言,结合 GitHub Actions 可以实现自动化翻译流程。

代码示例:

//定义脚本元数据,包括标题、分组和temperature
script({
"title":"TranslateMakeCodedocumentation",
"group":"Translation",
temperature:0//temperature为0表示生成结果更确定性
})

//获取命令行参数中的目标语言,默认为French
constlangName=env.vars.lang||"French"
//获取待翻译的文件内容
constfile=env.files[0]
//将文件内容定义为变量ORIGINAL,并指定语言为markdown
def("ORIGINAL",file,{language:"markdown"})

//构建prompt,设定LLM的角色和专业领域
$`YouareanexpertatComputerScienceeducation.
YouareanexpertatwritingMakeCodedocumentationandtutorials.
Youareanexpert${langName}translator.`

//构建第二个prompt,描述翻译任务,并给出具体的翻译规则
$`TranslatethedocumentationinORIGINALto${langName}.
-Donottranslateheaderstartingwith~//保留以~开头的标题
-DoNOTtranslatecodein\`blocks\`,\`typescript\`,\`spy\`or\`python\`.However,youcantranslatecomments.//保留代码块,但可以翻译注释
-Donottranslate@variable@or@unplugged//保留特定标识符
-Translate\`##{<text>}\`as\`##{<translatedtext>}\`//翻译标题中的文本
-Whenyouencounterasnippetlike"\`\`||<namespace>:<text>||\`\`",DONOTtranslate<namespace>butDOtranslate<text>.//翻译特定格式的文本,保留命名空间
\`\`||<namespace>:<text>||\`\`-->\`\`||<namespace>:<translatedtext>||\`\`//示例
...`//其他翻译规则

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ