展开本页目录
开始前准备什么
- 下载本题完整练习包,区分待实现 starter 与作者完成 reference。
- 按README准备本题原生依赖;所有输入均为原创或明确标注的本地fixture。
- 本地练习不需要付费模型Key;真实模型调用未执行,MiniLM题另有明确实际推理说明。
- 准备八个案例
- 实现本地Provider
- 运行旧版本
- 读取断言失败
- 修正字段合同
- 运行新版本
- 区分配置与模型
原创输入、待完成starter、作者reference及实际运行产物,依README本地准备依赖。
环境要求、具体操作、产物核对与未运行范围。
1. 准备八个案例
练习包含导出、账户、发票和订单四类任务,共八条输入;每条有固定 request_id 与 expected route。先检查这些期望值是业务合同,不能由被测输出自己反推。
2. 实现本地Provider
自定义 JavaScript Provider 实现 id 与 callApi,明确返回确定性 fixture。它模拟输出形状,tokenUsage 为0,不调用付费模型,也不评估真实模型的理解能力。
本地启动与复现
cd reference
npm install
node verify.mjs3. 运行旧版本
使用 promptfoo 原生 evaluate 跑 v1。旧 fixture 故意缺少 request_id,另有一条 route 错误;断言同时检查 JSON 可解析、路由匹配和请求编号保持。
4. 读取断言失败
打开 v1-evaluation.json 逐条看失败原因。这里八条均未满足完整字段合同,说明断言链路在工作;不能把这份结果解读为某个模型的真实准确率。
5. 修正字段合同
在 v2 fixture 中按输入返回 route 与 request_id。保留同一批输入和相同断言,只修复输出合同,避免同时换测试集而掩盖变化。
6. 运行新版本
再次运行原生 evaluate,八条字段断言全部满足。对照两份报告,可以确认配置、Provider 和断言接线正确,之后才适合接入你自己的模型测试。
7. 区分配置与模型
运行 node verify.mjs 可复现两次结果。要比较提示词真实效果,必须换成真实模型 Provider 并记录模型、参数、成本和同一批样本;本文没有做这一步,不把确定性回归当作模型质量排名。
怎样确认已经完成
- promptfoo原生evaluate完成八条确定性fixture的旧版失败与新版字段断言通过;仅验证管道,不代表真实模型质量。
- 固定输入、期望合同和断言,修改后用同批案例比较结果。本文先用确定性Provider验证接线;真实提示词质量还需接真实模型。
- 可以。自定义JS Provider返回声明的fixture,原生evaluate仍执行JSON与字段断言。本题不发生模型调用,因此不提供真实模型准确率。
常见问题
提示词改了一句,怎么知道有没有把旧功能改坏?
固定输入、期望合同和断言,修改后用同批案例比较结果。本文先用确定性Provider验证接线;真实提示词质量还需接真实模型。
不花模型费用能先测试promptfoo配置和断言吗?
可以。自定义JS Provider返回声明的fixture,原生evaluate仍执行JSON与字段断言。本题不发生模型调用,因此不提供真实模型准确率。
哪些部分实际运行,哪些需要独立验证?
promptfoo原生evaluate完成八条确定性fixture的旧版失败与新版字段断言通过;仅验证管道,不代表真实模型质量。 目标AI助手账号生成、云平台部署和生产环境不在本次执行范围。




