PromptScript 是一个轻量级的 Prompt 调试、测试场景下的 DSL (Yaml)脚本,以用于快速测试和构建 Prompt。
特性:
- 基于模板的 prompt 动态生成。支持不同的模板格式,Prompt 模板与 JSON 数据源分离,方便复用。
- 模板数据源。支持多种数据源,如文件、数据库、HTTP 等
- 不同参数的任务策略。如 LLM 的 temperature 参数配置、重复次数等。
- 结果验证。支持 JSONPath、字符串等验证方式。
- 多 LLM 连接配置。支持多个 LLM 连接配置,方便不同的 LLM 调试。
PromptScript 示例
name: "Open AI Verifier"
description: "Verify Open AI's LLM"
jobs:
prompt-evaluate:
description: "Evaluate prompt with different parameters"
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: # optional
- type: json-path
value: $.id
- type: string
value: output.length > 300
运行 PromptScript
方式 1:使用 Kotlin Scripting
在 Intellij IDEA 中编写 Kotlin Scripting,保存为 prompt-script.main.kts
,然后运行。PS:其中的 prompt-script
为任意名称,main.kts 是固定的。
@file:DependsOn("cc.unitmesh:prompt-script:0.3.8")
import cc.unitmesh.prompt.*
executeScript("config/prompt.unit-mesh.yml")
或者使用 Kotlin Scripting CLI 运行:kotlinc -script prompt-script.main.kts
方式 2:使用 CLI 运行
- 下载 CLI。从 releases 下载 prompt-script-all.jar,(这里的 * 是版本号)。
- 配置 PromptScript 的 YAML 文件。
- 运行 PromptScript
日志示例:
java -jar prompt-script-0.3.5-all.jar --input examples/prompt-script/prompt.unit-mesh.yml
[CF] c.u.p.e.ScriptExecutor execute job: prompt-evaluate
[CF] c.u.p.e.ScriptExecutor connection file: /Volumes/source/ai/chocolate-factory/examples/prompt-script/openai-connection.yml
[CF] c.j.j.i.p.CompiledPath Evaluating path: $['id']
[CF] c.u.p.e.ScriptExecutor JsonPathValidator validate failed: {"text":"目前最流行的前端框架有React、Angular和Vue.js"}
[CF] c.u.p.e.ScriptExecutor StringValidator validate failed: {"text":"目前最流行的前端框架有React、Angular和Vue.js"}
[CF] c.u.p.e.ScriptExecutor write result to file: examples/prompt-script/prompt-evaluate-2023-10-01T12-34-42.269901.txt
[CF] c.u.p.PromptScriptCommand execute script success: examples/prompt-script/prompt.unit-mesh.yml