评估:金标题、回归、不要只靠 vibe-check
提示词是产品行为。OpenAI 的现行建议是:提示词进仓库、和功能同一 PR,并且 每次发布都跑测试与评估用例。只在聊天框里看一次「好像不错」(vibe-check)发现不了:换一个用户原话、换一个模型快照、或多了两段检索噪声之后会怎样。
什么算一次评估
一次用例 = 固定输入 + 可判定的期望。期望可以是:
- 精确匹配(枚举标签)
- Schema 合法(JSON 能 parse、枚举在集合内)
- 必含 / 必不含(引用了某句原文;没有出现密钥)
- 工具轨迹(该搜的搜了;不该调用
delete_*) - 人工量表(1–5 的「是否可发送」),但要有评分说明,不能只写「感觉」
没有期望的「试试看」叫探索,不叫评估。
金标题(gold questions)
先做 10~30 条代表真实分布的题目,而不是 200 条合成废话。每条注明为什么存在:
把金标题和提示词放在同一仓库(例如 evals/gold.jsonl)。改示例或 schema 时必须跑这批题——这就是 回归。
回归怎么跑
最低配:一个脚本读 jsonl,调同一模型快照,打分,失败则非零退出。不必一开始就上平台。LangSmith、Promptfoo、Dify 日志都可以当外壳;用例本身 应属于你。
实践:
- 钉模型快照(
gpt-4.1-mini-YYYY-MM-DD这类),避免「今天换了默认模型所以全绿/全红」 - 钉提示词版本(Git SHA),报告里写上
- 先看 分项失败 再看平均分:G03 变红比总分 0.02 的波动重要
- 改提示词只为修一类失败时,跑全量金标题,避免拆东墙
- Agent 评估要存 轨迹:调了哪些工具、入参是什么,而不是只存最终一句
上线后从真实日志 抽样 补进金标题(脱敏)。生产里新出现的失败模式不进集,回归就是自嗨。
为什么 vibe-check 不够
探索阶段用 vibe 没问题。当作发布门禁时,至少:金标题全绿 + 抽 3 条人工读最终答复。人工读的是「可发布」,脚本管的是「合同没碎」。
最小金标题文件
评分函数先查 schema,再查业务键。G04 这种「必须弃权」用布尔,不要用模糊的「回答得体」。Agent 用例额外记 tools_used:例如 G01 不应调用 delete_order。
把失败行打印出来再改提示词。对着平均分调形容词,是 vibe-check 的脚本版。
和四个构件的关系
评估项应对准合同:角色(有没有对错误读者说教)、任务(交付物在不在)、约束(禁区有没有闯)、格式(能不能 parse)。测不到的句子,等于没写。
换模型或换检索策略时,先跑金标题,再谈「新模型更聪明」。聪明不是门禁;合同才是。