主题
第8章 评测体系建设
8.1 问题场景
很多智能体项目停留在演示层面:现场看起来很聪明,但一改提示词(prompt)、一换模型、一调检索参数,线上体验就会波动。 没有标准化评测,你很难回答下面这些问题:
- 本次发布到底是变好了还是变差了。
- 变差的是哪一类问题。
- 是检索、工具、模型输出,还是前端展示引入了问题。
- 当前版本是否达到可发布门槛。
很多前端工程师刚开始做 AI Agent 项目时,会把“评测”理解成试几个问题看看效果。 这种方式在演示(Demo)阶段勉强够用,但一旦要上线或做团队协作,就很容易失控:
- 你记不住哪些问题以前通过过。
- 你无法客观比较不同版本。
- 你很难说服产品或面试官“这个系统真的更稳了”。
评测体系建设的本质,就是把“主观感觉不错”升级成“有样本、有指标、有回归、有门禁”的工程能力。
前端迁移提示
这一章和前端工程也高度相关,因为你原来就做过很多“质量保证”工作:
- 单元测试 / E2E -> 离线样本回归。
- CI 检查 -> 发布门禁。
- 埋点与漏斗分析 -> 线上行为指标。
- 错误监控 -> 失败样本归类与定位。
最小项目目标
本章建议先完成一个“最小评测闭环”项目,例如:
- 为一个 RAG 问答接口设计 20 条评测样本。
- 输出统一的评测结果 JSON。
- 明确发布阈值与不通过时的处理方式。
参考入口:
8.2 核心原理
Eval 闭环图
评测体系的价值,不在于多写几条问题,而在于把“样本 -> 指标 -> 结论 -> 发布动作”串成完整闭环。 如果只有样本,没有统一结果结构和发布规则,评测就很难真正进入工程流程。
一、分层评测:离线评测和线上指标都要有
最小评测体系一般至少有两层:
- 离线评测:固定样本集,便于版本间可比。
- 线上指标:真实用户行为与结果反馈,便于发现真实世界问题。
离线评测解决“改完之后客观变没变”,线上指标解决“用户真实体验有没有问题”。
二、指标必须和业务目标对应
评测指标不是越多越好,而是要能回答业务问题。 例如在问答场景里,最关键的常见指标包括:
- 命中率。
- 引用准确率。
- 拒答准确率。
- 平均延迟。
如果你在做执行型或工作流型 Agent,指标还可能包括:
- 节点成功率。
- 人工介入比例。
- 任务完成率。
- 用户取消率。
三、回归机制:每次改动都要能重跑同一套样本
评测的关键不只是有样本,而是:
- 样本要固定。
- 执行方式要固定。
- 结果结构要固定。
- 门禁标准要固定。
这样你才能真正比较不同版本,而不是每次都换一批问题“凭感觉看效果”。
四、结果结构必须可消费
为了便于前端、发布流程和报告模板使用,评测结果建议统一为稳定的结果结构。 例如你可以直接参考:
docs/examples/assets/samples/example-02-eval-result.json
这种结构的好处是:
- 前端可以直接做结果展示页。
- 工作流或发布脚本可以自动读取指标。
- 作品集里也能直接展示关键结果。
五、评测最终要服务发布决策
真正成熟的评测,不只是给技术同学看,而是用于回答:
- 这个版本能不能发。
- 哪个指标没达标。
- 哪个模块引入了回退。
- 是临时放行,还是必须修复后再发布。
8.3 实操步骤
推荐做法不是先追求复杂评测平台,而是先做“最小样本集 + 统一结果结构 + 基线阈值”三件事。 先让评测跑起来,再逐步扩展自动化和治理深度。
步骤 1:先定义评测目标
先回答:
- 评测的是哪一条链路。
- 最关键的成功标准是什么。
- 失败时意味着什么业务风险。
如果目标都不清楚,后面的样本和指标会越来越散。
步骤 2:建立最小样本集
建议至少覆盖三类样本:
- 正常问题。
- 边界问题。
- 应该拒答的问题。
如果你在做问答场景,可以直接从:
docs/guide/assets/ch04-eval-template.jsonl开始理解最小样本结构。
步骤 3:统一结果格式
评测脚本输出必须可解析、可对比、可展示。 最小结果建议包括:
- 运行 ID。
- 评测集名称。
- 关键指标。
- 简要结论。
你可以直接复用:
docs/examples/assets/samples/example-02-eval-result.json
步骤 4:建立基线阈值
不要等结果出来后再解释“其实这样也算可以”。 更合理的方式是提前约定阈值,例如:
- 命中率 >= 80%
- 引用准确率 >= 85%
- 不可回答场景拒答率 >= 90%
步骤 5:把评测接入版本迭代
每次改动以下任一项时,都应该重跑回归:
- 提示词(prompt)模板。
- 模型版本。
- 检索参数。
- 重排策略。
- 工具逻辑。
- 输出结构。
步骤 6:补前端结果展示与证据材料
前端建议至少能展示:
- 当前评测版本。
- 关键指标。
- 是否通过门禁。
- 典型失败样本。
- 可下载或查看的结果 JSON。
同时建议保留这些证据材料:
- 评测结果样本:
docs/examples/assets/samples/example-02-eval-result.json - 截图清单:
docs/examples/assets/screenshots/README.md - 章节片段索引
- 示例骨架
步骤 7:把评测能力映射回工程闭环
如果你已经做通最小评测闭环,可以继续映射:
- 第 4-5 章:用于验证 RAG 问答质量。
- 第 6 章:用于验证工作流节点成功率和恢复能力。
- 第 9 章:用于形成发布门禁和回滚依据。
8.4 常见坑
坑 1:只选容易通过的样本
这样会让评测结果严重失真,看起来很好看,但线上一用就暴露问题。
坑 2:指标很多但没有优先级
如果没有“哪个指标最重要”,最后就会在评审时陷入解释和扯皮。
坑 3:评测依赖手工执行
手工跑一次可以,长期依赖手工就很难稳定,也不利于持续迭代。
坑 4:只看平均结果,不看失败样本
很多系统平均分不差,但关键失败样本非常伤业务。 如果不做失败归类,修复效率会很低。
坑 5:只有技术结果,没有发布动作
如果评测结果和“发不发版”无关,团队很快就会把它当成装饰性流程。
坑 6:前端没有参与评测结果设计
前端如果不知道结果字段和失败分类,后续很难把评测结果做成用户可理解、团队可复用的界面和报告。
8.5 验证方式
评测体系建设做完后,不能只看“脚本能不能运行”,更要看它能不能真正支持决策、定位问题和沉淀证据。
一、样本覆盖度
- 是否覆盖正常、边界、拒答场景。
- 是否存在关键高频问题样本。
- 是否保留失败案例。
二、结果稳定性
- 同一版本多次运行结果是否波动可控。
- 关键指标是否能稳定复现。
- 样本结构和结果结构是否始终一致。
三、门禁有效性
- 指标不达标时,流程是否明确阻断或预警。
- 发布前是否能看到客观评测结果。
- 团队是否基于同一套结果做决策。
四、前端可展示性
从前端视角再检查:
- 指标是否适合做成清晰卡片或表格。
- 失败样本是否能被展开查看。
- 用户或团队是否能理解“为什么这版不通过”。
五、证据材料
- 评测结果样本:
docs/examples/assets/samples/example-02-eval-result.json - 截图清单:
docs/examples/assets/screenshots/README.md - 图解配图:
docs/examples/assets/diagrams/chapter-08-eval-loop.svg - 章节片段索引
- 示例骨架
8.6 面试表达
我把评测做成发布门禁,而不是上线后的补救动作。 通过标准样本、统一结果结构和自动回归,我确保每次迭代都能客观证明质量变化,并能快速定位回退来源。
实战案例:版本发布前自动回归评测
- 背景:模型策略更新后,线上体验出现不可预期波动。
- 动作:构建离线评测集、统一结果结构,并接入发布前自动回归流程。
- 结果:每次发布都有量化报告,质量回退可提前拦截,版本讨论也从“凭感觉”转成“看指标和失败样本”。
推荐答题框架
如果面试官问“为什么评测重要”,可以按下面顺序回答:
- 先讲 AI Agent 输出具有概率性,不能只靠主观感受判断版本优劣。
- 再讲样本集、指标、结果结构和回归机制。
- 再讲它如何影响发布决策。
- 最后讲前端如何展示结果和失败样本,帮助团队协作。
8.7 练习任务
- 选一条你正在做的链路,定义至少 15 条最小评测样本,覆盖正常、边界和拒答场景。
- 设计一份统一的评测结果 JSON,至少包含运行 ID、关键指标和简要结论。
- 设定一组发布门禁阈值,并说明任一指标不达标时应该怎么处理。
- 参考 示例2 RAG接口与评测,把一个问答或执行型场景做成最小回归评测闭环。
- 设计一个前端结果页,说明关键指标、失败样本和结论分别展示在哪里。
8.8 验收清单
- 任务完成率 >= 85%
- 关键指标达标率 >= 90%
- 异常场景通过率 >= 90%
- 至少完成 1 组最小评测样本和 1 份统一结果结构。
- 至少保留 1 份评测结果样本、1 组截图占位清单和 1 份章节代码片段索引。
- 至少能用 2 分钟讲清楚“为什么评测不是附加项,而是发布门禁能力”。