PromptScript 是一个轻量级的 Prompt 调试用的 DSL (Yaml)脚本,以用于快速使用、构建 Prompt。
PromptScript 文档:https://framework.unitmesh.cc/prompt-script
几个月前,在研究 LLM 进行研究效能提升时,我们构建了 UnitMesh (https://github.com/unit-mesh) 下的 DevTi 项目,以用于进行批量化的数据处理和 Prompt 验证 —— 诸如于,校验生成的是否是 UML,以及 UML 是否能被成功的编译。
对应的数据处理步骤为:
除了这种批量化的数据生成场景,在编写一个 AIGC 优先的应用时,我们还需要考虑不同参数下的效果。
基于此,我们在 Chocolate Factory 上构建了 PromptScript,以加速 LLM 的测试和效果验证。
PromptScript 是一个用于 LLM(Language Model)测试与验证的轻量级 DSL(Domain-Specific Language)脚本工具。它具有以下主要特点:
PromptScript 旨在简化 LLM 测试过程,提高效率,并为用户提供更大的灵活性和可维护性。
下图是一个 PromptScript 的示例:
在这里一个 Script 会为四部分:
随后,我们只需要通过 PromptScriptCli 就可以进行对应的 yaml 配置,并存储到对应的结果文件中。
现在,让我们再来看一下精简的 PromptScript 的 Job 示例:
connection: connection.yml
template: code-complete.open-ai.vm
template-datasource:
- type: file
value: datasource.json
strategy:
- type: connection
value:
- type: range
key: temperature
range: 0.7~1.0
step: 0.1
validate:
- type: json-path
value: $.id
第一个项配置是 connection,一个 connection 会根据不同的 type 来决定选用哪个 LLM Provider。诸如于如下的是一个用于本地测试用的 Mock 的配置,只会返回一个默认的值(api-response):
name: mock_response
type: MockLlm
configs:
api-response: "{\"text\": \"this is a mock resource\"}"
如下则是一个 OpenAI 的配置项:
name: open_ai_connection
type: OpenAI
configs:
api-host: xx
secrets:
api-key: xxx
通过这种 YAML 配置的方式来支持不同的 LLM 接入。(PS:未来还应该支持多 LLM 的对比)
Prompt 生成主要依赖于模型引擎与对应的数据源。如我们优先考虑的模板引擎是可以在 Intellij IDE、VS Code 等有高亮(highlight)支持的模板文件,诸如于 Apache Velocity 等。
随后,根据 datasource 来加载对应的数据,以渲染模板。
template-datasource:
- type: file
value: datasource.json
诸如于这里的 file,是从 json 文件中读取数据,并结合模板渲染成一个 prompt。
当前的任务策略,只支持比较简单的两种方式,即重复和 LLM 的参数化配置。这两种方式都是用于验证 Prompt 结果是否能满足我们的需求:
- type: connection
value:
- type: range
key: temperature
range: 0.7~1.0
step: 0.1
- type: repeat
value: 20
未来,根据需要,也会加入更多的任务策略。
最后一部分是 LLM 生成的结果校验,当前支持 JsonPath、String、Regex、MarkdownCodeBlock、Json 和 ExtTool 等验证方法。
示例:
- type: json-path
value: $.store.book[0].title
- type: string
value: output contains "hello"
- type: regex
value: \d{4}
- type: markdown-code
根据不同的 prompt 结果,来选择合适的 validate。
GitHub:https://github.com/unit-mesh/chocolate-factory
PromptScript 通过 YAML 配置文件的方式支持不同的 LLM 接入,允许用户定义模板和数据源来生成 Prompt。用户还可以配置任务策略和结果验证方法,以验证生成的结果是否符合需求。
PromptScript旨在为研究LLM、批量数据处理和Prompt验证提供一个便捷的工具,以提高效能和测试的效果。
围观我的Github Idea墙, 也许,你会遇到心仪的项目