Prompt 评测
🎯 学习目标
- 编写 promptfoo.yaml 定义 prompts、providers、tests
- 配置 rubric 与 LLM grader 自动打分
- 用 promptfoo view 对比版本 diff
引言
Promptfoo 是开源 Prompt 评测 CLI,适合本地与 CI 跑多 Prompt × 多 Model 矩阵,下一节 Trace 负责线上,本节负责发布前对比。
章节正文
第 1 步:安装与最小配置
bash
npm install -g promptfoo
mkdir eval && cd evalpromptfoo.yaml:
yaml
description: 客服退款 Eval
prompts:
- file://prompts/v1.txt
- file://prompts/v2.txt
providers:
- openai:gpt-4o-mini
- openai:gpt-4o
tests:
- vars:
question: 如何退款?
assert:
- type: icontains
value: 7天
- type: not-icontains
value: 随时全额prompts/v1.txt 内容示例:
你是客服助手。根据政策回答:{{question}}第 2 步:LLM rubric 评分
yaml
defaultTest:
assert:
- type: llm-rubric
value: |
评分标准(1-5):
5分:准确引用政策,语气专业,无夸大承诺
1分:编造政策或包含 forbidden 承诺
问题:{{question}}
回答:{{output}}可指定 grader 模型:
yaml
evaluateOptions:
provider: openai:gpt-4o第 3 步:运行与 CI 集成
bash
promptfoo eval -c promptfoo.yaml
promptfoo eval -c promptfoo.yaml --output results.json
promptfoo view # 本地 Web UI 对比GitHub Actions 片段:
yaml
- run: npx promptfoo eval -c promptfoo.yaml
- run: npx promptfoo eval -c promptfoo.yaml --filter-first-n 20 # PR 子集最佳实践:生产日志脱敏采样补充 tests;PR 跑 subset,nightly 跑全量。
动手练习
- 创建 v1/v2 两个 Prompt 文件,对 5 个问题跑 eval
- 添加 llm-rubric 断言并对比 view 界面分数
- 写一条 GitHub Actions job 在 PR 时跑 promptfoo
常见问题
Q:Promptfoo 和 LangSmith Eval 区别?
Promptfoo 偏本地/CI 矩阵对比,配置即代码;LangSmith 偏在线 Trace + 数据集一体。可并存。
本节小结
Promptfoo 用 YAML 定义 prompts/providers/tests;assert 支持规则与 llm-rubric;eval + view 是 Prompt 迭代标配。