跳转到正文

Anthropic《Demystifying evals for AI agents》系统解读:三类评估器与 PPT Master 的评估缺口

原文:Demystifying evals for AI agents
实践项目:PPT Master
前置阅读:《Building effective agents》 · 《Agent Skills》 · 《Effective context engineering》 · 《Effective harnesses》 · 《Writing effective tools》

这是本系列的第六篇,也是基础系列的收束篇。

前五篇提出或校准了多项工程判断——串行页面生成、隔离 topic research、条件式 split、页面清单纪律和检查器输出契约。现行实现能验证单次运行的许多事实,但若要比较两种策略,仍需要把任务、试验和判据明确下来,否则无法证明改动后是变好还是变坏。

原文对这种状态有一句直接的判断:

The value compounds, but only if you treat evals as a core component, not an afterthought.


一、为什么 Agent 评估不同于模型评估

原文给出的理由是 Agent 的运行形态:

Agents operate over many turns: calling tools, modifying state, and adapting based on intermediate results.

让 Agent 有用的那些特性——自主、灵活、能适应中间结果——同时也让它难以评估。单轮评估无法捕捉多步骤交互中的 错误传播状态累积

以 Default Generate 的长篇演示文稿为例,一次生成涉及多次工具调用、文件写入和质量门。问"这次生成得好不好",实际上是在问一整条链路;Quick 和原生 PPTX 路线则有不同的链路与成功条件。


二、基本概念

原文先统一了术语,这套词汇后面会反复用到:

术语定义
Task(任务)一个包含明确输入和成功标准的测试
Trial(试验)对某个任务的一次执行尝试
Grader(评估器)对表现的某个方面进行评分的逻辑
Transcript(完整记录)包含全部输出、工具调用、推理过程的历史
Outcome(结果)试验结束时环境的最终状态
Harness(评估框架)端到端运行评估的基础设施

任务与试验的区分是理解非确定性的前提:同一个任务跑十次可能有十种结果,"通过率"是任务级的属性,而不是某次运行的属性。


三、三类评估器

这是原文最实用的一张对照。

代码/规则型

方法:字符串匹配、二值测试、静态分析、结果验证。

优势劣势
Fast, Cheap, Objective, Reproducible, Easy to debug对有效的变体过于敏感,缺乏细微差别

"对有效变体过于敏感"是它的典型失败:一个同样正确但表达不同的答案会被判错。

模型型(LLM-as-judge)

方法:基于规则的评分、自然语言断言、配对比较。

优势劣势
Flexible, Scalable, Captures nuance, Handles open-ended tasks非确定性,需要与人工评估者校准

原文强调校准不是可选项:

LLM-as-judge graders should be closely calibrated with human experts.

人工型

方法:专家审核、众包判断、抽样检查。金标准质量,但成本高、速度慢、难以规模化。

结论

原文的建议是 组合使用,而不是选一种。三类评估器覆盖的是不同性质的判断:机器能判定的事实交给代码,需要品味的判断交给模型并与人校准,最终标准由人定义。


四、处理非确定性

同一任务多次运行会得到不同成功率。原文给出两个指标:

指标含义
pass@kk 次尝试中 至少一次 成功的概率
pass^kk 次试验 全部 成功的概率

原文的说明很尖锐:

At k=1, they're identical... By k=10, they tell opposite stories.

k=1 时两者相同;k=10 时它们讲的是完全相反的故事。一个 pass@10 很高但 pass^10 很低的 Agent,意味着"多试几次总能成"——对于研究型任务这可以接受,对于需要一次做对的生产任务则是灾难。

选哪个指标,取决于产品能否容忍重试。


五、如何从零开始

起步规模

20-50 simple tasks drawn from real failures.

20 到 50 个来自真实失败的简单任务。原文明确说早期效果明显,小样本就够——不要等到评估集完美再开始

任务来源的优先级

  1. 从已有的手动检查开始;
  2. 把 bug 追踪器和用户支持里的真实失败转化成任务;
  3. 按用户影响排序。

任务质量标准

两位领域专家能独立做出相同的通过/失败判断。

以及一条重要的排错提示:

A 0% pass rate across many trials... is most often a signal of a broken task, not an incapable agent.

多次试验全部为 0,通常说明任务写坏了,而不是 Agent 无能。

样本平衡

Test both the cases where a behavior should occur and where it shouldn't.

只测"应该发生"的情况会导致单向优化——Agent 学会了总是触发某行为,包括不该触发的时候。


六、两种评估模式与常见陷阱

能力评估 vs 回归评估

模式回答的问题期望通过率
能力评估这个 Agent 能做好什么?从低通过率开始
回归评估它是否还能处理原来能处理的?应保持接近 100%

两者的健康状态完全不同。回归评估一旦掉下 100%,就是明确的退化信号。

陷阱一:过度检查路径

There is a common instinct to check that agents followed very specific steps... We've found this approach too rigid.

检查 Agent 是否走了特定步骤过于刚性。同样的结果可以由不同路径达成,锁死路径等于禁止改进。

陷阱二:评估饱和

当 Agent 通过所有任务时,评估不再提供改进信号,需要持续创造更难的任务。

陷阱三:评估本身有 bug

原文给了一个惊人的例子:Opus 4.5 在 CORE-Bench 上最初得分 42%,发现评估问题后跳升到 95%。

由此引出全文反复强调的一条:

Read the transcripts.

读完整记录 是验证评估是否在公正测量的唯一方式。原文在结论的七条原则里把这条重复了两遍。

其他最佳实践

  • 参考解:每个任务应有已知可行的输出,证明任务可解;
  • 部分学分:多组件任务不应只有全对全错。"识别出问题但没能完成退款"的支持 Agent,明显好于两件都没做到的;
  • 防作弊:Agent 不应能轻易绕过评估;
  • 环境隔离:每次试验都从干净环境开始。

从概念转入实践

以下检查 PPT Master 的评估现状。结论是:它具备可复用为代码、模型和人工 grader 的候选表面,但这些表面当前主要服务生产流程;仓库没有正式、可复用的多路线 task/trial 套件——这个边界决定了它当前能发现什么、发现不了什么。


七、PPT Master 已有的三类候选 grader 表面

原文的三类评估器在 PPT Master 里都能找到可复用表面,但“生产门或交互界面存在”不等于“已经成为 eval grader”。只有把它放进固定 task/trial、定义 outcome 和评分合同后,它才承担评估职责。

类型当前生产表面当前职责与 eval 边界
代码/规则型project_manager.py validate;按 profile 使用的 svg_quality_checker.pysvg_to_pptx.py postflight 及底层 OPC 校验分别检查 Default 规划制品语法、当前 SVG 合同、PPTX 包与报告关联;普通 flat Generate 尚无 §IX 与实际 SVG ordered roster 的通用交叉 grader
模型型当前依赖 Design Spec/Spec Lock 的可选 visual-review + 固定 rubric是会备份并直接修改 SVG 的生产审查;eval 只能只读复用 rubric,或在不可变副本上运行,不能直接拿该 stage 给原 outcome 打分
人工型产出后的人工预览、批注或独立审核是验收与编辑表面;只有放入固定 trial 协议并记录判据时才构成人工 grader

Default 的两阶段 Confirm UI 属于运行前的 interactive trial configuration / human-in-the-loop gate:它设置沟通目标和生产条件,会改变 trial 输入,不评价 trial performance,因此不列为 grader 候选。

当前分工方向与原文建议一致:机器能判定的结构、Schema、包完整性与报告关联由代码判定,需要品味的判断可由模型对照 rubric 辅助,最终取舍由人决定。需要保留的边界是:生产职责相邻,不代表已经完成 eval harness、重复 trial 和 grader 校准。

这印证了第一篇解读里的那条原则——凡是机器能直接验证的事实,就不要让 LLM 用自然语言宣布成功。

可选模型型候选 grader 的设计细节

visual-review.md 有几处处理得比较讲究:

  • 明确不重复静态检查:rubric 开头列出"已由静态检查器强制的主题,此处不要重复检查";若静态检查未运行或未通过,子代理必须以 prereq_failed 中止;
  • 保守阈值Subagents must apply the 明显 ("clearly bad") threshold — when in doubt, leave it. Better to under-fix than to oscillate.
  • 权限分层:品牌级问题(spec_lock.md 定义的 token)不由单页子代理修改,因为"违规会在每个使用该 token 的页面上重复出现",应交给 orchestrator 聚合处理;
  • 结构化输出:每个子代理写出 <project>/.review/<page>.json

"当有疑问时不动手"这条,正是对 LLM-as-judge 非确定性的一种务实约束:宁可漏改,不要反复摆动。


八、边界在哪里:尚无正式任务集与试验套件

有候选 grader,不等于有评估。

原文的六个概念里,PPT Master 有候选 grader、单次 outcome checks,也有服务生产的 workflow harness;但它没有统一执行 tasks、记录 trials、调用 graders 并汇总指标的 eval harness。仓库当前也没有正式、可重复运行的跨版本 task/trial 套件。这是能力边界,不自动意味着项目现在必须建设测试系统。

具体后果有三个:

1. 无法回答"改动是否有效"

例如,topic-research 已经改为隔离优先,但没有对 worker 与 fallback 路径做成同任务的重复试验;“串行核心页面是否优于并行页面”也仍是设计判断。若要比较这些方案,单次成功回执不够,需要固定输入与评价口径。

2. 没有回归保护

原文区分能力评估与回归评估,后者应保持接近 100%。以 2026-08-12 的 4e6ecbcb 快照计,Skill 内全部 Markdown 为 29702 行且持续演进;仓库没有用于比较 Agent 跨版本行为的正式任务套件。

prompt_audit.py 守护语料的静态属性(token 预算、引用完整性、注册表一致性),现有路线检查器守护单次产物;两者都不声称回答“改了这句话之后 Agent 行为是否退化”。

3. 无法度量非确定性

同一份材料生成两次,结果可能不同。当前没有数据回答:成功率是多少?失败集中在哪一步?是 pass@1 就稳定,还是要试三次才对?

第一篇解读里那个"顺序生成 vs 并行生成"的对照实验之所以一直没做,根本障碍就在这里——没有 trial 的概念,就没有可比的基线。


九、如果需要比较策略:一份最小研究框架

原文建议从 20–50 个真实失败任务起步。PPT Master 的当前清单有 21 个 Generate 展示项目,包含 Design Spec、SVG 和最终 PPTX 等结果制品,但它们不是四路线任务集,多数也没有标准化的 sources/ 输入目录。

因此它们只能提供题材与输出参考,不能直接当作可重放任务。下面是一份 仅在维护者确实要比较某项策略时 可采用的研究框架,不是 PPT Master 的现行路线图。

任务集构成

分层数量来源目的
回归任务3–5为 Generate 单独整理可重放输入;展示样例只作输出参考在明确改动前后比较已知正常路径
能力任务按真实故障添加从可复现失败转化,而不是预设未来问题检验某项具体修复是否有效
负样本按边界添加不该触发某行为的真实案例防止只优化正向触发

如果研究目标扩展到 Create Template、Fill Native 或 Enhance Native,需要为每条路线另建输入与 outcome 契约;现有 Generate 展示项目不能替代这些 fixture。

评估器分配

按原文"组合使用"的建议,三类各司其职:

判断内容评估器判据
Default Generate 的 §IX 与实际 SVG ordered roster 一一对应代码需要新增一个同时读取两侧的最小 grader;现有通用 flat 检查器不证明该关系
当前 profile 的 SVG 结构合规、导出成功代码复用该 profile 的现有检查器
路线 outcome 完整代码按路线检查制品;不能统一要求 spec/lock
视觉质量(确有需要时)模型只读复用 visual-review.md rubric,或在不可变副本上运行;不得让生产 stage 修改被评分 outcome
叙事是否成立、内容是否忠于源材料人工抽样定期校准模型评估器

其中"内容忠于源材料"必须有人工参与——这正是原文说的 LLM-as-judge 需要与专家校准的部分。

指标选择

按第四节的判据,PPT Master 属于 需要一次做对 的生产工具:用户不会为了一份 PPT 重跑五次。因此:

  • 回归任务用 pass^k(k=3),要求三次全过;
  • 能力任务用 pass@k,先看能力边界在哪。

部分学分

演示文稿生成天然是多组件任务,全对全错会浪费信号。建议的分档:

text
路线必需制品完整                               → 基础分
计划与实际页面一致(适用路线)                 → 完整性分
当前 profile 的检查器 error 为 0               → 合规分
视觉 rubric 无 needs_human(只读评分时)       → 质量分

一次"生成了 20 页但有 2 页 error"的运行,明显好于"生成到第 8 页就中断",评估应当能区分这两者。

环境隔离

原文要求每次试验从干净环境开始。对应到 PPT Master,若开展研究,应为每次 trial 使用彼此隔离、可安全清理的临时工作区,不复用已有制品,也不污染用户正在维护的项目。具体位置应服从运行环境与清理边界,而不是把试验目录硬编码成产品约定。

从哪里开始

如果维护者需要为某个具体改动建立比较基线,可以从很小的范围开始:

  1. 参考 3 个 Generate example 的题材与输出,分别整理可重放输入,各跑 3 次;
  2. 只用代码型评估器(新增的 §IX/roster 交叉 grader、现有 error 数和制品完整性检查);
  3. 记录通过率和失败步骤分布。

这一步能回答这 3 个特定任务在当前环境中的重复通过情况,以及失败集中在哪一步;它不能外推为四条路线或全部题材的总体成功率。


十、把现行判断接到可选评估上

如果未来需要研究前面四篇涉及的判断,可以按“什么证据足以支持决策”重新组织:

来源建议验证方式
第一篇顺序生成 vs 并行生成同一 example 两种策略各跑 k 次,视觉连续性由人工盲评,结构合规由代码判定
第二篇topic research 的隔离与 fallback检查原始抓取是否隔离、两份导入制品是否被主代理完整读取,并比较最终 outcome
第二篇split 的条件判断结合页数、源材料与保留上下文,观察连续执行何时出现可复现退化
第三篇页面 roster 的硬规则及通用自动交叉校验缺口是否造成真实问题只在发现未被拦截的真实漂移后,建立对应负样本与最小 grader
第三篇有界备份是否满足恢复需求从真实破坏场景验证默认导出备份和视觉审查备份能否恢复
第四篇完整 failure issue 集的成本在确有超大报告时比较完整读取与定向读取,不能复用已有 --format

这里的原则不是把每个假设都变成项目任务,而是让 真实触发的改动 带着与风险相称的证据:机器可判定的事实先复用现有检查器,需要品味的比较再引入人工或模型 rubric。


十一、我的理解:评估是让判断可以累积

核心观点

没有评估的系统,每一次改进都是从零开始的赌注;有评估的系统,每一次改进都在前一次的基础上。

评估的产出不是"分数",而是 让"我觉得这样更好"变成"这样确实更好"的转换机制

回看这六篇解读,有一条线索贯穿始终:

  • 第一篇提出"环境反馈是 ground truth",但那讨论的是 单次任务内 的验证;
  • 第三篇的上下文策略、第四篇的 harness 设计、第五篇的工具接口,每一层都留下了"这样做更好,但没法证明"的判断;
  • 这一篇要补的,是 跨任务、跨版本 的验证。

两者的区别是:前者回答单次产物是否满足当前契约,后者比较系统在特定任务上的跨版本行为。PPT Master 当前以前者为主;是否补充后者,应由真实回归风险或明确研究问题触发。

如果 PPT Master 未来决定为某项行为变化建立评估,原文最值得保留的是第一条和最后一条:

早期开始(不要等待完美)……阅读完整记录。

基线可以很小,但必须使用可重放输入并明确适用范围;“读完整记录”则意味着不能只看通过率——失败发生在哪一步、工具与制品如何变化,这些信息才是下一轮决策的真正来源。没有具体改动或故障触发时,现有按需审计和路线质量门仍是更符合项目范围的做法。


十二、系列小结

本系列六篇解读的关系可以这样收束:

篇目回答的问题层次
Building effective agents如何组织 LLM 与工具架构
Agent Skills知识如何分层存放静态组织
Effective context engineering运行时上下文如何管理动态管理
Effective harnesses如何跨会话保持连续时间维度
Writing effective toolsAgent 与环境的接口如何设计接口
本篇如何证明改动确实有效验证

前五个问题决定系统能做到什么,最后一个问题决定它能否持续变好。


← 返回 Anthropic 学习地图