Anthropic 的指导:「从简单的 prompt 开始,用全面的评估来优化它们,只在需要时加入多步 Agent 系统。」评估不是最后一步。它是驱动第 14 章所有其他选择的外层循环。
学习目标
- 说出三层评估——静态基准、自定义离线、线上生产——以及各自的用途。
- 解释评估器-优化器的紧密循环。
- 描述 2026 年的最佳实践:评测与代码同处,在 CI 中运行,为 PR 设卡。
- 把第 14 章的每一课与它生成的评测用例联系起来。
问题
Agent 能通过演示。它们在生产中以演示无法预测的方式失败。基准回答的是「这个模型是否广泛有能力?」,而不是「这个 Agent 是否在为我的产品交付正确的补丁?」答案是:在三层进行评估,持续运行,并把每条防护栏和学到的规则都映射到一个评测用例。
概念
三层评估
- 静态基准——代码用 SWE-bench Verified(第 19 课)、浏览 / 桌面用 WebArena/OSWorld(第 20 课)、通用型用 GAIA(第 19 课)、工具使用用 BFCL V4(第 06 课)。用于跨模型比较和回归门禁。数据污染是真实存在的:SWE-bench+ 发现 32.67% 的解法泄漏。始终报告 Verified / 经 + 审计的分数。
- 自定义离线评测——贴合你的产品形态:
- LLM-as-judge(Langfuse、Phoenix、Opik——第 24 课)。
- 基于执行(运行补丁,检查测试)。
- 基于轨迹(将动作序列与金标准比较;OSWorld-Human 显示顶级 Agent 是金标准的 1.4-2.7 倍)。
- 线上评估——生产环境:
- 会话回放(Langfuse)。
- 防护栏触发的告警(第 16、21 课)。
- 每步成本 / 延迟跟踪(第 23 课 OTel span)。
评估器-优化器(Anthropic)
紧密循环:
- 提议者生成输出。
- 评估器评判。
- 精炼,直到评估器通过。
这是 Self-Refine(第 05 课)的泛化。你关心的任何 Agent 流程都可以包在评估器-优化器里以获得可靠性。
2026 年的最佳实践
- 评测与代码同处。
- 在每个 PR 的 CI 中运行。
- 以评测分数为合并设卡(例如「相对 main 不回退超过 5%」)。
- 每条防护栏都映射到一个评测用例。
- 每条学到的规则(Reflexion、pro-workflow learn-rule)都映射到一个失败用例。
串起第 14 章
第 14 章的每一课都会生成评测用例:
| 课程 | 它生成的评测用例 |
|---|---|
| 01 Agent 循环 | 预算耗尽、无限循环防护 |
| 02 ReWOO | 工具失败时规划器正确重规划 |
| 03 Reflexion | 学到的反思在重试时生效 |
| 05 Self-Refine/CRITIC | 评审通过精炼后的输出 |
| 06 工具使用 | 参数强制转换生效;未知工具被拒绝 |
| 07-10 记忆 | 检索引用与来源匹配;过时事实失效 |
| 12 工作流模式 | 每种模式产出正确输出 |
| 13 LangGraph | 恢复后精确复现状态 |
| 14 AutoGen Actor | DLQ 捕获崩溃的处理器 |
| 16 OpenAI Agents SDK | 防护栏在正确的输入上触发 |
| 17 Claude Agent SDK | 子 Agent 结果返回编排器 |
| 19-20 基准 | SWE-bench Verified 分数、WebArena 成功率、OSWorld 效率 |
| 21 计算机使用 | 每步安全捕获注入的 DOM |
| 23 OTel | span 发出必需属性 |
| 26 失败模式 | 检测器标记已知失败 |
| 27 提示注入 | PVE 拒绝被投毒的检索 |
| 28 编排 | 监督者路由到正确的专家 |
| 29 运行时形态 | DLQ 处理 N% 失败 |
如果你的评测套件为每一项都有用例,你就覆盖了第 14 章。
评测驱动开发容易出错的地方
- 没有基线。 没有 last-known-good 的评测无法解读。存储基线。
- 没有依据的 LLM 评审。 评审也会幻觉。采用 CRITIC 模式(第 05 课)——让评审以外部工具为依据。
- 对评测过拟合。 为评测优化会偏离生产实用性。轮换用例。
- 不稳定的评测(Flaky evals)。 非确定性用例导致误报。固定随机种子,快照状态。
构建它
code/main.py 是一个 stdlib 评测 harness:
- 带类别(基准、自定义、线上)的用例注册表。
- 一个被测的脚本化 Agent。
- 评估器-优化器循环:提议、评判、精炼,直到通过或达到最大轮数。
- CI 门禁:汇总通过率 + 相对基线的回归。
运行它:
python3 code/main.py输出:每个用例的通过 / 失败、回归标记、CI 门禁裁决。
使用它
- 把评测用例写在 Agent 代码所在的同一个仓库。
- 通过 CI 在每个 PR 上运行。
- 出现回归就让构建失败。
- 随时间跟踪通过率。
- 把每次生产失败都绑定到一个新用例。
交付它
outputs/skill-eval-suite.md 为 Agent 产品构建带 CI 门禁和回归跟踪的三层评测套件。
练习
- 取你的一次生产失败。编写一个复现它的评测用例。你的 Agent 现在能通过吗?
- 为你的领域构建一个 LLM 评审评分标准,包含三个维度(事实、语气、范围)。给 50 个会话打分。
- 把评测套件接入 CI。回退 >=5% 时让构建失败。
- 添加轨迹效率指标:Agent 走了多少步,与金标准轨迹相比?
- 把第 14 章的每一课映射到你套件中的一个评测用例。有缺失的吗?那就是要补的缺口。
关键术语
| 术语 | 常见说法 | 实际含义 |
|---|---|---|
| 静态基准(Static benchmark) | 「现成评测」 | SWE-bench、GAIA、AgentBench、WebArena、OSWorld |
| 自定义离线评测(Custom offline eval) | 「领域评测」 | 针对产品形态的 LLM-as-judge / 执行 / 轨迹 |
| 线上评估(Online eval) | 「生产评估」 | 会话回放、防护栏告警、成本 / 延迟跟踪 |
| 评估器-优化器(Evaluator-optimizer) | 「提议-评判-精炼」 | 迭代直到评审通过 |
| CI 门禁(CI gate) | 「合并阻断器」 | 评测回退时让构建失败 |
| 基线(Baseline) | 「Last-known-good」 | 用于检测回退的参考分数 |
| 轨迹效率(Trajectory efficiency) | 「相对金标准的步数」 | Agent 步数除以人类专家最少步数 |
进一步阅读
- Anthropic, Building Effective Agents —— 「从简单开始,用评测优化」
- OpenAI, SWE-bench Verified —— 经过整理的基准
- Berkeley Function Calling Leaderboard —— 工具使用基准
- Langfuse docs —— 实践中的评测 + 会话回放