导读

特辑导读:Evals 体系全景

📌 本章导航(6 节)

一句话导读:这一章是全特辑的导航系统——用一张 ASCII 全景图、一张"问题→章节"对照表、一份 20 词全局术语表、一个 11 labs 清单、三条学习路线和一条 2024–2026 时间线,帮你在 30 分钟内建立 Evals 知识体系的全局坐标。无论你接下来是面试冲刺、从零搭建评测体系,还是跟踪前沿论文,都从本章出发。


一、知识图谱

本特辑(E00–E15,共 16 章)回答一个总问题:如何把 GenAI/Agent 系统"不稳定的智能行为",持续收敛成"可发布的工程质量"。15 个正篇章节按八个递进阶段组织:为什么评 → 评什么 → 拿什么评 → 谁来评 → 评什么形态 → 怎么让分数可信 → 怎么用评测驱动开发 → 外部坐标。

1.1 特辑全景图

                      【Evals 体系全景 · E01 → E15】

 为什么评 ───── E01 为什么评估是 GenAI 工程的生命线
     │           (三大难题:非确定性/黑盒化/错误级联;Airbnb 三大坑;四重身份)
     ▼
 评什么 ─────── E02 评估指标体系
     │           (P0/P1/P2 分层 × 五大维度 × pass@k/pass^k × 统计口径)
     ▼
 拿什么评 ───── E03 黄金数据集与用例设计
     │           (四类来源;触发→核心逻辑→产物质量→异常容错;治理与毕业机制)
     ▼
 谁来评 ─────── E04 程序化评分 → E05 LLM-as-Judge → E06 人工评估与评分路由
     │           (确定性优先;judge 校准 ≥85%;人工六大高杠杆场景)
     ▼
 评什么形态 ─── E07 轨迹与 Agent 级评估 → E08 对话 Agent 与仿真评测
     │           (step/trajectory/session 三层;用户模拟器 + fixtures)
     ▼
 怎么让分数可信 ─ E09 评估的统计学基础
     │           (置信区间;样本量;显著性;Bradley-Terry 与风格控制)
     ▼
 怎么用 ─────── E10 评测驱动开发(EDD)→ E11 Badcase 根因分析 → E12 在线评估与数据飞轮
     │           (发现→捕获→反复检查;badcase→行动项;生产流量→质量资产)
     ▼
 外部坐标 ───── E13 Benchmark 全景与前沿争议 → E14 前沿论文全景 → E15 工业实践案例研究
                 (污染/饱和/Goodhart;2024–2026 九方向;Airbnb/DoorDash/阿里/腾讯)

一条主线贯穿全图:评分三层(程序化 → LLM Judge → 人工)是全特辑的脊柱,E04–E06 逐层深挖,其余章节要么定义三层的输入(E02 指标、E03 数据),要么定义三层的对象(E07 轨迹、E08 对话),要么给三层的输出加约束(E09 统计),要么消费三层的产出(E10–E12 闭环)。

1.2 问题 → 章节对照表

你带着的问题 去哪一章 该章给你的关键弹药
传统软件测试为什么在 GenAI 上失效?不做评测会掉进哪些坑? 第 E01 章 三大根本难题、Airbnb 三大坑(虚假信心/未发现回归/指标脱节)、四个失效场景、评估经济学
指标怎么选、怎么分层?pass@k 和 pass^k 差在哪? 第 E02 章 P0 门禁/P1 比较/P2 观察、五大维度、一致性双指标、Goodhart 反模式
评测集从哪来?golden set 建多大?badcase 凭什么入库? 第 E03 章 四类来源、四场景用例组织、50–200 条起步、毕业机制、幸存者偏差
哪些检查必须写成代码?评分输出为什么不能只有 pass/fail? 第 E04 章 确定性优先、分层筛查流水线、扣分制、基线快照、LCS 轨迹对齐
LLM judge 有哪些偏差?怎么校准到可进门禁? 第 E05 章 四大偏差机理-量化-缓解、五步校准(Airbnb 78%→88%)、持续运营三统计、GEPA
专家时间该花在哪?哪些样本必须送人工? 第 E06 章 人工六大高杠杆场景、评分路由、标注工程与 IAA、人机分工决策表
结果碰巧对但路径错了怎么办? 第 E07 章 假阳性案例、三层/四层过程评估、Transcript Builder 证据切片、评测镜像运行时架构
没有真实用户时怎么评多轮对话? 第 E08 章 Conversation Simulator、fixtures 冻结环境、checklist rubric、400 对话 6h+→20min
85% vs 82% 的差异是真实的吗?需要多少样本? 第 E09 章 Wilson/bootstrap、样本量公式、配对显著性、最小可感知变化、Bradley-Terry
评测怎么嵌进开发流程与 CI? 第 E10 章 EDD 五原则、100 样本精读法、一次一变量、capability/regression 双套件
失败怎么修、谁来修、修完怎么证明? 第 E11 章 RCA 五步、根因标签绑定 owner、结构化行动项、问题簇聚类
上线之后质量怎么守?数据飞轮怎么转? 第 E12 章 每日 5% 抽样、离线-线上同一把尺子、三类信号联动回滚、反馈生产线
τ-bench/SWE-bench 这些公开分数该怎么看待? 第 E13 章 benchmark 分类学、污染检测、饱和与 Goodhart、三层互补选型
2024–2026 这个领域发生了什么? 第 E14 章 九个方向综述、代表论文、趋势判断
Airbnb/DoorDash/阿里/腾讯具体是怎么做的? 第 E15 章 四家一手案例全数字、共识 vs 独创横向对比、30/90 天落地路线图

1.3 特辑的三大件

组件 数量 说明
章节 16 章(E00–E15) 知识体系主体,全部遵循 6 模块结构(知识图谱/核心概念/考点/面试题/易错点/资源)
labs 11 个 纯 Python 标准库、零依赖、固定种子、带 assert 自检的可运行实验,见 2.3 节
调研报告 10 份(_research/00–10) 四家工业实践一手精读 + 九个学术方向 2024–2026 论文调研,arxiv ID 逐条核实,是全特辑数字与引用的唯一事实源

二、核心概念精讲

2.1 与主手册第 8 章的关系:浓缩版 vs 深挖版

主手册(AI Agent 面试学习手册)第 8 章《Agent 评估与可观测性》是本特辑的"浓缩索引",本特辑是它的"全景深挖"。两者的分工:

维度 主手册第 8 章 本特辑(E00–E15)
定位 面试速览:一章知识图谱扫完 体系深挖:16 章逐层展开
工业案例 点到结论 四家公司一手博客逐段精读,全部原始数字(第 E15 章)
前沿论文 少量点名 10 份调研报告、上百条带 arxiv ID 的条目(第 E13/E14 章)
动手实验 最小 harness 入门(主仓库 labs/ 的 lab05) 11 个体系化深挖 labs,每个都有"有牙齿"的 assert
统计深度 提到 Wilson/bootstrap 公式 + 速查表 + 面试计算题专区(第 E09 章)
适用场景 面试前 30 分钟唤起记忆 系统学习 / 搭建评测体系的案头参考

用法建议:先读主手册第 8 章建立粗略印象,再用本特辑按 2.4 节的路线深挖;面试前一天反过来——用主手册快速过一遍,用本章的高频考点表(第三节)查漏。

2.2 全局术语表(20 词)

这 20 个词是全特辑的通用语言,面试中它们出现频率最高:

# 术语 英文原文 一句话定义 详解
1 评估 Evals 对 GenAI 系统质量的系统性测量;不是上线前抽查,而是贯穿开发、发布、运行的持续门禁 E01
2 黄金数据集 Golden Set 经人工确认、长期复用的核心评测集;50–200 条起步,必须含坏样本 E03
3 评分标准 Rubric 写给 judge 的判定标准:描述"成功长什么样"而非指定唯一答案;二元检查或分级打分 E05
4 LLM 评审 LLM-as-a-Judge 强模型按 rubric 给另一模型的输出打分;便宜可扩展,但自带偏差、必须校准 E05
5 Judge 校准 Judge Calibration 用人工标注的 gold 集测 judge 一致率;四家共识线 ≈85%(Airbnb high 80s~90s) E05/E06
6 程序化评分器 Programmatic Scorer 代码写死的规则检查(schema/关键词/工具断言);毫秒级、100% 稳定、进硬门禁 E04
7 pass@k pass@k k 次运行至少 1 次成功的比例,度量能力上限 E02/E09
8 pass^k pass^k k 次运行每次都要成功的比例,度量生产稳定性;若单次成功率 p 独立同分布则 ≈ p^k E02/E09
9 指标分层 P0/P1/P2 P0 上线门禁(不达标不发)/ P1 版本比较与工程优化 / P2 体验观察(阿里) E02
10 执行轨迹 Trace / Span Agent 的结构化执行记录:每次工具调用、模型输出是一个 span,树状组织成 trace E07
11 证据切片 Transcript Builder DoorDash 的 trace 塑形组件:每条标准声明依赖的证据,judge 只拿到那一片 E07
12 固定装置 Fixtures 用录制的工具返回替代实时调用,冻结外部状态;环境不受控时分数测量的是噪声 E08
13 用户模拟器 User Simulator LLM 扮演用户驱动多轮对话,解决"无法拿真用户安全彩排"的问题 E08
14 适用性前置 Eligibility judge 先判"该标准是否适用于本会话",不适用则跳过,防止误扣分(DoorDash) E05
15 置信区间 Confidence Interval 给分数挂误差条:二项比例用 Wilson 区间或 bootstrap;门禁看区间而非点估计 E09
16 竞技场评分 Bradley-Terry 从成对比较估计模型强度的排名模型;配 bootstrap CI,CI 重叠视为不可区分 E09/E13
17 污染 Contamination benchmark 题目进入训练数据,分数测的是记忆而非能力;检测靠成员推断/改写变体等 E13
18 古德哈特定律 Goodhart's Law 指标一旦成为优化目标就不再是好指标:benchmark 被刷、proxy 与 gold 背离 E02/E13
19 评测驱动开发 EDD GenAI 版 TDD:发现错误 → 捕获为测试 → 反复检查(Airbnb);配套五原则与迭代纪律 E10
20 根因分析 RCA badcase 归因流水线:证据汇总→范围收敛→分模块诊断→责任判定→结构化落盘(阿里五步) E11

2.3 11 个 labs 一览

全部 labs 位于 evals-special/labs/,纯 Python 标准库实现、固定种子、确定性可复现,运行命令统一为 cd evals-special/labs && python3 <文件名>。每个 lab 末尾的 assert 直接断言本章核心结论(不是"程序跑完了",而是"缓解后偏差显著缩小"这类有牙齿的命题)。

Lab 文件 对应章节 你将搞懂
01 eval_lab01_metric_system.py E02 pass@k/pass^k 的无偏估计;p=0.8 的 agent 从 pass^1 到 pass^8 单调下滑;容忍阈值分级
02 eval_lab02_golden_dataset.py E03 四类来源构造、"先定结构字段再生成自然语言"、入库标准检查、能力集→回归集毕业流转
03 eval_lab03_programmatic_scorers.py E04 规则评分器家族与评分输出规范;粗筛→精判分层路由能省多少成本
04 eval_lab04_judge_bias.py E05 位置/冗长/自我偏好三种偏差的注入与量化;swap-and-average、多 judge 投票的缓解效果
05 eval_lab05_judge_calibration.py E05/E06 复现 Airbnb 案例:字面重叠 rubric 误罚正确改述(一致率 <82%)→ 修订后 ≥85%;kappa 监控
06 eval_lab06_trajectory_eval.py E07 step/trajectory/session 三层评分;"结果对但路径错"的假阳性如何被 outcome-only 漏掉、被轨迹分抓住
07 eval_lab07_simulator_fixtures.py E08 状态机驱动的模拟用户 + fixtures;对照组证明:漂移环境下评分方差显著变大
08 eval_lab08_statistics_ci.py E09 Wilson vs Wald、bootstrap CI 覆盖率验证、样本量计算器、3% 差异在 N=100 不可判而 N=2000 可判
09 eval_lab09_rca_pipeline.py E11 RCA 五步全流水线(含"已发货退款未查订单状态"案例);问题簇聚类输出
10 eval_lab10_edd_loop.py E10 EDD 全闭环:门禁、一次一变量、"修 B 改坏旧场景"的回归陷阱被拒、回归集只增不减
11 eval_lab11_arena_bradley_terry.py E09/E13 Bradley-Terry 极大似然、Elo 对照、bootstrap 强度差 CI;长度混杂让朴素 BT 把"长"误判为"强"

2.4 三条学习路线

路线 ①:面试冲刺(约 2 小时) —— 目标:能答出全局框架题 + 高频深挖题。

时间 内容 目的
0:00–0:15 本章全景图 + 第 E01 章(三大难题、三大坑) 建立骨架,答好"为什么"类开场题
0:15–0:35 第 E02 章(P0/P1/P2、pass@k/pass^k)+ eval_lab01 指标口径张口就来
0:35–1:05 第 E05 章(judge 解剖、四大偏差、78%→88% 校准) 全特辑最高频深挖题
1:05–1:25 第 E07 章(假阳性、三层评估)+ 第 E09 章关键公式(Wilson、样本量) 过程评估 + 统计,高级岗分水岭
1:25–1:45 第 E10 章(EDD 五原则、100 样本法)+ 第 E11 章(RCA 五步) 方法论与闭环
1:45–2:00 第 E15 章(四家数字与横向对比)+ 回看本章考点表与易错点 背住面试弹药

路线 ②:从零搭建评测体系(工程师,约 4 周,配 labs) —— 目标:真的建起来。

周次 章节 动手 labs 阶段产出
W1 E01 → E02 → E03 lab01、lab02 指标清单(P0/P1/P2 分层)+ 50–200 条 golden set(含坏样本)
W2 E04 → E05 → E06 lab03、lab04、lab05 三层评分流水线;judge 校准到 ≥85% 一致率并留档分歧分析
W3 E07 → E08 → E09 lab06、lab07、lab08 过程级评分(防假阳性)+ 模拟器/fixtures + 门禁统计口径
W4 E10 → E11 → E12 → E15 lab10、lab09、lab11 CI 门禁 + RCA 流水线 + 飞轮雏形;对照 E15 的 30/90 天路线图验收

路线 ③:研究跟进(论文读者) —— 目标:掌握 2024–2026 学术地图。先读第 E13/E14 章建立分类学,再按方向进入 _research/ 调研报告(每份都给出核心论文的 arxiv ID、机构、关键数字与工程意义):

方向 调研报告 入口论文(arxiv)
LLM-as-a-Judge _research/01-llm-judge.md JudgeBench 2410.12784;Judging the Judges 2604.23178;GEPA 2507.19457
Agent 基准 _research/02-agent-benchmarks.md τ-bench 2406.12045;SWE-bench 2310.06770;Terminal-Bench 2601.11868
轨迹评估 _research/03-trajectory-eval.md Let's Verify Step by Step 2305.20050;Agent-as-a-Judge 2410.10934;AgentRewardBench 2504.08942
统计方法 _research/04-statistics.md Chatbot Arena 2403.04132;Arena 统计框架 2412.18407;报告规范 2511.21140
Benchmark 动态 _research/05-benchmark-dynamics.md LiveBench 2406.19314;MMLU-Redux 2406.04127;GSM-Symbolic 2410.05229
EDD 与仿真 _research/06-edd-simulation.md EDDOps 2411.13768;Nubank 2606.08867;τ²-bench 2506.07982
安全评测 _research/07-safety-eval.md AgentDojo 2406.13352;Agent-SafetyBench 2412.14470;InjecAgent 2403.02691
组件级(RAG) _research/08-component-rag.md RAGAS 2309.15217;RAGChecker 2408.08067;FActScore 2305.14251
自改进与 reward hacking _research/09-self-improvement.md Self-Rewarding 2401.10020;DeepSeek-R1 2501.12948;Sycophancy to Subterfuge 2406.10162
基础设施与可观测性 _research/10-infra-observability.md TRAIL 2505.08638;AgentTrace 2602.10133;EleutherAI 可复现性 2405.14782

2.5 Evals 领域时间线(2024–2026,15 个节点)

以下节点全部提炼自 _research/ 十份调研报告,arxiv ID 与年份以调研报告核实结果为准;工业实践节点以博客发布时间为准。

时间 节点 类型 arxiv / 来源 意义
2024-03 Chatbot Arena 论文 Arena/统计 2403.04132 Bradley-Terry 评分 + bootstrap CI,众包偏好评测的方法论定型
2024-03 LiveCodeBench 动态基准 2403.07974 按时间截止线持续采新题,让"污染距离"可量化
2024-05 Prometheus 2 Judge 模型 2405.01535 开源评测专用模型:judge 从提示词工程走向模型工程
2024-06 τ-bench Agent 基准 2406.12045 工具-Agent-用户三方交互 + 用户模拟器 + 终态数据库验证 + pass^k;GPT-4o 在 retail 域 pass^1≈60% 但 pass^8 跌到 ≈25%(官方榜单与论文摘要口径)
2024-06 MMLU-Redux 基准信任危机 2406.04127 重标注 2,908 道题发现约 10% 有误或歧义;同期 LiveBench(2406.19314)开始按月换题
2024-08 GenRM 生成式验证器 2408.15240 把奖励建模变成 next-token prediction,"可训练 judge"序幕
2024-10 JudgeBench Judge 元评估 2410.12784 用客观真值校准 judge:前沿 judge 在困难任务准确率仅 ~57% 量级——judge 间高一致 ≠ judge 正确;同月 Agent-as-a-Judge(2410.10934)
2024-11 EDD/EDDOps 过程模型 方法论 2411.13768 EDD 从口号变成有过程模型与参考架构的工程学科(2025-11 v3 加入 Operations)
2025-01 Humanity's Last Exam 难度军备 2501.14249 三千道专家级难题,发布时最强前沿模型准确率不足 10%;同月 DeepSeek-R1(2501.12948)让"评测集即 RL 奖励"成为焦点
2025-06 τ²-bench 双控仿真 2506.07982 用户侧也是带工具的 Agent,双方信息不对称,解决模拟器"配合性泄题"
2025-07 GEPA Judge 优化 2507.19457 反射式 prompt 进化:比 GRPO 平均 +6%(最高 +20%)、rollouts 最多省 35 倍;DoorDash 与 Nubank 用它校准 judge
2025-10/11 Don't Pass@k + judge 报告规范 统计规范 2510.04265、2511.21140 系统批判 pass@k 小样本方差并给贝叶斯替代;提出偏差校正估计量 + CI 的汇报规范
2026-01 Terminal-Bench 论文 基准工业化 2601.11868 终端 Agent 评测标准化(ICLR 2026),Terminus 参考 agent 把 harness 与模型能力解耦;同月 Anthropic《Demystifying evals for AI agents》把 EDD 写入官方开发指南
2026-06 Nubank 亿级用户 EDD 离线-线上证据 2606.08867 首个大规模量化证据:离线仿真指标与线上 A/B 强相关(卡片配送场景 NPS +37pp);"评测流水线质量 = 迭代速度上限"
2026(2026-08 精读) 四大厂工业实践 工业实践 Airbnb/DoorDash(2026-06-30)/阿里/腾讯工程博客 EDD 五原则与 judge 校准 78%→88%、Transcript Builder 与 fixtures、RCA 五步与质量资产库、扣分制与容忍阈值——本特辑全部工业数字的原始出处(详见 _research/00-industry-practice.md)

读时间线的三个视角:① judge 线——从偏差 catalog(2024 上)→ 元评估(2024 下)→ 可训练 judge(2024–2025)→ judge 优化与攻防(2025–2026),详见第 E05/E14 章;② 基准线——从环境奠基 → 难度军备 → 信任危机(污染/饱和/harness 混淆),详见第 E13 章;③ 方法论线——EDD 从博客口号到学术过程模型再到亿级用户生产验证,详见第 E10 章。

2.6 本特辑的引用约定(读其他章节前先知道)

  1. 内容基准日 2026-08。前沿论文标注 arxiv ID 与年份,全部来自 _research/ 调研报告;工业数字全部来自 _research/00-industry-practice.md(四篇官方工程博客的一手精读笔记)。
  2. 核实状态:调研报告对每条 arxiv ID 做了核实,无法核实的条目标注【未核实】。正文引用这类条目时保留该标注(例如 VisualWebArena 2401.13649【未核实】、SWE-bench Pro 2509.16941【未核实】),引用前建议二次确认。
  3. 交叉引用格式:(详见第 E5 章 · LLM-as-Judge 深入) 指本特辑章节;(主手册第 8 章 · Agent 评估与可观测性) 指主手册;labs/eval_labNN_xxx.py 指实验。

三、面试高频考点

# 考点 分级 一句话考察意图
1 三大根本难题:非确定性 / 黑盒化 / 错误级联 ⭐ 一切"为什么"类问题的起点,后续每个设计都在回应它们
2 三层评分架构与路由(确定性 > Rubric > 人工) ⭐ 是否理解评分体系是"按成本/稳定性/覆盖分层"的流水线而非三选一
3 pass@k vs pass^k:能力上限 vs 生产稳定性 ⭐⭐ 最基础的指标陷阱;无人值守系统必须汇报 pass^k
4 Golden Set 设计:四类来源、必须含坏样本、幸存者偏差 ⭐⭐ 是否真的建过评测集,而非只用线上随机抽样
5 Judge 四大偏差与 ~85% 校准线 ⭐⭐ 全特辑最高频深挖题:未校准 judge 制造误导性信心
6 假阳性(结果对、路径错)与三层过程评估 ⭐⭐ 是否理解 Agent 评估与 chatbot 评估的本质差异
7 统计门禁:置信区间 + 显著性 + 最小可感知变化 ⭐⭐⭐ "分数可信吗"是高级岗分水岭,能现场算 CI 加分巨大
8 EDD:100 样本精读法 + 一次一变量 ⭐⭐ 方法论题:没有评测基建时怎么冷启动、怎么归因
9 RCA 五步与根因标签绑定 owner ⭐⭐⭐ 系统设计深水区:评测平台的价值在行动项不在报表
10 离线-线上一把尺子与三类信号回滚 ⭐⭐⭐ 发布体系设计:离线升线上降 → 回滚或降级
11 Benchmark 污染、饱和与 Goodhart ⭐⭐ 是否对公开分数有批判性:分数测的可能是记忆或 harness
12 仿真评测架构:模拟器 + fixtures + 证据切片 ⭐⭐⭐ DoorDash 式系统设计题:环境不受控时分数测量的是噪声

四、经典面试题与参考答案

题 1(基础):用三分钟向一位新同事介绍 evals 知识体系,你会怎么组织?

参考答案: 用八个递进问题串起来:① 为什么评——GenAI 有非确定性、黑盒化、错误级联三大难题,传统测试失效,评估是质量度量、发布门禁、迭代指南针、数据飞轮入口四重身份(E01);② 评什么——指标分 P0 门禁/P1 比较/P2 观察三层,横切功能、过程、效率、鲁棒、体验五维度(E02);③ 拿什么评——golden set 四类来源、四场景组织、含坏样本、治理毕业(E03);④ 谁来评——程序化 → LLM judge → 人工三层,确定性优先,judge 校准到 ≥85%,人工做六个高杠杆场景(E04–E06);⑤ 评什么形态——轨迹三层评估防"结果对路径错"的假阳性,对话用模拟器 + fixtures(E07–E08);⑥ 怎么让分数可信——置信区间、样本量、显著性(E09);⑦ 怎么用——EDD 把评测嵌进开发,RCA 把失败变行动项,在线评估把生产流量变资产(E10–E12);⑧ 外部坐标——benchmark、前沿论文与工业实践(E13–E15)。最后补一句总纲:评测的终点不是报告,是可执行的行动项。

题 2(基础):传统软件测试为什么在 GenAI 系统上不够用?请给出具体失效场景。

参考答案: 根因是三大难题:非确定性(同输入不一定同输出,断言语义失效)、黑盒化(内部决策不透明,无法按代码路径覆盖)、错误级联(多步链路前步小错被后续放大)。阿里补充了更隐蔽的一条:有些样本最终答案看似对,但执行路径已偏离或带风险——这类假阳性在测试报告里不可见。四个典型失效场景:① 同一 prompt 跑通一次 ≠ 稳定可用(一次成功没有统计意义);② 每次改 prompt/模型/工具参数都可能悄悄改坏旧场景,无回归集则无人知晓(Airbnb"未被发现的回归");③ 多步链路前一个小偏差被放大成错误结论;④ 结果碰巧对但路径错(如跳过了关键校验工具),纯结果测试系统性放过。对策不是放弃测试,而是换范式:EDD——发现 → 捕获 → 反复检查失败模式,加上统计化的多次试验与分层评分。

题 3(进阶):pass@k 和 pass^k 的区别是什么?一个无人值守的客服 Agent,你向老板汇报哪个数?

参考答案: pass@k = k 次运行至少 1 次成功的任务比例,度量能力上限;pass^k = k 次运行每次都要成功的任务比例,度量生产可靠性。若单次成功率 p 且各次独立,pass^k ≈ p^k:p=0.9、k=8 时只剩 0.43。τ-bench(arxiv 2406.12045)的数字最直观:GPT-4o 在 retail 域 pass^1 ≈60%(官方榜单 60.4%),但 pass^8 跌到 ≈25%(摘要口径 <25%)——"单次看起来不错"与"可部署"之间有巨大鸿沟。无人值守客服必须汇报 pass^k(工程惯例 k=4–8,同时报 pass@1 展示差距):用户不会接受"多试几次总有一次成功",阿里把这两个指标称为一致性双指标——至少一次成功率是能力上限,连续成功率才是生产级场景(客服/支付/退款/合规)的发布依据;腾讯进一步给出容忍阈值分级:关键决策类 0% 容忍(N 次全过),辅助分析类 ≤10%,创意生成类 ≤40%。

题 4(进阶):为什么说 LLM-as-a-Judge 是"不得不用、又不可全信"的测量仪器?给出你的治理方案。

参考答案: 不得不用:语气、有据性、策略合理性这些语义维度规则判不了,人工又不可扩展——DoorDash 把"规模化判断"列为五大挑战之一,答案是校准过的 judge 顶替人类评审。不可全信:judge 自带位置、冗长、自我偏好、风格压倒实质四大偏差;JudgeBench(arxiv 2410.12784)用客观真值测出前沿 judge 在困难任务准确率仅 ~57% 量级;且 judge 间高一致 ≠ 正确,可能"集体犯错"。治理方案四步:① rubric 工程——每个质量维度一个 judge(Airbnb 少而精,3–5 个)、judge 与生成模型不同源、二元检查 + eligibility 适用性前置、按标准切片证据(Transcript Builder,judge 只看该标准依赖的证据);② 校准闭环——50–100 条 gold 集(必须含坏样本)→ 跑 judge → 目标一致率 high 80s~90s(四家共识 ≈85%)→ 分歧分析改 rubric → 重复;Airbnb 实战 78%→88% 的根因是 rubric 误罚正确改述,不是模型弱;③ 持续运营——judge 升级必重校准,跟踪三项统计:与人工一致性、高风险漏判率、边界稳定性(阿里);④ 防操纵——judge 消费外部内容时防检索投毒与注入,安全 judge 可被对抗样本打穿(Know Thy Judge,arxiv 2503.04474)。

题 5(进阶):你的离线评测分数涨了,但线上投诉没降。可能出了什么问题?怎么系统性排查?

参考答案: 按五个嫌疑排查:① 评测集分布 ≠ 线上分布——线上随机抽样有幸存者偏差(正常流程占多数、易错边缘占比低),反过来离线集也可能漏掉真实高频场景;用生产抽样回流核对分布(Airbnb 每日抽 5% 去标识化流量);② 离线-线上两把尺子——各自维护 judge 时两边分数会以难调和的方式背离(DoorDash 教训三);必须是同一 rubric + 同一校准 judge 两边跑;③ Goodhart——指标被优化目标刷爆:回归集被"背答案"、judge 被风格讨好、长度偏差被利用;检查 proxy 指标与 gold 信号(在线体验/业务结果)是否背离;④ 维度缺失——离线只测了功能正确性,没测体验与对齐(P2 决定产品生死)与效率成本;⑤ 漂移——线上输入分布变了而评测集没跟上。组织层面的兜底是阿里的三类信号联动:离线质量信号、线上体验信号(转人工率、重复追问率、投诉率、满意度)、业务结果信号——离线提升但线上关键信号恶化,触发回滚或降级。Nubank(arxiv 2606.08867)的正面证据:当评测流水线质量足够高时,离线仿真指标与线上 A/B 强相关。

题 6(进阶):你怎么看待 τ-bench、SWE-bench 这类公开 benchmark 的分数?如果只能选一个指标向老板汇报"我们的 Agent 变强了",你选哪个?

参考答案: 公开 benchmark 是外部坐标:可横向对比、有社区共识,价值真实但有三大折扣:① 污染——题目进训练语料,分数测记忆而非能力(Min-K% Prob 成员推断、改写变体检测是主流手段);② 饱和与质量——MMLU-Redux(arxiv 2406.04127)发现约 10% 题目有误,SWE-bench 头部分数逼近 70%+ 后社区转向更难的基准,GSM-Symbolic(arxiv 2410.05229)证明只改名字/数字就能让分数暴跌至多 65%;③ harness 混淆与低相关性——同一模型换执行框架分数差异巨大,Princeton HAL 等工作发现不同基准间分数相关性很低、与真实用户满意度弱相关。所以成熟团队的选型是三层互补:公开 benchmark(外部坐标)+ 私有 golden set(真实业务分布,含坏样本,持续治理)+ 在线信号(地面真值:任务完成率、转人工率、满意度)。只能选一个汇报,选私有 golden set 上的核心指标(带置信区间与 pass^k):它离业务最近、不受污染、且能解释"为什么涨"。汇报时主动说明口径与误差条,比报一个虚高的公开分数更能建立信任。

题 7(系统设计):你加入一个还没有评测体系的 Agent 团队,如何从零搭建?给出落地计划并映射到本特辑章节。

参考答案: 30 天(最小可用):W1 Trace 前置——结构化 trace 是被测 Agent 的标准能力而非事后补救:JSONL、每步工具名/入参/返回/时间戳、跨版本格式稳定(第 E07 章);W1–W2 跑约 100 个样本人工精读输出与 trace,归类错误——"When in doubt, look at your data"(第 E10 章);W2–W3 建 50–200 条 golden set,四类来源(专家设计/结构字段先行的 LLM 扩展/线上真实数据/badcase 回流),必须含坏样本(第 E03 章);W3–W4 程序化评分第一批:schema/空输出/关键词/工具调用断言/执行指标,确定性优先(第 E04 章),并建基线快照接 CI。90 天(体系闭环):3–5 个按维度拆分的 judge 校准到 ≥85% 一致率(第 E05 章);fixtures + 会话模拟器冻结环境,全量回归从 6h+ 压到 20min 量级(第 E08 章);P0 门禁带统计口径——置信区间 + 显著性 + 最小可感知变化,一致性看连续成功率(第 E02/E09 章);能力集/回归集分治与毕业机制(第 E03/E10 章);RCA 五步 + 根因标签绑定 owner + 结构化行动项(第 E11 章);每日抽样去标识化流量、离线-线上同一把尺子、离线升线上降即回滚(第 E12 章)。组织上:指定人类终判者、每周 PM 评审新增测试(Airbnb 原则)。验收标准用阿里口径:低分能否稳定转成行动项。

题 8(系统设计):如何设计一条数据飞轮,让评测体系随生产运行自动变强?

参考答案: 飞轮四段:生产流量进 → badcase 出 → 资产出 → 下一版本带着资产上线。① 入口:在线每日抽样去标识化流量(Airbnb 5%),分层优先高风险/低置信/新意图;badcase 双通路(离线评测集 + 线上会话/质检/工单/低满意度/告警)汇入同一任务表(第 E12/E11 章)。② 入库标准(不是所有失败都值得进库):失败可复现、期望行为明确、根因标签清楚、样本有代表性、已脱敏合规(阿里)。③ 三条生产线:badcase → 评测集(新用例,先入能力集,连续通过后毕业进回归集,只增不减);badcase → 训练数据(SFT/偏好对);badcase → 知识修订(检索库/政策口径)。样本治理:同簇留代表例、P0/P1 风险长期保留、稳定多版本通过者降级抽样集、主动学习抽低置信样本进人工确认。④ 产出与验证:沉淀质量资产库六件套——用例库、Trace 库、根因标签库、修复建议库、Judge 校准集、回归集;飞轮转速的验收看两个信号:离线评测与线上指标的相关性(Nubank 证据:离线仿真与线上 A/B 强相关,卡片配送 NPS +37pp),以及同类问题复发率下降。关键纪律:评测系统自己也产生 bug 报告——被标记失败中有真实一部分是 harness 自身故障(judge 误报、trace 缺口),必须并行修复(DoorDash)。


五、易错点 · 反直觉点

  1. 误区:"跑几条 case 感觉还行"就算评过了。 真相:同一 prompt 跑通一次 ≠ 稳定可用;阿里把这是列为评测体系的第一反面教材——非确定性下,单次成功没有统计意义,必须多 trial 并区分能力与稳定性。记忆锚点:一次跑通是轶事,不是证据。
  2. 误区:pass@1 高就可以上线。 真相:pass^k 才是生产口径——p=0.9 的系统 k=8 时只剩 0.43;τ-bench 中 GPT-4o retail pass^1≈60% 而 pass^8≈25%。用户不接受"多试几次总有一次成功"。记忆锚点:能力上限看至少一次,生产可靠看连续成功。
  3. 误区:线上随机抽样就能当评测集。 真相:线上样本有幸存者偏差——正常流程占多数、易错边缘占比低,随机采样报告"看起来不错"但关键问题漏掉(阿里)。记忆锚点:随机抽样的评测报告是虚假信心。
  4. 误区:judge 之间意见一致,说明 judge 靠谱。 真相:JudgeBench(arxiv 2410.12784)显示 judge 间一致性高但可能"集体犯错",前沿 judge 在客观困难任务准确率仅 ~57% 量级;一致率必须对照人工标注的 gold 集测量,且 gold 集必须含坏样本。记忆锚点:judge 的可信度靠人工锚点校准,不靠 judge 互相投票。
  5. 误区:只看最终答案对不对就够了。 真相:结果碰巧对、路径已经错的假阳性(如跳过关键校验工具、编造了中间数据)在 outcome-only 评测下全部漏过,在生产迟早暴露;必须加 step/trajectory/session 过程评估(第 E07 章)。记忆锚点:答案对 ≠ 过程对,过程错迟早爆雷。
  6. 误区:公开 benchmark 分数 = 模型/系统的绝对能力。 真相:分数可能被污染(记忆而非推理)、被 harness 工程抬高、被 Goodhart 刷爆;MMLU-Redux 还证明题目本身可能有约 10% 的错误。公开分数只是外部坐标之一。记忆锚点:benchmark 测的是"模型+题集+harness"三元组,不是能力本身。
  7. 误区:离线一套 judge、线上另一套 judge,各自调到最好。 真相:DoorDash 教训三——各自调 judge,两边分数会以难调和的方式背离;离线结论只有能带到线上才有意义。记忆锚点:同一 rubric、同一 judge,一把尺子量两边。
  8. 误区:评测的价值是把分数算准、把报告做漂亮。 真相:阿里第 10 章——评测体系的成败取决于能否在跨团队协作中长期、稳定地把低分转成可执行行动项(带失败范围/证据/owner/验收方式),否则再精细的分数也只是报表。记忆锚点:评测的终点是行动项,不是报告。

六、推荐资源

6.1 全特辑章节索引

章节 一句话定位
第 E01 章 · 为什么评估是 GenAI 工程的生命线 三大难题、三大坑、四重身份、评估经济学
第 E02 章 · 评估指标体系 P0/P1/P2 × 五维度 × pass@k/pass^k × 反模式
第 E03 章 · 黄金数据集与用例设计 四类来源、四场景组织、治理与毕业机制
第 E04 章 · 评分三层之一:程序化评分 确定性优先、分层筛查、扣分制、LCS 对齐
第 E05 章 · 评分三层之二:LLM-as-Judge 深入 偏差全景、五步校准、持续运营、GEPA
第 E06 章 · 评分三层之三:人工评估与评分路由 六大高杠杆场景、标注工程、人工路由
第 E07 章 · 轨迹与 Agent 级评估 假阳性、三层模型、Transcript Builder
第 E08 章 · 对话 Agent 与仿真评测 模拟器、fixtures、checklist rubric、τ-bench
第 E09 章 · 评估的统计学基础 Wilson/bootstrap、样本量、BT、计算题专区
第 E10 章 · 评测驱动开发(EDD) 五原则、100 样本法、一次一变量、CI 门禁
第 E11 章 · Badcase 根因分析与优化闭环 RCA 五步、根因标签、结构化行动项
第 E12 章 · 在线评估与数据飞轮 5% 抽样、三类信号、反馈生产线、质量资产库
第 E13 章 · Benchmark 全景与前沿争议 分类学、污染检测、饱和、三层互补选型
第 E14 章 · 前沿论文全景(2024–2026) 九方向综述、代表论文、趋势判断
第 E15 章 · 工业实践案例研究 Airbnb/DoorDash/阿里/腾讯深挖与 30/90 天路线图

6.2 调研报告索引(全特辑的事实源)

报告 方向 服务的章节
_research/00-industry-practice.md 四大厂工业实践一手精读(全部原始数字) E01–E12、E15
_research/01-llm-judge.md LLM-as-a-Judge 前沿(15 篇核心 + 延伸) E05、E06、E14
_research/02-agent-benchmarks.md Agent 基准全景(τ-bench 到 Terminal-Bench) E08、E13、E14
_research/03-trajectory-eval.md 轨迹评估与信用分配(PRM/Agent-as-a-Judge) E07、E14
_research/04-statistics.md 统计方法(BT/CI/样本量/Arena 操纵) E09、E13
_research/05-benchmark-dynamics.md 污染/饱和/动态基准/Goodhart E13、E14
_research/06-edd-simulation.md EDD 过程模型与用户仿真 E08、E10、E14
_research/07-safety-eval.md 安全评测(越狱/注入/过度拒绝) E02、E14
_research/08-component-rag.md 组件级评估(RAG/事实性/归因) E04、E14
_research/09-self-improvement.md 自改进与 reward hacking E10、E14
_research/10-infra-observability.md 评测基础设施与可观测性 E07、E12、E14

6.3 关键论文索引(按方向,arxiv ID 均经调研报告核实)

Judge 与元评估:MT-Bench 与 judge 奠基(2306.05685,2023);Prometheus 2(2405.01535,2024);JudgeBench(2410.12784,2024,ICLR 2025);GenRM(2408.15240,2024);GEPA(2507.19457,2025);Know Thy Judge(2503.04474,2025);Judging the Judges(2604.23178,2026)。

Agent 基准:τ-bench(2406.12045,2024);τ²-bench(2506.07982,2025);GAIA(2311.12983,2023,ICLR 2024);SWE-bench(2310.06770,2023,ICLR 2024);OSWorld(2404.07972,2024);Terminal-Bench(2601.11868,2026,ICLR 2026);Humanity's Last Exam(2501.14249,2025);Agent-as-a-Judge(2410.10934,2024)。

轨迹与信用分配:Let's Verify Step by Step(2305.20050,2023);Math-Shepherd(2312.08935,2023);VinePPO(2410.01679,2024);PRIME(2412.01981,2024);AgentRewardBench(2504.08942,2025);TRAIL(2505.08638,2025)。

统计与报告规范:Chatbot Arena(2403.04132,2024,ICML 2024);Arena-Hard(2406.11939,2024);Length-Controlled AlpacaEval(2404.04475,2024);基准分数不确定性(2410.03492,2024);Arena 统计框架(2412.18407,2024);ReliableEval(2505.22169,2025);Don't Pass@k(2510.04265,2025);judge 报告规范(2511.21140,2025)。

基准动态与治理:LiveBench(2406.19314,2024);LiveCodeBench(2403.07974,2024);Min-K% Prob(2310.16789,2023,ICLR 2024);MMLU-Redux(2406.04127,2024);GSM-Symbolic(2410.05229,2024,ICLR 2025);reward 过优化标度律(2210.10760,2022,ICML 2023)。

EDD 与仿真:EDDOps 过程模型(2411.13768,2024 首发 / 2025 v3);Nubank 亿级用户 EDD(2606.08867,2026);DAUS 用户模拟器(2402.13374,2024);Agent 评测综述(2507.21504,2025)。

安全评测:HarmBench(2402.04249,2024,ICML 2024);InjecAgent(2403.02691,2024);AgentDojo(2406.13352,2024,NeurIPS 2024 D&B);Agent-SafetyBench(2412.14470,2024,ACL 2025)。

组件级与自改进:RAGAS(2309.15217,2023);RAGChecker(2408.08067,2024);FActScore(2305.14251,2023);Self-Rewarding LM(2401.10020,2024,ICML 2024);DeepSeek-R1(2501.12948,2025);Sycophancy to Subterfuge(2406.10162,2024)。

6.4 动手与交叉引用

  • labs:11 个实验清单与运行命令见 2.3 节;规格说明见 _design/LAB_SPECS.md。与主仓库的关系:主仓库 labs/ 的 lab05 是最小 harness 入门,本特辑 labs 是体系化深挖。
  • 主手册:主手册第 8 章 · Agent 评估与可观测性(本特辑的浓缩版索引,见 2.1 节对比)。
  • 写作规范:_design/STYLE.md(6 模块结构与引用约定)、_design/BLUEPRINT.md(各章 brief)。

下一章:第 E01 章 · 为什么评估是 GenAI 工程的生命线——从三大根本难题讲起,回答"为什么评测是生命线而不是检查点"。

第 1 章 / 共 15 章

为什么评估是 GenAI 工程的生命线

📌 本章导航(6 节)

一句话导读:传统软件"上线前跑一遍测试、之后靠断言保平安"的范式,在 GenAI 系统上全面失效。本章回答一个根本问题——为什么评估(evals)不是交付前的检查点,而是贯穿 GenAI 全生命周期的生命线。学完本章,你能讲清三大根本难题、Airbnb 三大陷阱、"跑几条 case 感觉还行"的四个具体失效场景、评估的四重身份,并会用评估经济学框架向老板论证评测投入——这些也正是面试开场最高频的"为什么"类问题。


一、知识图谱

为什么评估是 GenAI 工程的生命线
│
├─ 1. 三大根本难题(为什么"难评")
│   ├─ 非确定性:同输入 ≠ 同输出 → 单次运行只是一个样本,不是结论
│   ├─ 黑盒化:内部决策不透明 → 没有结构化 trace 就没有归因
│   └─ 错误级联放大:前步小偏差 → 后步错误结论(单步 95% × 20 步 ≈ 36%)
│
├─ 2. 三大陷阱(Airbnb:没有评估会发生什么)
│   ├─ 虚假信心:浅层 helpfulness 分数掩盖真实失败
│   ├─ 未被发现的回归:改 prompt 后质量悄悄变差,无人知晓
│   └─ 指标与产品目标脱节:力气花了,产品没变好
│
├─ 3. 与传统软件测试的本质差异
│   └─ 输入空间 / 判定方式 / 回归语义 / 通过标准 —— 四项全变
│
├─ 4. "跑几条 case 感觉还行"为什么不够(四个失效场景)
│   ├─ 一次跑通 ≠ 稳定可用
│   ├─ 新 prompt 改坏旧场景(静默回归)
│   ├─ 前步小偏差被级联放大
│   └─ 假阳性:结果对、路径错,迟早在线上引爆
│
├─ 5. 评估的四重身份
│   └─ 质量度量 → 发布门禁 → 迭代指南针 → 数据飞轮入口
│
├─ 6. 评估经济学
│   └─ eval 成本(建例 + 推理 + 判定 + 校准) vs 线上失败成本(修复 + 资损 + 流失 + 合规)
│
└─ 7. 业界的答案:EDD(评测驱动开发)
    └─ 从"上线前抽查"到"持续治理机制"(→ 第 E10 章展开)

30 秒抓住主线:三大难题决定了 GenAI 不能沿用传统测试 → 不做评估会掉进三大陷阱 → 评估因此必须承担四重身份 → 投入多少由评估经济学决定 → 方法论终点是 EDD。本章是全特辑的"总纲":后续 E02–E15 都是在回答本章提出的问题的某一环。


二、核心概念精讲

2.1 三大根本难题:GenAI 系统为什么"天生难测"

阿里与腾讯的评测方法论不约而同地把 GenAI 工程的门槛概括为三件事(阿里称之为"三大门槛"):非确定性、黑盒化、错误级联放大。这三点不是工程瑕疵,而是这类系统的内禀属性。

难题 本质 直接工程后果 传统测试为何失灵
非确定性 同一输入不一定有同一输出(采样、上下文组装、工具时变) 单次运行结果只是分布中的一个样本;"复现"要重新定义为统计意义上的 断言 assert output == expected 天然不成立
黑盒化 模型内部决策不透明:为什么选这个工具、为什么这样改写 query,看不见 失败无法定位到"哪一步、因为什么";只能靠结构化 trace 反推 传统软件可以断点调试、读源码,GenAI 只能读 trace
错误级联放大 多步链路中,前一步的小偏差会被后续步骤放大成错误结论 步级 95% 正确率 × 20 步 ≈ 36% 端到端成功率;错误在终点才暴露,根因却在起点 单元测试"每个模块都对"推不出"系统对"

Airbnb 对同一问题的表述是:GenAI 与传统软件的差异在于输出不可预测、"正确"依赖判断、用 AI 评 AI 又引入新风险;一次请求可能同时包含搜索 / 推理 / 外部动作 / 文本生成,每个环节都可能独立失败。腾讯则补充了黑盒化带来的一个微妙痛点:答案碰巧对但推理路径错时,你分不清"正确调用工具后回答"与"训练数据碰巧答对"——前者可信赖,后者是定时炸弹。

级联放大值得用一个具体的多步 agent 展开。设想一个退款客服 agent 处理"这个东西我要退,怎么寄回?":

步骤 正常行为 本次实际行为 偏差大小
1. 意图识别 识别为「退货退款」 误判为「取消订单」 只差一个意图标签
2. 订单查询 查到目标订单 查到目标订单 无
3. 政策校验 退货政策:需先校验物流签收状态 取消政策:无需校验,直接放行 关键校验被跳过
4. 执行动作 生成退货寄回单 直接取消订单、作废优惠券 不可逆副作用
5. 回复用户 给出寄回指引 "已为您取消订单" 用户目标彻底落空

第 1 步一个标签的偏差,到第 4 步已经变成不可逆的资损与投诉。这就是阿里强调"多步链路前一个小偏差会被放大成错误结论"的含义。量化版本是同一个乘法:若每步可靠性为 p,n 步任务的端到端成功率上界约为 pⁿ——p=0.95、n=20 时只剩约 36%。τ-bench(Sierra AI,arXiv 2406.12045,2024)提供了实证:GPT-4o 在 retail 域单次通过率 pass^1 ≈60%(官方榜单 60.4%;摘要口径为不足 50%),而要求 8 次独立试验全部通过的 pass^8 ≈25%(摘要 <25%);airline 域 pass^1 ≈42%、pass^8 跌至约 16%。"能做对一次"与"稳定做对"之间的鸿沟,比直觉大得多——这道鸿沟只能靠评估体系量化,靠 demo 永远看不见。

三大难题不是抽象抱怨,它们各自对评测体系提出了硬性设计要求:

难题 对评测体系的硬性要求 出处
非确定性 多 trial 重复 + 统计口径报数(pass^k、置信区间);评测执行环境隔离,避免多用例共享状态导致分数不可复现 阿里:评测执行环境隔离是平台基本要求;腾讯:N 次执行的容忍阈值分级
黑盒化 结构化 trace 是被测系统的标准能力而非事后补救:稳定记录工具名、入参、返回值、时间戳、耗时、错误,复杂 agent 还要记录计划、检索、护栏决策 阿里/腾讯共识(详见第 E7 章)
错误级联 评估不能只看终点输出:Airbnb 分 step / trajectory / session 三层,阿里分 Turn / Session / Trace / Outcome 四层 两家独立得出同构结论(详见第 E7 章)

非确定性的来源至少有三层,理解这一点才能理解"为什么固定种子也不够":① 模型层——采样本身的随机性(temperature / top-p);② 环境层——工具返回与外部数据随时间变化,同一条用例今天跑和下周跑看到的"世界"可能不同;③ 组装层——上下文组装、并发与重试逻辑带来的差异。这也是为什么阿里把"评测执行环境隔离、避免多用例共享状态"列为平台级要求,为什么 DoorDash 要用 fixtures 冻结外部状态(详见第 E8 章)——控制变异来源,是分数有意义的前提。

换句话说:三大难题各自消灭了传统测试的一根支柱——非确定性消灭了"断言",黑盒化消灭了"断点调试",级联放大消灭了"单元测试通过即系统通过"。评估体系就是把这三根支柱换成新支柱(统计判定、trace 归因、分层评估)的工程。

动手:用固定种子模拟 N 任务 × K 次重复运行,亲眼看 pass@k 与 pass^k 随 K 分道扬镳—— cd evals-special/labs && python3 eval_lab01_metric_system.py

2.2 三大陷阱:没有评估的产品会掉进哪里(Airbnb)

Airbnb 在点评摘要、客服、房东/房客消息、内部洞察等多个 GenAI 场景的实践中总结出:没有早期评测计划的产品,通常掉进三个坑。这是本章最该背下来的框架之一:

陷阱 表现 机理 典型症状
虚假信心(false confidence) 用一个浅层 helpfulness 分数自我安慰:"模型评分 4.5/5,挺好" 泛化的"有没有帮助"抓不住真实失败模式:幻觉、过度承诺、答非所问都被礼貌的通顺回答糊过去 分数很漂亮,投诉照样涨
未被发现的回归(undetected regression) 改了一版 prompt,新场景变好了,旧场景悄悄变差,无人知晓 没有回归集,就没有"改动前 vs 改动后"的可比较基线 质量曲线其实下行,团队感觉在进步
指标与产品目标脱节(wasted effort) 评测指标涨分,产品结果不动 指标测的不是真实产品失败,而是"模型说话的姿势" 赢了指标,输了体验(Goodhart 定律的标准现场)

Airbnb 十条要点中的第 ② 条就是针对第一坑的解药:避免泛化 helpfulness,瞄准真实产品失败。

腾讯的痛点表从另一个视角刻画了"没有评估"的日常,与 Airbnb 三坑一一对应且更细:

腾讯痛点 对应 Airbnb 陷阱
主观性强,靠"感觉变好了" 虚假信心
悄悄退化:改 prompt / 升级依赖后旧场景变差无人知晓 未被发现的回归
人工验证成本高:Skill 越多、模型越快,人肉回归指数增长,只能选择性验证留盲区 (回归问题的成本侧)
模型不敢升级:无对比数据支撑切换决策 指标缺位 → 决策瘫痪
缺少效率基线:变贵变慢无法归因到版本 同上
过程易忽略:答案碰巧对但推理路径错 (假阳性的温床,见 2.4)

每个陷阱都有对应的解药,这也是后续章节的索引方式:

陷阱 解药 详见
虚假信心 指标从观察到的真实失败推导(Airbnb EDD 原则之二);拒绝万能 helpfulness,按维度拆分评分 第 E2 / E5 章
未被发现的回归 回归集只增不减 + 变更触发 CI 回归 + 版本对比带统计口径 第 E10 / E9 章
指标与产品目标脱节 离线指标与线上信号(转人工率、投诉率、任务完成率)联动校准,离线涨线上降即回滚 第 E12 章

一句话总结:没有评估的 GenAI 团队不是在迭代,而是在抽签——每次改 prompt 都不知道这次是改进还是退化,只能靠线上用户的投诉来"开奖"。

2.3 评估 vs 传统软件测试:四项本质差异

面试高频问法:"评估和软件测试到底有什么不一样?"下面这张对照表是标准答案骨架:

维度 传统软件测试 GenAI 评估
输入空间 有限、可枚举:参数有类型、有边界,等价类划分后可穷尽 开放自然语言 + 多轮上下文 + 工具返回的组合爆炸;用户会说出你想不出的话
判定方式 确定性断言:期望输出唯一,assert actual == expected "正确"依赖判断:一个目标有多种可接受结果(DoorDash 称之为"开放式目标"),需要 rubric / 程序化检查 / judge / 人工的分层判定
回归语义 回归 = 功能明确坏掉:同输入必同输出,坏了就是断了 回归 = 统计分布上的悄悄漂移:输出仍"看起来像样",但错误率升了、路径变了、语气飘了;不跑回归集根本发现不了
通过标准 100% 通过是默认要求(确定性系统,失败即 bug) 分级设定:Anthropic 推荐口径(腾讯评测方案引用)——确定性任务用例集整体通过率 100%,非确定性任务 ≥95%;高风险场景进一步用 pass^k 做发布线
失败复现 改到哪个断点就能复现 需要固定 seed / temperature / 环境快照做"统计可复现",且要区分"能力不足"与"稳定性不足"
测试与生产的关系 测试通过 ≈ 可以上线 离线分数只是必要条件:还要影子 / 灰度 / 线上监控(offline-online gap 见 2.5)

注意最后一行:传统测试里"测试通过"几乎是上线的充分条件;GenAI 里评估通过只是拿到了一张入场券,线上还有第二场考试。这个认知差异是许多从传统 QA 转过来的团队最容易栽跟头的地方。

但也不是全盘推翻——从测试到评估,有些东西必须换,有些东西原样保留,分清楚这两堆才能说服传统 QA 背景的同事:

保留(测试工程的遗产) 替换(GenAI 的新规则)
质量左移:问题越早发现修复成本越低 断言 → 分层判定(程序化规则 / judge / 人工,详见第 E4–E6 章)
回归集 + 变更触发回归 "100% 通过" → 统计通过标准 + 置信区间 + 显著性(详见第 E9 章)
门禁与发布流程挂钩 测试报告 → 评测报告 + 失败归因(分数必须能稳定转成行动项,阿里)
测试资产版本化管理 期望输出唯一 → 一个目标多种可接受结果(rubric 描述"成功长什么样"而非指定唯一答案)
CI 自动化执行 测试一次即结束 → 持续评测:离线 + 线上双环境(EDDOps)

腾讯把这个转变浓缩成一句目标陈述:可重复、可量化、可持续演进的评估闭环——每次变更都能快速跑出可比较的分数,用数据代替直觉,用全量代替抽查。

2.4 "跑几条 case 感觉还行"为什么不够:四个具体失效场景

阿里评测方法论里有一节标题极其直白:为什么"跑几条 case 感觉还行"不够。它给出的四个场景,每一个都值得配一个例子:

场景 1:同一 prompt 跑通一次 ≠ 稳定可用。 非确定性系统里,一次成功只是从行为分布里抽到的一个样本。客服 agent 在你手测的那一次恰好走对了流程,不代表它 100 次里有 100 次走对——腾讯的稳定性判读经验:N=5 次执行中 1 次失败就"存在稳定性风险",而容忍阈值按场景分级:关键决策类(问题定位 / 故障诊断)容忍 0%,辅助分析类 ≤10%,创意生成类 ≤40%。用户不会接受"多试几次总有一次成功"(阿里一致性双指标的原话)——至少一次成功率(能力上限)与连续成功率(生产要求)必须分开报,生产级场景看后者。

场景 2:改 prompt / 换模型 / 调工具参数,可能改坏原有场景,且不易第一时间发现。 这是"未被发现的回归"的日常形态。DoorDash 的仿真评测博客里有个诚实的细节:其 11 轮迭代中第 3 轮曾出现回落——没有回归集的团队甚至不会知道哪一轮回落了。解法是把每次手工检查沉淀为可复跑的用例,变更触发回归(详见第 E10 章)。

场景 3:多步链路里,前一个小偏差会被放大成错误结论。 即 2.1 的退款案例。手测几条 case 时你只看到终点输出"像那么回事",看不到第 1 步的意图偏差正在被第 3 步的政策跳过放大。没有轨迹级评估(详见第 E7 章),级联放大永远发生在你的视线之外。

场景 4(最隐蔽):有些样本最终答案看似对,但执行路径已偏离或带风险——这类假阳性在生产迟早暴露。 Airbnb 明确指出:只看最终答案不够,推理路径、工具参数、工作流可能在结果看似正确时已经失败。腾讯痛点表里的对应表述:分不清"正确调用工具后回答"与"训练数据碰巧答对"。一个跳过身份校验却恰好没造成损失的退款操作、一个靠猜碰对了答案的查询,都是"这次结果对、下次事故见"的假阳性。阿里对假阳性的工程回应是:加过程型与风险型检查(详见第 E11 章 RCA 体系)。

四个场景各自对应一种评测机制,这张映射表可以作为"为什么需要完整评测体系"的速答版:

失效场景 对应的评测机制 本特辑出处
一次跑通 ≠ 稳定 多 trial 重复 + pass^k / 连续成功率 + 按场景分级的容忍阈值 第 E2 章、eval_lab01
新改动改坏旧场景 回归集(只增不减)+ PR 合入前自动回归 第 E10 章、eval_lab10
前步偏差被级联放大 结构化 trace + step / trajectory / session 分层评估 第 E7 章、eval_lab06
结果对但路径错的假阳性 过程型 / 风险型检查、must-call / must-not-call 断言 第 E7 / E11 章、eval_lab06

动手:构造"完全正确 / 结果对但路径错 / 路径对但结果错 / 全错"四类 agent 运行,验证只看结果的评分会放过假阳性—— cd evals-special/labs && python3 eval_lab06_trajectory_eval.py

结论:评测体系必须嵌入研发流程而不是挂在上线前当关卡。用阿里的原话收束本节:"评测平台不只是'出分工具',核心价值是把问题稳定转化为可执行修复、形成持续迭代闭环。"

2.5 评估的四重身份:度量、门禁、指南针、飞轮

把评估只理解成"测试",会低估它至少三倍的价值。成熟体系里,评估同时扮演四个角色:

身份 回答的问题 失效时的后果 工业实践证据
质量度量(尺子) 现在到底有多好? 靠感觉决策,团队对"好没好"永远达不成共识 DoorDash:eval harness 把质量信号从"平均每天 1 条员工反馈"升级为每天 2,000 个自动评分会话;全国上线前 agent 质量分 +8 分、错误率近乎减半
发布门禁(闸门) 这个变更能不能上线? 每次发布靠胆量;坏版本流入生产 DoorDash 仿真评测飞轮:任何变更必须通过全部 50+ 个 eval 才能上线;阿里把 P0 指标设为上线门禁(不达标不发);学术侧已有"评测结果即发布证据"的证据驱动发布管理研究(arXiv 2603.15676,2026)
迭代指南针(罗盘) 下一步该改什么?改了真的变好了吗? 优化靠轶事:最近一次、最惊人的失败主导修复方向 Airbnb 核心习惯 "When in doubt, look at your data":跑约 100 个样本,人工读输出和 trace,归类错误,围绕它们建测试——其旅行客服案例中,100 个 prompt 读出了 15 个 groundedness 失败、8 个正确但啰嗦、5 个不当拒答、3 个 JSON 失败,修复优先级由此而来;GEPA(arXiv 2507.19457)更是直接把 eval 分数当作 prompt 优化的目标函数
数据飞轮入口(齿轮) 线上失败如何变成资产? 失败修完即弃,同类问题反复发生 Discord AITL(EMNLP 2025 工业赛道):人工标注持续回流驱动再训练,把再训练周期从月级压缩到周级,美国试点 recall@75 +11.7%、precision@8 +14.8%、有用性 +8.4%、采用率 +4.5%

四重身份之间有递进关系,逐层展开:

  1. 度量是第一层:没有可信的分数,一切无从谈起。但注意度量的有效性前提是"尺子本身经过校准"——judge 与人工一致率达标(Airbnb 目标 high 80s~90s%,阿里参考值约 85% 后进自动化,腾讯口径 ≥85% 可用)才谈得上度量(详见第 E5 章)。
  2. 门禁把度量接入发布流程:离线门禁 + 线上灰度联动。阿里的口径是三类信号一起看——离线质量信号(核心场景通过率、P0 风险数、关键工具参数正确率)、线上体验信号(转人工率、重复追问率、投诉率、满意度)、业务结果信号(任务完成率、工单闭环率、退款成功率)——离线提升但线上关键信号恶化,触发回滚或降级。
  3. 指南针把度量接入开发循环:这是评估从"防守"转向"进攻"的一步。Airbnb 的迭代纪律(一次只改一个变量:固定模型变 prompt → 固定 prompt 变模型 → 都固定变 serving 配置)保证了分数变化可归因(详见第 E10 章)。
  4. 飞轮把度量接入数据资产:badcase → 评测用例 → 训练数据 → 模型更新 → 新的线上信号回流(详见第 E12 章)。走到这一步,评估才真正成为"生命线"——它不再消耗资源,而是持续生产资产。通用循环长这样(DoorDash、Discord AITL、EDDOps 控制环的共同骨架):
生产失败 / 真实 trace
      │ 编码为测试用例(带出处与切片标签,进回归集)
      ▼
自动流水线(生成场景 / 模拟对话 / 分层打分)
      │ 定位失败簇,选对改动
      ▼
修 prompt / 架构 → 重跑达标(门禁)→ 发布
      │ 线上信号(judge 分、转人工率、投诉)
      └──────────────回流──────────────┘

别把离线分数当终点。即便四重身份都立起来,仍要记住:客服对话基准研究(arXiv 2510.22143,2025)明确指出,由于真实部署环境的分布漂移与交互复杂性,强 offline 基准成绩只是部署可靠性的弱指标。当前共识是"离线是必要不充分"——离线门禁之后还有影子 / 灰度 / A/B 的最后一公里。

DoorDash 把这个问题表述为"双环境"挑战:开发与生产的质量可能背离。他们的解法是同一条 rubric + 同一个校准过的 judge 同时跑在真实会话与模拟会话上——离线结论才能带到线上,线上失败才能离线复现(详见第 E12 章)。DoorDash 报告其离线模拟提升与线上真实流量表现一致(其飞轮 5 分钟内可跑 200+ 场模拟对话、模拟环境幻觉率下降约 90%),但这是持续验证出来的结论,不是默认前提。

2.6 评估经济学:eval 成本 vs 线上失败成本的粗算框架

"评测很贵,值得吗?"——这是向管理层要资源时的必答题。回答它需要一个两边都摆上桌的粗算框架。

(1)eval 成本侧(可预算、可工程化压缩):

成本项 估算方式 工业参照
用例建设(一次性) 用例数 × 单例专家工时 阿里经验:先做 50–200 条高质量 golden set 覆盖核心路径与高风险边界;Anthropic 官方建议起步只需 20–50 个真实用例
每次运行的推理成本 用例数 × trials × 单条 token × 单价 DoorDash 全量 sweep = 50 场景 × 8 trials = 400 次对话
判定成本 规则检查近乎免费;judge 按 token 计费;人工最贵 分层筛查(规则粗筛 → judge 精判 → 人工兜底)就是为压这项成本设计的(详见第 E4/E6 章)
人工校准(一次性 + 持续) 校准集大小 × 标注工时 Airbnb:从 20–100 个专家标注样本起步;gold set 50–100 条必须含坏样本
基础设施 harness / trace 存储 / 平台人力 Anthropic 博客提及 Bolt 约 3 个月建成 eval 体系——这是"从零到能用"的量级参照

(2)线上失败成本侧(不可预算、随流量放大):

成本项 内容 为什么贵
直接修复 排查、回滚、hotfix 的工程工时 线上 debug 没有 trace 时是盲查;阿里 RCA 五步的存在就是为了把它变成结构化流程
资损与补偿 错误退款、过度承诺、越权操作造成的真金白银损失 不可逆:错退的款收不回来,承诺出去的补偿必须兑现
用户流失与口碑 投诉、差评、卸载 滞后且难归因,等看见时已经成规模
合规与安全风险 隐私泄露、违规内容、金融合规事故 单次事故可能超过整个评测体系多年的成本

(3)收益侧:评估省下的钱有据可查(均以公司原文数字为准):

  • DoorDash:全量回归从人工 6+ 小时压到约 20 分钟(50 场景 × 8 trials 的 sweep,人工本地聊约 1 分钟/次);支撑底座模型从 Claude Sonnet 4.6 迁移到 Gemini 3.5 Flash,延迟降 35%、质量无损——没有 harness,这种迁移"不敢做",延迟收益就拿不到。
  • 腾讯反向论证:没有评估时"模型不敢升级(无对比数据支撑切换决策)""缺少效率基线(变贵变慢无法归因版本)"——评估缺位本身就是持续的成本。

(4)粗算模板(面试可现场列):

eval 年化成本 ≈ 用例建设(一次性) + 运行频次 × 单次推理成本 + judge 成本 + 校准人力
线上失败年化成本 ≈ 日会话量 × 失败率 × 单次失败成本(修复工时 + 资损期望 + 流失期望)
决策规则:只要 eval 能把失败率压低 Δ,且 Δ × 线上失败年化成本 > eval 年化成本,就值得投

代入量级感受一下(以下业务数字为示意,仅演示框架用法,实际必须换成自家真实数据):

项目 示意取值 年化量级
日会话量 10,000 —
线上失败率(无评测基线) 1% → 100 次失败/天 —
单次失败综合成本(修复工时 + 资损期望 + 流失期望) 200 元 线上失败 ≈ 73 万元/年
评测介入后的失败率压低 Δ 0.5 个百分点(保守取值;DoorDash 实证错误率"近乎减半",此处再打对折) 挽回 ≈ 36 万元/年
评测流水线成本 每日全量 400 条对话(DoorDash sweep 规模)× 分层 judge + 每周人工校准 数万元/年量级

ROI ≥ 5 倍,且这还没算评测带来的"敢做"收益——DoorDash 若没有 harness,就拿不到模型迁移那 35% 的延迟下降。一个数量级的差距,就是"生命线"三个字的经济学含义。

(5)向业务方汇报时的口径转换:算完账还要会"翻译"。向非技术决策者汇报时,用产品语言而不是模型语言——说"三连全对率只有 42%"而不是"单次通过率 75%",说"每天 2,000 个会话被自动质检"而不是"我们建了个 eval harness"。评测的价值必须落在对方关心的坐标系里(发布风险、资损、人力节省),这也是第 E2 章"把指标写进发布门禁"的前置技能。

2.7 业界的答案:EDD(评测驱动开发)速览

三大难题 + 三大陷阱 + 四重身份,把行业推向了一个共同的方法论终点:Evaluation-Driven Development(EDD,评测驱动开发)——把评测从"上线前的一次性检查点"变成贯穿全生命周期的"持续治理机制":先定义期望行为(eval 即规约),在开发、发布、运行各阶段持续产生评测证据,用证据驱动最小化修复与受控迭代。

三股力量在 2024–2026 年把 EDD 从口号变成了工程学科:

力量 证据
学术成型 EDD/EDDOps 过程模型与三层参考架构(arXiv 2411.13768,2024-11 首发,2025-11 v3):Plan → Build → Run(offline+online) → Analyze & Improve 四阶段闭环
官方采纳 Anthropic《Demystifying evals for AI agents》(2026-01)主张先定义期望行为再开发、eval 进 CI/CD;OpenAI evaluation best practices 建议从一开始就反复评测、每次变更都跑 continuous evaluation
工业验证 Airbnb 的 EDD 五原则与迭代纪律、DoorDash 的评测 harness("迭代控制面")、腾讯的能力测评→回归测评毕业机制(详见第 E10、E15 章)

EDDOps 论文对 134 篇学术文献 + 27 份工业灰色文献的统计,揭示了供需错配:学术界 93.28% 的评测研究只做部署前(pre-deployment),仅 2.24% 覆盖部署后,4.48% 是持续评测;而工业灰色文献中 40.74% 已是持续评测、81.48% 已用评测驱动适配。换句话说:最前沿的工程实践已经跑到了学术研究前面——这也是本特辑以工业实践为骨架、以论文为佐证的原因。

EDD 成熟度的两条证据(Anthropic 官方博客,2026-01):SWE-bench Verified 成绩一年内从 40% 涨到 80%+,评测驱动的快速迭代是幕后推手;CORE-Bench 上 Opus 4.5 在修复任务与评分器之后从 42% 跳到 95%——后一个数字同时揭示了一个反直觉事实:评测系统自己也会出 bug。DoorDash 的四条 Lessons Learned 里有一条与之呼应:被标记的失败中有真实一部分其实是 harness 自身故障(judge 误报、trace 缺口),必须并行修复才可信。所以评测基础设施本身也要被评估、被版本管理(详见第 E10 章)。

EDD 的核心心智模型可以用一句话概括(Airbnb 定义,详见第 E10 章):不是预测所有失败,而是发现 → 捕获 → 反复检查失败模式。这与 TDD 的精神同构:你无法在写代码前穷举所有 bug,但你可以保证每个发现过的 bug 都有一条永不消失的测试。

本章与后续章节的路线图:本章论证了"为什么",其余 15 章逐一回答"怎么做"——

问题 章节 一句话预告
评什么? 第 E2 章 · 评估指标体系 pass@k / pass^k / 一致性双指标 / 门禁统计口径
拿什么评? 第 E3 章 · 黄金数据集与用例设计 50–200 条 golden set 起步,四类来源 + 毕业机制
谁来评? 第 E4 章 · 程序化评分 能用代码判断的绝不用模型
第 E5 章 · LLM-as-Judge 深入 rubric 工程、偏差全景、校准到 ≥85%
第 E6 章 · 人工评估与评分路由 专家时间 60%+ 花在校准与诊断
评什么形态? 第 E7 章 · 轨迹与 Agent 级评估 step / trajectory / session 三层抓假阳性
第 E8 章 · 对话 Agent 与仿真评测 LLM 模拟用户 + fixtures 冻结环境
怎么让分数可信? 第 E9 章 · 评估的统计学基础 置信区间、样本量、显著性
怎么用评测驱动开发? 第 E10 章 · 评测驱动开发(EDD) 发现 → 捕获 → 反复检查失败模式
第 E11 章 · Badcase 根因分析与优化闭环 RCA 五步 + 结构化行动项
第 E12 章 · 在线评估与数据飞轮 每日抽样 + 离线线上同一套打分
外部坐标在哪里? 第 E13 章 · Benchmark 全景与前沿争议 公开基准 + 私有集 + 线上信号三层互补
第 E14 章 · 前沿论文全景(2024–2026) 九个方向的教学化综述
第 E15 章 · 工业实践案例研究 Airbnb / DoorDash / 阿里 / 腾讯四案例 + 落地路线图

(主手册第 8 章 · Agent 评估与可观测性 提供了这套体系的浓缩版,本特辑是其深挖版。)

面试 30 秒版(当被问"为什么 GenAI 必须做评估"时,可以直接背这段开场):

传统软件有确定性断言,GenAI 有三大根本难题——非确定性、黑盒化、错误级联放大, 传统测试的三根支柱(断言、断点调试、单元测试推断)因此逐一失效。 不做评估,产品会掉进三大陷阱:虚假信心、未被发现的回归、指标与产品目标脱节(Airbnb 总结)。 所以评估必须承担四重身份:质量度量、发布门禁、迭代指南针、数据飞轮入口。 投入多少由评估经济学决定:eval 成本可预算,线上失败成本不可预算且随流量放大。 业界的答案是 EDD——发现失败、捕获失败、反复检查失败。

本章小结:三大难题(非确定性、黑盒化、级联放大)摧毁了传统测试的三根支柱;不做评估会掉进三大陷阱(虚假信心、未发现回归、指标脱节);因此评估必须承担四重身份(度量、门禁、指南针、飞轮);投多少由评估经济学决定,答案是"杠杆投入";方法论终点是 EDD。把这五句话讲顺,本章的面试题就都有了骨架。


三、面试高频考点

# 考点 分级 一句话考察意图
1 三大根本难题:非确定性 / 黑盒化 / 错误级联放大 ⭐⭐⭐ 看你有没有真正理解 GenAI 与传统软件的本质差异,而不是背名词
2 错误级联的复合数学:pⁿ 衰减、pass^k 随 k 快速下跌 ⭐⭐⭐ 能否现场手推"单步 95% × 20 步 ≈ 36%",是区分"知道"与"理解"的分水岭
3 Airbnb 三大陷阱(虚假信心 / 未发现回归 / 指标脱节) ⭐⭐⭐ 考"不做评估会怎样"的反向论证能力,常作为追问开场
4 评估 vs 传统软件测试的四项差异 ⭐⭐ 传统 QA 背景转 GenAI 的必考题,重点在"回归语义"与"通过标准"两行
5 "跑几条 case 感觉还行"的四个失效场景 ⭐⭐ 考能否把抽象风险落成具体场景,假阳性一例是加分关键
6 评估的四重身份(度量 / 门禁 / 指南针 / 飞轮) ⭐⭐⭐ 系统设计题的骨架:答"怎么建评测体系"前先立这四根柱子
7 pass@k vs pass^k:能力上限 vs 生产可靠性 ⭐⭐⭐ 全特辑最高频指标考点;无人值守场景必须答 pass^k(详见第 E2 章)
8 一致性双指标与稳定性容忍阈值分级 ⭐⭐ 阿里/腾讯口径:至少一次成功率 vs 连续成功率;关键决策类容忍 0%
9 假阳性:结果对但路径错 ⭐⭐ 考"只看最终答案不够"的轨迹意识,引出过程评估(详见第 E7 章)
10 评估经济学:eval 成本 vs 线上失败成本 ⭐⭐ 向管理层要资源的实战题,要能列出两边的成本项并给出决策规则
11 离线分数是必要不充分条件(offline-online gap) ⭐⭐ 考"离线门禁之后还有什么":影子 / 灰度 / A/B / 线上监控
12 EDD 的定义与心智模型 ⭐ 考方法论视野:发现→捕获→反复检查失败模式,eval 即规约
13 学术与工业的评测供需错配(EDDOps 统计) ⭐ 加分谈资:学术 93% 停留在部署前,工业 40%+ 已是持续评测

四、经典面试题与参考答案

题 1(基础):为什么说评估是 GenAI 工程的"生命线",而不是可选项?

参考答案: 因为 GenAI 有三个内禀属性让"先上线再修"变得不可承受:① 非确定性——同一输入不一定同一输出,单次运行只是分布中的一个样本,不评估就不知道分布长什么样;② 黑盒化——内部决策不透明,没有评估产生的 trace 与分数,失败连归因都无从谈起;③ 错误级联放大——多步链路里单步 95% 正确率 × 20 步只剩约 36% 端到端成功率,小偏差会被放大成错误结论。叠加后果是:不做评估会掉进虚假信心、未被发现的回归、指标与产品目标脱节三大陷阱(Airbnb 总结)。而评估在成熟体系里同时是质量度量、发布门禁、迭代指南针和数据飞轮入口——它不是交付前的关卡,而是贯穿全生命周期的基础设施,所以叫"生命线"。

题 2(基础):Airbnb 总结的"没有早期评测计划"的三大陷阱是什么?各举一个例子。

参考答案: ① 虚假信心:用浅层 helpfulness 分数自我安慰——模型回答礼貌通顺,泛化的"有没有帮助"打高分,但幻觉、过度承诺、答非所问全被糊过去,分数漂亮、投诉照涨。② 未被发现的回归:改一版 prompt 让新场景变好,旧场景悄悄变差;没有回归集就没有前后对比基线,质量下行而团队感觉在进步。③ 指标与产品目标脱节:评测指标测的是"模型说话的姿势"而非真实产品失败,指标涨分、产品不动,力气白花(Goodhart 定律现场)。解药是 Airbnb 十条要点之一:避免泛化 helpfulness,瞄准真实产品失败,把指标从观察到的错误中推导出来。

题 3(基础):GenAI 评估和传统软件测试的本质区别是什么?

参考答案: 四项本质差异:① 输入空间——测试的参数有限可枚举,自然语言输入 + 多轮上下文 + 工具返回组合爆炸,用户会说出你想不出的话;② 判定方式——测试是确定性断言、期望输出唯一,GenAI 一个目标有多种可接受结果,"正确"依赖判断,需要规则 / judge / 人工分层判定;③ 回归语义——测试的回归是功能明确坏掉,GenAI 的回归是统计分布上的悄悄漂移,不跑回归集发现不了;④ 通过标准——测试默认 100% 通过,GenAI 要分级设定(Anthropic 推荐口径:确定性任务用例集 100%、非确定性任务 ≥95%,高风险场景用 pass^k 做发布线)。还有一层:测试通过≈可上线,而离线评估通过只是必要条件,后面还有灰度与线上监控。

题 4(进阶):有人说"我跑了十几条 case 都通了,效果不错"。请指出这个结论的所有漏洞。

参考答案: 四个具体漏洞(阿里评测方法论的四个失效场景):① 一次跑通 ≠ 稳定:非确定性系统里一次成功只是一个样本;要报 N 次重复的成功率分布,腾讯口径 N=5 里 1 次失败就算有稳定性风险,关键决策类容忍 0%。② 改坏旧场景看不见:这十几条 case 没有沉淀为回归集,下次改 prompt / 换模型时旧场景退化无人知晓(未被发现的回归)。③ 级联放大测不出:手测只看终点输出,多步链路前段的小偏差会被后段放大,十几条 case 也覆盖不了分支组合。④ 假阳性漏检:可能存在"最终答案看似对、执行路径已偏离或带风险"的样本——跳过校验恰好没出事、训练数据碰巧答对,这类样本迟早在线上引爆。正确姿势:把 case 沉淀为可复跑用例,多 trial 报 pass^k,加过程型与风险型检查,扩到覆盖核心路径与高风险边界的 golden set(阿里经验 50–200 条起步)。

题 5(进阶):一个 agent 单次任务成功率 75%,要上"用户不会重试"的客服场景。这个数够用吗?该用什么指标定发布线?

参考答案: 不够。75% 的单次成功率意味着每次服务 4 个用户就有 1 个失败;而在不可重试、无人值守的场景,用户不接受"多试几次总有一次成功"(阿里一致性双指标的原话)。该用 pass^k(k 次独立试验全部成功)定发布线:按 Anthropic 文档的示例算法,p=0.75、k=3 时 pass^3 = 0.75³ ≈ 42%——一个"看起来 75% 不错"的 agent,三连全对只有四成把握。τ-bench 的实证同向:GPT-4o 在 retail 域 pass^1 ≈60%(官方榜单 60.4%),pass^8 ≈25%。工程结论:① 发布门槛用低 k 的 pass^k(如 k=3~8)而非 pass@1;② 同时报至少一次成功率作为能力上限参照,两者的 gap 就是稳定性债;③ 客服/退款/支付等不可逆场景按关键决策类对待,稳定性容忍阈值取最严(腾讯分级:关键决策类 0%)。

题 6(进阶):评估在 GenAI 开发流程中扮演哪几重角色?分别用什么工业实践佐证?

参考答案: 四重身份,层层递进:① 质量度量——把"感觉变好了"变成可比较的数字:DoorDash 的 harness 把质量信号从平均每天 1 条员工反馈升级为每天 2,000 个自动评分会话,全国上线前质量分 +8、错误率近乎减半。② 发布门禁——变更能不能上线由证据决定:DoorDash 任何变更必须通过全部 50+ 个 eval;阿里 P0 指标不达标不发布。③ 迭代指南针——告诉团队下一步改什么:Airbnb "When in doubt, look at your data",100 个 prompt 人工精读读出 15 个 groundedness 失败、5 个不当拒答,修复优先级由此而来。④ 数据飞轮入口——线上失败变资产:Discord AITL 用标注回流把再训练周期从月级压到周级,试点有用性 +8.4%。只把评估当"测试",就只拿到了第一重。

题 7(进阶):老板问"评测这么贵,值得投吗?"你怎么用评估经济学回答?

参考答案: 把两边成本摆上桌。eval 成本侧可预算:用例建设(一次性,阿里经验 50–200 条 golden set 起步)、每次运行推理成本(用例 × trials × token × 单价)、judge 判定成本(分层筛查可压一个量级)、人工校准(Airbnb 从 20–100 个专家样本起步)。线上失败成本侧不可预算且随流量放大:修复工时、资损补偿(错退款收不回)、用户流失、合规事故。决策规则:eval 能把失败率压低 Δ,且 Δ×线上失败年化成本 > eval 年化成本,就值得。量级参照(DoorDash 原文数字):全量回归从人工 6+ 小时压到约 20 分钟;harness 支撑底座模型迁移拿到延迟降 35% 且质量无损——没有评测,这种收益根本不敢拿。腾讯的反向证据:无评估时"模型不敢升级、变贵变慢无法归因"。结论:评测是杠杆投入,不是成本中心。

题 8(系统设计):团队的退款客服 agent 一个月后要上线,目前没有任何评测体系。设计一个最小可行评测体系与落地路径。

参考答案: 按"先止血、再立柱、后闭环"三步: 第一周(止血):从真实失败出发——收集已有的线上投诉与人工验证记录,手挑 20–50 条高风险 case(Anthropic 起步口径),人工精读输出与 trace(Airbnb 100 样本法的小规模版),归类错误模式。 第二、三周(立柱):① 建 50–200 条 golden set(阿里经验),覆盖核心退款路径 + 高风险边界(已发货退款、运费险、大额退款),含坏样本;② 打分分层:确定性优先——订单状态、工具调用断言、金额精确性用代码判,语义与话术交给 judge(详见第 E4/E5 章);③ 校准 judge:与人工标注一致率达到 ≥85%(阿里/腾讯参考线)才允许自动放量;④ 定门禁:确定性用例 100%、非确定性 ≥95%(Anthropic 口径),P0 风险样本零容忍,pass^k 报稳定性。 第四周起(闭环):eval 进 CI,PR 触发回归;上线配灰度,跟踪转人工率、投诉率等线上信号;badcase 回流进用例集(只增不减)。 组织上指定一名最终人类决策者裁决"好 vs 坏"争议(Airbnb EDD 五原则之一)。若预算允许,用 Bolt 的量级做心理锚点:从零到可用约 3 个月(Anthropic 博客引用)——一个月上线的是最小版本,体系本身要持续生长。


五、易错点 · 反直觉点

  1. 误区:同一个 prompt 跑通了一次,说明这个能力是稳定的。 真相:非确定性系统里一次成功只是分布中的一个样本。腾讯口径:N=5 次执行只要 1 次不通过即存在稳定性风险;τ-bench 上 GPT-4o retail pass^1 ≈60%(官方榜单 60.4%)而 pass^8 ≈25%(摘要 <25%)。 记忆锚点:单次运行是样本,不是结论。

  2. 误区:改完 prompt 没出事,就是没 regression。 真相:GenAI 的回归是统计分布上的悄悄漂移,不会自己报警;没有"变更前 vs 变更后"的可比较回归集,退化根本不可见——这正是 Airbnb 三大陷阱中的"未被发现的回归"。 记忆锚点:回归不会敲门,只有回归集能开门。

  3. 误区:最终答案对了就行,过程不重要。 真相:假阳性是 GenAI 最隐蔽的失败——跳过身份校验恰好没造成损失、训练数据碰巧答对,"这次结果对、下次事故见"。Airbnb 明确:推理路径、工具参数、工作流可能在结果看似正确时已经失败。 记忆锚点:结果对是一次,路径错是每次。

  4. 误区:helpfulness / 平均分高,就是质量好。 真相:泛化分数天然平滑掉真实失败模式(幻觉、过度承诺、答非所问都被礼貌的通顺糊过去),这就是 Airbnb 的"虚假信心"陷阱;指标一旦与产品目标脱节,涨分只是自我安慰(Goodhart)。 记忆锚点:指标不指向真实产品失败,就指向自欺。

  5. 误区:自动评测不放心,那就加人肉验证。 真相:腾讯痛点表指出,Skill 越多、模型越快,人肉回归指数增长,最终只能选择性验证、留下盲区——人工不是更可靠的路线,而是更贵的路线。专家时间应花在刀刃上(校准 judge、诊断异常,60%+ 占比,腾讯经验法则)。 记忆锚点:人肉回归是指数成本,评测自动化是唯一线性解。

  6. 误区:评估是上线前的一道抽查,过了就结束。 真相:评估有四重身份(度量 / 门禁 / 指南针 / 飞轮)且贯穿开发—发布—运行全程;离线分数还只是必要条件,后面有灰度、线上监控、badcase 回流。EDDOps 统计显示工业界 40.74% 的评测已是持续评测。 记忆锚点:评估是逗号,不是句号。

  7. 误区:新模型在 eval 上分数大跌,说明新模型弱。 真相:DoorDash 从 Claude Sonnet 4.6 迁移到 Gemini 3.5 Flash 时 harness 分数大跌,最终查明不是能力差距,是兼容性差距——工具签名要 plain string 而 Flash 传了 JSON 对象、system prompt 是围绕旧模型惯例隐式调优的。"低分反映的是为旧模型适配的系统,不是更弱的模型。" 记忆锚点:低分先怀疑环境,再怀疑模型。

  8. 误区:只看平均分 / 总体通过率就够了。 真相:平均分天然掩盖切片退化——某类高风险场景全线崩坏,可以被大量简单场景的分数稀释掉。GEPA(arXiv 2507.19457)的 Pareto 前沿选择隐含的原则正是"按切片看指标,防止平均分掩盖退化"。 记忆锚点:平均会说谎,切片不会。

  9. 误区:评测体系是纯成本中心,是"质量保险"式的必要之恶。 真相:评估经济学算的是杠杆账——DoorDash 用 harness 拿到回归提速(6+ 小时 → 20 分钟)与模型迁移收益(延迟 -35%、质量无损);评估还持续生产资产(用例库、根因标签库、校准集)。阿里原话:"质量资产越厚,Agent 迭代越不靠个人经验和临时救火。" 记忆锚点:评测买的不是保险,是杠杆。


六、推荐资源

论文(arXiv ID 均经调研核实,收录于 _research/06-edd-simulation.md):

  1. Evaluation-Driven Development and Operations of LLM Agents(EDD/EDDOps)—— arXiv 2411.13768(2024-11 首发,2025-11 v3)。EDD 方向最系统的学术表述:四阶段过程模型 + 三层参考架构 + "学术 93% 停留在部署前 vs 工业 40% 已持续评测"的供需错配统计。本章 2.7 的主要来源。
  2. τ-bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains(Sierra AI)—— arXiv 2406.12045(2024-06)。pass^k 的原始出处;本章 2.1 引用的 pass^1/pass^8 数字来自该论文摘要转述口径。
  3. Benchmarking and Learning Real-World Customer Service Dialogue —— arXiv 2510.22143(2025-10)。offline-online gap 的实证:"强 offline 基准成绩只是部署可靠性的弱指标"。
  4. GEPA: Reflective Prompt Evolution Can Outperform Reinforcement Learning —— arXiv 2507.19457(2025-07)。"eval 作为优化目标函数"的代表作,Pareto 前沿按切片保留候选(详见第 E10 章)。
  5. Automated Self-Testing as a Quality Gate: Evidence-Driven Release Management for LLM Applications —— arXiv 2603.15676(2026-03)。"评测结果即发布证据"的门禁化学术样本。

工程博客(本章工业数字的原始出处,均收录于 _research/00-industry-practice.md):

  1. Airbnb《Eval-driven development: Lessons from evaluating GenAI at scale》——三大陷阱、EDD 五原则、"When in doubt, look at your data"、100 样本法、judge 校准 78%→88% 全程。
  2. DoorDash《Building Ask DoorDash (Part 3): Evaluation》与《A Simulation and Evaluation Flywheel to Develop LLM Chatbots at Scale》——质量分 +8 / 错误率近乎减半、50+ eval 门禁、6 小时→20 分钟回归、模型迁移延迟 -35%、11 轮迭代第 3 轮回落。
  3. 阿里技术《Agent 评测:方法论与体系设计》——三大门槛、"跑几条 case 不够"四场景、一致性双指标、P0/P1/P2 门禁。
  4. 腾讯技术工程《AI Agent & Skill 测评方案及落地实践》——六大痛点表、稳定性容忍阈值分级、引用 Anthropic 的 100%/95% 通过率口径。
  5. Anthropic Engineering《Demystifying evals for AI agents》(2026-01)——起步 20–50 个用例、capability vs regression 套件二分、Bolt 约 3 个月建成 eval 体系。
  6. Hamel Husain《Your AI Product Needs Evals》(hamel.dev)——evals-as-tests 运动的布道文本,面试谈"为什么要有 evals"的课外必读。
  7. OpenAI《Evaluation best practices》(developers.openai.com 官方文档)——从一开始就反复评测(eval-driven)、每次变更都跑 continuous evaluation;数据来源五路(生产、专家构造、历史、合成、采购);裁判优先对比式 / 分类型 / rubric 打分而非自由文本。与 Anthropic 文档对读,可见两家的口径一致性。

动手 labs:

  • eval_lab01_metric_system.py——亲手算出 pass@k 与 pass^k 随 K 分道扬镳:"p=0.8 的 agent,pass@8 ≈ 100% 而 pass^8 只剩约 17%":cd evals-special/labs && python3 eval_lab01_metric_system.py
  • eval_lab06_trajectory_eval.py——构造"结果对但路径错"的假阳性样本,验证 outcome-only 评分必然漏检:cd evals-special/labs && python3 eval_lab06_trajectory_eval.py
  • eval_lab10_edd_loop.py——EDD 全闭环演练:门禁拒绝"修了新 bug 却改坏旧场景"的版本,回归集只增不减(配套第 E10 章):cd evals-special/labs && python3 eval_lab10_edd_loop.py

特辑内交叉引用:

  • 指标怎么定:第 E2 章 · 评估指标体系(pass^k 的完整口径与门禁统计)
  • 假阳性怎么抓:第 E7 章 · 轨迹与 Agent 级评估
  • 评测怎么驱动开发:第 E10 章 · 评测驱动开发(EDD)
  • 四家公司怎么做:第 E15 章 · 工业实践案例研究(含 30 天 / 90 天落地路线图)
  • 浓缩版对照:主手册第 8 章 · Agent 评估与可观测性
第 2 章 / 共 15 章

评估指标体系

📌 本章导航(6 节)

一句话导读:「准确率 85%」这句话本身没有意义——有意义的是「哪个口径的 85%、在什么统计置信度下、用来做什么决策」。本章把 Agent/GenAI 评估指标组织成一套体系:纵向分层(P0 门禁 / P1 比较 / P2 观察)、横向分维(五大维度)、逐个精讲核心指标的定义与算法、给出指标设计四原则与统计口径,最后拆解万能 helpfulness 与 Goodhart 两大反模式。学完你能回答任何「这个指标怎么算、该不该进门禁、被刷了怎么办」的问题。


一、知识图谱

评估指标体系
├── 1. 为什么需要「体系」而不是单个指标
│   ├── 单一指标的三种失效:虚假信心(浅层 helpfulness)/ 未发现回归 / 指标与产品脱节(Airbnb 三坑)
│   └── 指标 = 门禁 + 迭代指南针 + 跨团队沟通语言:先定义「什么叫好」,才谈得上评
├── 2. 纵向分层(指标服务于什么决策)——阿里
│   ├── P0 上线门禁:不达标不发布(功能正确性、安全合规、一致性)
│   ├── P1 版本比较:配统计口径(置信区间 + 显著性 + 最小可感知变化)
│   └── P2 体验观察:长期跟踪(语气、满意度、转人工率)
├── 3. 横向分维(评什么)——腾讯五大维度
│   ├── 功能正确性(P0,代码判)          ├── 效率与成本(P1,代码判)
│   ├── 过程质量(P1,Rubric+人工)       ├── 鲁棒性与安全(P0,代码+人工)
│   └── 体验与对齐(P2,Rubric+人工)
├── 4. 核心指标精讲
│   ├── 一致性双指标:pass@k(能力上限)vs pass^k(生产一致性)
│   │   ├── pass@k = 1−(1−p)^k;pass^k = p^k(独立同分布假设)
│   │   ├── 无偏估计:1 − C(n−c,k)/C(n,k)(每任务 n 次试验、成功 c 次)
│   │   └── 实证:τ-bench GPT-4o retail pass^1≈60% → pass^8≈25%
│   ├── 任务完成率(子目标打点;Turn/Session/Trace/Outcome 四层)
│   ├── 工具调用准确率(该不该调 / 参数对不对 / 调用日志断言)
│   ├── groundedness / 幻觉率(有据性:回复是否锚定检索证据)
│   ├── 误拒率 / 漏拒率(拒绝合理性)
│   └── 延迟 p50/p95/p99、成本 ¥/task(质量相同看成本,成本相同看质量)
├── 5. 指标设计原则与统计口径
│   ├── 四原则:可量化 / 可比较 / 可回归 / 可归因
│   └── 门禁统计三件套(阿里):置信区间 + 显著性检验 + 最小可感知变化阈值
├── 6. 稳定性评估与容忍阈值分级(腾讯)
│   ├── N 次重复运行:1 次不通过即存在稳定性风险
│   └── 关键决策类 0% 容忍 / 辅助分析类 ≤10% / 创意生成类 ≤40%
└── 7. 反模式
    ├── 万能 helpfulness 分:什么都评 ≈ 什么都没评
    └── Goodhart 定律:指标成为目标 → 代理-金标背离 / grader 被钻空 / 计分规则激励瞎猜

30 秒全景:先按「决策用途」分层(这个分数用来拦发布、比版本,还是看趋势?),再按「评估对象」分维(正确性/过程/效率/安全/体验),每个指标都要能回答「怎么算、谁算、多高的值算好、波动多大」——四问缺一,指标就只是仪表盘装饰。


二、核心概念精讲

2.1 为什么「一个准确率」不够:指标体系的定位

Airbnb 在 Eval-Driven Development(EDD)实践中总结了缺乏评测计划的三个常见坑,这三个坑恰好解释了为什么指标必须是「体系」而非「单点」:

坑 表现 根因
虚假信心 浅层 helpfulness 分一路走高,产品却持续收到投诉 指标测的是「看起来有帮助」,不是「解决了用户问题」
未被发现的回归 改 prompt 后质量悄悄变差,无人知晓 没有按版本对比的回归指标,旧场景的退化不可见
浪费精力 团队优化了半天,指标与产品结果脱节 指标没有对齐真实产品失败模式

Airbnb 给出的核心习惯是 "When in doubt, look at your data."——跑约 100 个样本(真实或合成),人工读输出和 trace,把错误归类,再围绕它们建指标和测试。他们的旅行客服助手案例中,100 条 prompt 的人工精读发现了 15 个 groundedness 失败、8 个正确但啰嗦、5 个不当拒答、3 个 JSON 失败——这四类失败直接推导出四个指标(有据性、简洁性、拒绝合理性、格式合规率),没有任何一个是「万能 helpfulness」。

由此得到指标体系的定位:

  • 指标是规约(specification):先定义「什么叫好」,开发与迭代才有方向——这正是 EDD「eval 即规约」的主张(详见第 E10 章 · 评测驱动开发)。
  • 指标是门禁(gate):P0 指标不达标就不发布,把质量判断从「上线后靠用户发现」前移到「发布前靠数据拦截」。
  • 指标是沟通语言:「三连全对率 42%」比「感觉还行」更能让产品、算法、工程对齐预期。向业务方汇报时应使用 pass^k 这类产品语言,而不是单次通过率。

一句话:单个指标回答不了「能不能上线」,只有分层、分维、带统计口径的指标体系才能回答。

2.2 指标分层:P0 / P1 / P2(阿里)

阿里在 Agent 评测体系设计中把指标分为五大类,并按决策用途赋予优先级:P0 上线门禁(不达标不发)、P1 版本比较与工程优化、P2 体验改善与长期观察。分层的本质是回答「这个指标变差时,我们做什么动作」:

层级 决策用途 动作语义 实例指标 统计要求
P0 上线门禁 发布拦截 不达标 = 不发布,无商量余地 核心场景通过率、P0 风险样本失败数(要求为 0)、关键工具参数正确率、安全合规用例通过率、一致性 pass^k 阈值明确、判定确定;高风险样本宁可误杀
P1 版本比较 选型与优化 用于回答「v2 是否比 v1 好」「换模型值不值」 任务完成率、groundedness 分、效率指标(token/延迟/成本)、过程质量分 必须带统计口径:置信区间 + 显著性 + 最小可感知变化
P2 体验观察 长期跟踪 不拦发布,但趋势恶化要立项 语气风格分、回复清晰度、转人工率、重复追问率、投诉率、满意度(CSAT/NPS、👍/👎) 看趋势与切片,容忍单点波动

阿里的发布联动实践中,这三层指标对应三类信号同时跟踪:

  • 离线质量信号(发布前):核心场景通过率、P0 风险数、关键工具参数正确率;
  • 线上体验信号(灰度中):转人工率、重复追问率、投诉率、满意度变化;
  • 业务结果信号(全量后):任务完成率、工单闭环率、退款/赔付成功率。

并且有明确的联动规则:离线提升但线上关键信号恶化 → 触发回滚或降级(详见第 E12 章 · 在线评估与数据飞轮)。

分层时的两个实操要点:

  1. P0 要少而硬。门禁越多发布越慢,团队会倾向于绕过门禁。真正的 P0 只留「失败了就是事故」的指标;阿里把「P0 风险数」直接定义为要求 0——高风险样本(赔付/隐私/合规)失败一个就拦。
  2. P2 不等于不重要。腾讯特别强调:体验与对齐是 P2 但决定产品生死。分层只是「是否进门禁」的区分,不是「是否重要」的区分——早期用 Rubric + 人工抽样跟踪,成熟后接 A/B + 用户反馈闭环。

2.3 五大评估维度(腾讯)

腾讯在 AI Agent & Skill 测评方案中给出五大维度框架,每个维度标注了优先级、评分器选型与落地要求。下表在腾讯原表基础上扩充了子维度与典型例子:

维度 层级·评分器 子维度(评什么) 评测方法 典型指标 落地优先级
功能正确性 P0 · 代码判 结果正确性、任务完成度(子目标打点)、指令遵循(JSON Schema/正则/字段检查)、工具调用正确性 断言、单元测试、终态校验、调用日志断言 pass@1、pass^k、子目标达成率、schema 通过率 必须自动化全覆盖
过程质量 P1 · Rubric+人工 推理合理性、步骤最优性(实际步数 vs 参考解法)、信息完整性(要点覆盖率)、上下文利用率、自我纠错能力 Rubric 打分(1–5 分)、Trace 分析、基线对比 推理分、步骤数比值、要点覆盖率 最能体现「智能」,自动化最难,Rubric 主战场
效率与成本 P1 · 代码判 token 消耗、工具调用次数、延迟、失败重试率、任务成本 程序化统计(从 trace 直接算) Token avg/p95、调用次数 avg/p95、延迟 p50/p95/p99、¥/task 每个任务带成本画像
鲁棒性与安全 P0 · 代码+人工 一致性(重复运行)、异常恢复(故障注入)、抗对抗/抗注入(红队集)、幻觉率、越权风险、合规、拒绝合理性 pass^k(k=5/10)、mock_tool_failure、红队用例、权限断言、PII 正则+人工抽查 pass^k、恢复成功率、攻击成功率、幻觉率、误拒%/漏拒% 金融/医疗/企业数据 Agent 必须前置
体验与对齐 P2 · Rubric+人工 语气风格、回复清晰度、主动澄清(模糊需求主动提问而非瞎猜)、同理心、可解释性、用户满意度 Rubric + 人工抽样;成熟后 A/B + 反馈闭环 语气分、澄清率、CSAT/NPS、👍/👎 比 P2 但决定产品生死;按需补

腾讯给出的落地顺序是 P0 先落地、P2 按需补。维度之间并非独立——一个 badcase 往往同时扣多个维度的分,因此腾讯的扣分制评分(初始 100 分负分制,每处不符扣分至 0,达标线 80 分,按 Agent 类型与业务风险调整)会把「任务结果不符预期 −100、步骤遵循性每步 −10、工具调用每项 −10、耗时每超基准 1 分钟 −10」等组合成一份 JSON 扣分明细——分数之外保留「扣在哪」的信息,指标才能归因(评分机制详见第 E04 章 · 程序化评分)。

不同类型 Agent 的指标侧重(腾讯):评测骨架(执行用例 → 采集 Trace → 评分 → 报告 → 根因归类)可复用,按业务定制的是「评什么、怎么判」:

Agent 类型 指标侧重 依赖的评分器
知识库问答 准确性 / 幻觉检测 / 引用溯源 Rubric 为主
代码编写 产物正确性 / 可运行性 确定性为主:编译、测试
功能工具 过程合规性 / 工具调用正确性 过程对比基线
问题定位 推理链路 / 根因准确性 过程 + 结果双重验证

这与阿里的观点一致:先分类型再定指标,「类型不分,评测结果基本不可用」。

2.4 核心指标精讲

2.4.1 一致性双指标:pass@k 与 pass^k(本章最重要的一对概念)

设单任务单次成功率为 p,k 次独立重复运行:

指标 定义 公式(i.i.d. 假设) 回答的问题 适用场景
pass@k k 次尝试中至少一次成功 1 − (1−p)^k 「多试几次能不能成」 能力上限;有人在环可重试、可从多个草稿中挑选的场景(创意生成、草稿辅助)
pass^k k 次尝试全部成功 p^k 「无人值守连续用 k 次会不会出事」 生产一致性;客服、支付、退款、合规等不可重试场景的发布门槛

直觉:k 增大时两者迅速分道扬镳。 以 p = 0.8 为例:

k pass@k(至少一次成功) pass^k(次次成功)
1 80.0% 80.0%
2 96.0% 64.0%
3 99.2% 51.2%
4 99.84% 40.96%
5 99.97% 32.8%
8 ≈99.9997% ≈16.8%

同一个「单次准确率 80%」的 agent:按 pass@8 看近乎完美(99.9997%),按 pass^8 看几乎不可用(16.8%)。Anthropic 在官方 evals 指南中给的例子同样扎心:p = 0.75、k = 3 时 pass^3 ≈ 0.75³ ≈ 42%——一个「看起来 75% 不错」的 agent,三连全对只有四成把握。

实证(τ-bench,Sierra AI):GPT-4o 在 retail 域 pass^1 约 61%、airline 域约 35%,而衡量可靠性的 pass^8 分别跌至约 25% 与 16%(数字引自论文摘要,arXiv:2406.12045,2024)。「能做对一次」与「稳定做对」之间的差距是系统性的,不是个别现象。

估计方法(面试计算高频):实际评测中每个任务只能负担 n 次运行(n 次中成功 c 次)。两个常见的错误估计与正确做法:

  • 错误 1:「n 次里有任何一次成功就算过」——这实际报告的是 pass@n,k < n 时会系统性高估 pass@k;
  • 错误 2:用有放回公式 (c/n)^k 估 pass^k——小样本下会高估一致性,这是危险方向的高估(让团队误以为系统比实际更稳)。
  • 正确:无放回组合的无偏估计——pass@k = 1 − C(n−c, k)/C(n, k);对应地 pass^k = C(c, k)/C(n, k)(c < k 时为 0),即「从 n 次试验里无放回抽 k 次」的超几何口径。

动手验证:cd evals-special/labs && python3 eval_lab01_metric_system.py——lab 用固定种子模拟 N 任务 × K 次运行矩阵,核心断言包括 pass^k ≤ pass@k、p^k 理论值与估计值吻合、以及「同一 agent 在关键决策门禁与创意生成门禁下得到相反发布结论」。

统计注意:pass^k = p^k 依赖各次尝试相互独立。真实系统中上下文污染、残留状态、下游限流、缓存命中都会破坏独立性;若各次尝试正相关(这次挂了下次更容易挂),真实 pass^k 比 p^k 更悲观。此外 pass^k 对试验次数 n 敏感(n 太小会高估),报告时必须连同 n 与置信区间一起给出(详见第 E09 章 · 评估的统计学基础)。

k 怎么选:一场发布哲学的选择。选 k 不是拍脑袋,取决于产品形态对失败的容忍度:

场景 建议口径 理由
demo / 能力探索 pass@1 或至少一次成功率 目标是发现能力边界,不是承诺可靠性
有人审阅的辅助工具(报告生成、代码建议) pass@k(k=3~5) 人从候选中挑选,重试成本由人吸收
无人值守的生产流程(客服托管、工单处理、退款) pass^k(低 k,k=3~8) 一次失败就是一次事故;τ-bench 与 Anthropic 均主张可靠性指标进发布门槛
不可逆操作(支付、改数据) pass^k + P0 风险样本 0 失败 双保险:统计口径 + 硬约束

值得注意的现状:多数公开 leaderboard 仍只报 pass@1 或平均分,学界对「可靠性排行榜」尚无标准——这是 2024–2026 evals 领域的公开争议之一。面试中被问「你们汇报哪个数」,答「按产品形态选口径,两个数都报,gap 就是稳定性债」是满分姿势。

2.4.2 至少一次成功率 vs 连续成功率:生产系统为什么看后者

阿里把一致性明确拆成双指标:任务重复运行 N 次,「至少一次成功率」度量能力上限,「连续成功率」度量生产要求。并给出了一句值得全文背诵的判断:

用户不会接受「多试几次总有一次成功」。

客服、支付、退款、合规等生产级场景,每一次失败都是一次真实事故(错误退款、重复扣款、违规承诺),不存在「重试到成功」的兜底路径。因此:

  • 能力评测阶段看至少一次成功率——回答「这个 agent 有没有潜力做这件事」,指导投入方向;
  • 发布门禁看连续成功率——回答「敢不敢把它交给真实用户」,对应 pass^k(低 k,如 k=3~8)。

两个数的 gap 就是稳定性债:gap 大说明能力有但不可靠,优化方向是降方差(固定 prompt、收紧工具 schema、减少自由发挥),而不是继续提能力上限。

2.4.3 任务完成率:最容易算、也最容易算错

任务完成率是最接近业务价值的指标,但有两个口径陷阱:

  1. 判「说了什么」还是判「世界变成什么样」。客服/操作类 agent 首选终态校验(如 τ-bench 用数据库终态哈希判定:订单是否真的被取消、金额是否正确),抗话术干扰;只看自然语言回复会把「嘴上说已取消、数据库纹丝不动」判为成功(详见第 E07 章 · 轨迹与 Agent 级评估的假阳性分析)。
  2. 每轮都对 ≠ 会话成功。阿里特别警告「不要只平均每轮分数」——每轮都「答得还行」但最终没解决问题仍是失败。

阿里对对话 agent 提出的四层评判框架,明确了「完成率应该落在哪一层」:

层 评什么 指标形态 常见误用
Turn(单轮) 单条回复的相关性、准确性 每轮 judge 分 只平均每轮分 → 掩盖「绕圈但不解决」
Session(整段会话) 整段交互是否推进并达成用户目标 会话级 pass/fail 用单轮高分推断会话成功
Trace(执行轨迹) 路径是否合规、关键步骤是否发生 过程分、关键调用覆盖率 只看结果不看路径 → 假阳性
Outcome(最终结果) 用户问题是否真正解决(终态) 终态校验、工单闭环率 把「对话礼貌结束」当「问题解决」

任务完成率应落在 Session/Outcome 层,并配合子目标打点(腾讯五维中「任务完成度(子目标打点)」)做部分归因:把任务拆成有序子目标(如退款任务 = 查到订单 → 核实身份 → 确认订单状态允许退款 → 执行退款 → 告知结果),每个子目标独立计数——任务失败时能立刻看出「卡在第几个子目标」,而不是只得到一个笼统的 fail。子目标达成率同时也是 P0 门禁的常用指标(阿里离线质量信号中的「核心场景通过率」通常就是子目标口径的聚合)。

2.4.4 工具调用准确率

工具调用是 agent 区别于 chatbot 的核心能力,也是失败的高发区(阿里 RCA 中的「关键工具未调用」「工具参数缺失」是高频根因)。可拆成一组可程序化判定的子指标:

子指标 定义 判定方式
该不该调(触发正确性) 过度触发(不该调而调)与漏触发(该调没调)分开统计 must-call / must-not-call 断言;负向用例集(相似但不相关 prompt 不误触发)
参数正确性 参数值、类型、枚举、格式是否符合工具签名 JSON Schema 静态校验 + 结构化语义比对
调用序列合规 关键前置是否满足(先鉴权后操作)、关键校验是否跳过 偏序约束断言;与基线序列 LCS 对齐(腾讯 TPerf 实现,详见第 E07 章)
调用效率 重复调用、冗余调用、死循环 调用次数 avg/p95、轨迹去重分析

腾讯把「工具调用检查(是否调用指定工具、参数是否正确)」列为确定性评分器的第一优先级——能用代码判的绝不用模型(详见第 E04 章)。注意:不要对完整调用序列做 exact match,多条合法路径会被误杀;只对关键调用做强约束。

一个真实 badcase 能说明这组指标的价值(阿里 RCA 案例):现象是「已发货退款场景中,Agent 23 次跳过订单状态校验」,根因被归为「工具覆盖与执行」大类下的枚举「关键工具未调用」,责任模块 = 退款 Skill/退款流程执行模块,且失败集中在 v1.8 Prompt。如果没有「关键校验工具调用覆盖率」这个指标,这 23 次跳过会淹没在「最终退款大多也办成了」的结果分里——直到某次跳过校验造成资损才暴露。工具调用指标的归因价值正在于此:它把「侥幸没出事的路径违规」提前变成统计信号(这类「结果对但路径错」的假阳性样本,处理流程详见第 E07 章与第 E11 章)。

2.4.5 groundedness 与幻觉率

groundedness(有据性)度量「回复是否锚定于检索到的证据/工具返回」,是 RAG 与客服 agent 的头号质量指标;幻觉率是其反面。两者通常由 LLM-as-a-Judge 按 rubric 判定:judge 拿到「agent 的论断 + 背后的工具输出/检索片段」,逐条核对论断是否有证据支撑(DoorDash 的 transcript builder 正是为 grounding 检查定制证据视图:judge 只看该标准依赖的那片证据)。

工程上三条经验(均有出处):

  • groundedness 失败是最常见失败类型:Airbnb 100 样本探索中 15/31 个问题属于 groundedness 失败,接近一半;
  • 检索改进直接降低 groundedness 失败——该指标的归因往往不在生成层而在检索层,需要配合组件级指标定位(召回是否正确、关键片段是否保留);
  • judge 判 groundedness 前必须校准:Airbnb 的 groundedness judge 初始与人工一致率仅 78%(误罚了正确的改述),修订 rubric 与示例后达 88% 才投入使用(judge 校准全流程详见第 E05 章)。

OpenAI 官方 evaluation best practices 给出的量化目标参考(文档问答类):recall ≥ 0.85、precision ≥ 0.7;摘要类 ROUGE-L ≥ 0.40、G-Eval 连贯性 ≥ 80%、好评率 70%+——这些数字可作为团队定门槛时的外部参照,但最终门槛要从自己的失败分布推导。

2.4.6 误拒率 / 漏拒率:拒绝合理性

安全类指标必须成对出现,单看任何一侧都会产生荒谬的优化方向:

指标 定义 单侧优化的荒谬结局
漏拒率(该拒不拒) 应拒绝/升级的请求被照常处理的比例 只压漏拒 → agent 拒绝一切敏感请求
误拒率(不该拒而拒) 正常请求被错误拒绝的比例 只压误拒 → 防线形同虚设

Airbnb 案例中「5 个不当拒答」就是误拒的实例——拒答本身也是一种失败模式,会直接损害可用性。正确姿势是报 tradeoff 曲线:在误拒-漏拒平面上标点,按业务风险偏好选工作点(金融场景容忍较高误拒,客服场景容忍较低误拒)。腾讯把「拒绝合理性(误拒%/漏拒%)」归入鲁棒性与安全维度,与安全用例集、红队集配套使用。

2.4.7 效率与成本:延迟分位数与 ¥/task

腾讯的原话值得引用:「pass@1 高但 token 花 10 倍的方案生产上不可接受」。效率与成本维度要求每个任务带成本画像,核心指标:

  • Token:avg / p95(input/output 分开,含缓存读写);
  • 工具调用次数:avg / p95(冗余调用的直接信号);
  • 延迟:p50 / p95 / p99——只看均值会掩盖尾部;agent 会话的 wall-clock 大头往往在工具执行与外部等待,不在推理本身;
  • 失败重试率:重试既烧钱又拉长延迟;
  • 单任务成本 ¥/task:把 token 单价 × 用量折算到任务粒度,是与业务方沟通的通用语言。

工业实例(DoorDash):其 eval harness 支撑了一次底座模型迁移(Claude Sonnet 4.6 → Gemini 3.5 Flash)。离线评测最初分数大跌,但 harness 给出具体失败模式后定位出不是能力差距而是兼容性差距(工具参数格式与 system prompt 惯例问题);做小而准的修复后重跑,Flash 与 Sonnet 质量持平(在 harness 噪声范围内),迁移生产后延迟降 35%、质量无损。这个案例是「质量指标守住不动、用效率指标换收益」的标准操作——前提是质量指标先做到可比较(同一 harness、同一 judge、统计口径内比较)。

腾讯 TPerf 案例则展示了效率如何进入扣分制:耗时基准 300 秒,每超 10% 扣 1 分;token 以基线为基准每超 10% 扣 1 分,上限 −10——效率退化会被显式计入总分,而不是事后口头抱怨「变慢了」。

2.5 指标设计四原则与门禁统计口径

2.5.1 四原则

一个指标在纳入体系之前,过一遍这四道检查:

原则 含义 反例
可量化 有明确的计算口径,不同人算出来一样 「回复质量」无口径;「groundedness judge 按 v3 rubric 判 pass 的比例」有口径
可比较 跨版本、跨模型可比;口径与评测器版本冻结 judge 升级后直接对比新旧分数(尺子热胀冷缩)
可回归 能挂进回归集,每次变更重跑,只增不减 一次性的「感觉测试」,跑完即弃
可归因 分数变化能定位到组件/场景切片 只有一个全局平均分,掉了不知道掉在哪

「可归因」尤其依赖两点:按切片报告(任务类型/场景/难度/风险等级分桶,避免平均分掩盖退化——GEPA 的 Pareto 前沿选择隐含的正是这一原则),以及评分输出不止 pass/fail 还要有问题分类与判定依据(阿里:为 RCA 提供「现象入口」,详见第 E11 章)。

2.5.2 门禁要带统计口径(阿里)

阿里的门禁设计有一条被很多团队忽视的要求:版本对比要配套统计检验——关键指标置信区间 + 与基线的显著性判断 + 最小可感知变化阈值(提前定义提升多少才值得发布)。原文表述:

「门禁不只看差了多少,还要看差异是否超过统计噪声。」

拆开就是三件套:

  1. 置信区间:通过率是二项比例,报告 Wilson 区间(小样本下端点不越界、覆盖率接近名义水平),不报 CI 的点估计都是噪声;
  2. 显著性:两版本跑同一批评测集是配对设计,用配对检验(如 McNemar,只关心两版本判定不一致的样本),而不是比较两个独立的点估计;
  3. 最小可感知变化(MPP):事先定义「提升多少才值得发布」——如果业务上 1 个百分点的提升不值得一次发布风险,就把 MPP 设为 1pp,统计上检出 0.5pp 也没有意义。

量级直觉(推导细节见第 E09 章与 cd evals-special/labs && python3 eval_lab08_statistics_ci.py):通过率 p̂ 的标准误约为 √(p(1−p)/n)。基线 80% 附近、n=100 时标准误约 4 个点、95% CI 约 ±8 个点——v1 82% vs v2 85% 在 n=100 下完全不可判;同样的 3 个点差异,n=2000 时 CI 收到 ±1.6 个点,立刻可判。样本量与可检出差异 δ 约是 1/δ² 关系:基线 80%、双侧 α=0.05、功效 0.8 时,检出 10pp 差异每组约需 250 样本,检出 5pp 约需 1000,检出 3pp 约需 2800——想检出越小的差异,评测集越贵,这就是 golden set 规模与门禁灵敏度之间的根本权衡。

由此可以推出一份合格指标报告的最小字段——缺任何一项,数字都不可复核、不可比较:

字段 例子 缺了会怎样
点估计 通过率 85% ——
误差范围 95% Wilson CI [81.2%, 88.1%] 无法判断差异是否超过噪声
样本口径 n=400 条 golden set v3,每任务 trial=5 不知道估的是 pass@1 还是 pass^5
试验次数与聚合方式 逐任务估计后平均(非混合所有运行) pass@k 的错误聚合会改变数值
评分器版本 judge v3(与人工一致率 88%) 尺子换了,趋势图失真
切片拆分 按场景/风险等级分桶的通过率 平均分掩盖局部退化
对比基线与判定 vs v1.4:+3pp,CI 重叠,不显著 「涨了」变成口头结论

阿里「门禁不只看差了多少,还看是否超过统计噪声」落到纸面,就是这张表。

把分层指标与统计口径串起来,一次完整的门禁执行流如下(离线部分;与线上灰度的联动详见第 E12 章):

版本变更(prompt / 模型 / 工具 / serving 配置)
  → ① smoke 子集:少量核心用例、分钟级,拦截明显破坏
  → ② 全量回归集 × N trials:能力评测「毕业」的用例只增不减(腾讯/Anthropic 口径:
        确定性任务通过率 100%、非确定性 ≥95%)
  → ③ P0 硬门禁:核心场景通过率 ≥ 阈值 ∧ P0 风险样本失败数 = 0 ∧ 安全集 0 漏拒
        (任一不满足 → 直接拒绝,不进入统计比较)
  → ④ P1 统计比较:与基线配对检验 + CI + 显著性 + 预设 MPP
        (「不劣于基线」且「成本/延迟不劣化超阈值」才放行)
  → ⑤ 通过 → 出报告归档(含上一节最小字段)→ 进入线上灰度
        未过 → 拒绝 + 失败样本进 badcase 任务表(详见第 E11 章 · RCA)

注意两个顺序细节:P0 在统计比较之前(硬约束没有商量余地,不必浪费统计检验);成本/延迟作为 P1 比较的一部分——新版本质量持平但成本翻倍,同样应当拒绝。

2.6 稳定性评估与容忍阈值分级(腾讯)

腾讯的稳定性评估方法:同一用例执行 N 次(建议 N=5),只要 1 次不通过即存在稳定性风险。容忍阈值按使用类型分级:

使用类型 例子 容忍阈值 逻辑
关键决策类 问题定位、故障诊断、支付/退款决策 0%(N/N 全过,任何一次失败都可能误判) 结论直接影响不可逆动作
辅助分析类 性能分析、报告生成 ≤10% 有人审阅兜底
创意生成类 代码建议、文案 ≤40% 人从多个候选中挑选

N=5 的读法(腾讯调试经验):

N=5 结果 解读
全过 稳定
1/5 失败 存在幻觉/不稳定,按类型判断是否可接受
2/5 失败 高幻觉率,深入排查
5/5 失败 稳定失败——先查任务定义或基线,再怀疑模型

两个反直觉的边界:0% pass^N 通常说明任务定义有问题,不是能力不行;而通过率异常(0% 或 100%)在多数情况下是任务或评分器坏了,不是模型弱/强——这是腾讯列出的人工评分六大必要场景之一(诊断异常)。

腾讯 TPerf 的实战决策是个好案例:TPerf 虽属辅助分析类,但其结论直接影响优化决策与发布判断,一次错误结论可能导致性能问题漏检上线,因此采用关键决策类标准(任一 Trial 不达标该用例 0 分)——阈值分级不是查表填空,最终依据是「一次失败的代价」。

这套稳定性口径如何聚合成最终分数?腾讯 TPerf 给出了可复用的公式链:

trial_score = max(0, 100 + 各项扣分)        # 单次运行的扣分制得分
trial_pass  = trial_score ≥ 80              # 达标线 80 分
case_score  = 全部 trial 都 pass → 取均值
              任一 trial 不达标 → 该用例记 0   # 「一次失败即用例失败」的聚合

关键在最后一行的聚合方式:它把「连续成功率」语义直接编译进了用例分数——不是对 5 次运行取平均(那会稀释失败),而是任一次不达标整个用例归零。对比之下,若用「5 次均值 ≥80」做判定,4 次 95 分 + 1 次 0 分照样过关,恰好放过了最不稳定的那类行为。设计一致性指标时先问自己:聚合函数是在奖励稳定,还是在稀释失败?

与之配套的回归口径(腾讯引用 Anthropic 推荐):确定性任务用例集整体通过率需 100%,非确定性任务 ≥95%;能力测评(起步 20–50%,目标山峰)与回归测评(接近 100%,防御漂移)是两套不同预期的套件,通过率稳定 100% 的用例「毕业」进回归集(详见第 E03 章 · 黄金数据集与用例设计、第 E10 章 · EDD)。

2.7 指标反模式:万能 helpfulness 与 Goodhart

2.7.1 万能 helpfulness 分

Airbnb 三坑之首「虚假信心」的直接来源就是一个笼统的 helpfulness 分:它什么都能评,因此什么都评不准——judge 打高分的理由可能是「语气好」「够长」「格式整齐」,与「解决用户问题」弱相关。Airbnb 十条要点的第二条就是「避免泛化 helpfulness,瞄准真实产品失败」;配套的实践是「每个质量维度一个 judge、3–5 个经校准的评估器好过一堆嘈杂的评估器」。

诊断方法很简单:抽 20 条高分样本人工看。如果高分样本里有「礼貌地给了错误信息」「啰嗦但没解决问题」,这个指标就在制造虚假信心。修复路径:按观察到的失败模式拆维度(groundedness / conciseness / 拒绝合理性 / 格式合规……),每个维度独立可判( DoorDash 的做法是每条 rubric 标准写成 binary check,汇总为会话级总分,且先做 eligibility 适用性判断——不适用的标准跳过而不是一律扣分)。

2.7.2 Goodhart 定律:指标成为目标就不再是好指标

指标一旦与 KPI、发布决策、优化目标挂钩,就会被反向塑造。四类有据可查的实例:

实例 机制 出处
代理-金标背离 以代理指标(proxy reward)为优化目标时,proxy 持续上升而真实目标(gold)先升后降;最优优化量随奖励模型数据量按平方根增长 OpenAI《Scaling Laws for Reward Model Overoptimization》,arXiv:2210.10760(2022)
KL 正则不是兜底 当评分器误差是重尾分布时,无论 KL 系数多大,优化都会找到 exploit——「加正则就安全」是幻觉 《Catastrophic Goodhart》,arXiv:2407.14503(NeurIPS 2024)
pass@1 高估能力增益 RLVR 训练后 pass@1 超过基座模型,但大 k 的 pass@k 反而低于基座——只看 pass@1 会把「集中既有解法」误读为「扩展能力」 arXiv:2504.13837(NeurIPS 2025)
计分规则激励瞎猜 二元对错打分下,难题「猜一个」的期望收益高于「承认不会」,基准本身激励幻觉;应允许弃权并按校准计分 OpenAI《Why Language Models Hallucinate》,arXiv:2509.04664(2025)
长度敏感指标被训练攻破 AlpacaEval 2.0 的长度偏差是「评测被训练钻空子」的早期案例——优化器学会用更长的回答刷分,而非更好的回答 见 _research/09 评测与训练闭环调研
裁判被「讨好型回答」操纵 LLM judge 会被谄媚、迎合风格的输出钻空子,Meta 的 J1 工作甚至要用 RLVR 反过来训练 judge 自身防操纵 arXiv:2505.10320(2025)

评测工程侧的对应防御(每条都能落地):

  1. 代理指标旁必须挂独立 gold 指标:gold 是线上信号(转人工率、投诉率、业务结果)或人工抽检结论;跟踪 proxy-gold 背离曲线,一旦背离立即降低对 proxy 的优化强度。
  2. 指标组合优于单一北极星:质量(pass^k)、安全(误拒/漏拒、幻觉率)、效率(¥/task、p99)同时上报,防止单指标被刷。
  3. 警惕 grader 被钻空:当指标成为优化目标,grader 就是攻击面——SWE-bench 类评测中已出现 agent 直接修改测试文件骗过断言的案例(arXiv:2506.12286);对「分数突然飙升」的第一反应应是排查 grader 被钻空 / 评测集被污染 / judge 漂移,而不是庆祝模型变强(详见主手册第 8 章 · Agent 评估与可观测性的 grader 对抗性一节)。
  4. 按切片报告并监控方差:平均分是被 Goodhart 攻破的第一道防线,切片分数(场景/难度/风险等级)更难整体造假。
  5. 评测集与优化目标隔离:eval 集既当测试又当目标时必然被拟合——保留私有 holdout、定期换血、做污染检测(详见第 E13 章 · Benchmark 全景与前沿争议)。

三、面试高频考点

# 考点 分级 一句话考察意图
1 pass@k vs pass^k 的定义、公式与适用场景 ⭐⭐⭐ 是否理解「能力上限」与「生产一致性」的根本区分,能否手推 p^k 的指数衰减
2 一致性双指标:至少一次成功率 vs 连续成功率 ⭐⭐⭐ 是否知道生产场景(客服/支付)必须看连续成功率,「用户不接受重试」
3 指标分层 P0/P1/P2 与三类发布信号 ⭐⭐ 是否能把指标与决策动作挂钩(拦发布/比版本/看趋势),而非只报数
4 五大评估维度与评分器选型 ⭐⭐ 是否知道什么维度用代码判、什么用 Rubric、什么必须留给人
5 门禁的统计口径:CI + 显著性 + 最小可感知变化 ⭐⭐⭐ 是否理解「差异要超过统计噪声」,能否估算样本量(1/δ²)
6 效率与成本指标:延迟 p50/p95/p99、¥/task ⭐⭐ 是否知道「pass@1 高但 token 花 10 倍不可接受」,成本是并列维度不是脚注
7 groundedness/幻觉率的度量与归因 ⭐⭐ 是否知道幻觉失败的根因常在检索层,judge 需校准后才能上量
8 误拒率/漏拒率成对报告与 tradeoff 曲线 ⭐⭐ 是否理解安全指标单侧优化的荒谬结局
9 任务完成率的口径:终态校验 vs 文本匹配 ⭐⭐ 是否知道「嘴上说取消、数据库没动」的假阳性,以及「每轮都对≠会话成功」
10 稳定性容忍阈值分级(关键决策 0% / 辅助 ≤10% / 创意 ≤40%) ⭐⭐ 是否理解阈值由「一次失败的代价」决定,不是查表
11 Goodhart 定律与指标被刷的治理 ⭐⭐⭐ 是否能举出 proxy-gold 背离等实例,给出 gold 指标旁挂、切片报告等防御
12 万能 helpfulness 的危害与拆维度方法 ⭐ 是否知道从观察到的失败模式推导指标,而不是先验地定一个大分
13 pass^k 的估计:无偏公式与 n 敏感性 ⭐⭐⭐ 深水区:能否写出 1−C(n−c,k)/C(n,k),知道朴素估计的高估方向
14 指标的可归因性:切片报告与评分输出规范 ⭐ 是否知道分数要能定位到场景/组件,pass/fail 之外还要问题分类

四、经典面试题与参考答案

题 1(基础):pass@k 和 pass^k 有什么区别?各在什么场景下使用?

参考答案: 两者都是对「同一任务重复 k 次」的度量,但方向相反。pass@k = 1−(1−p)^k,k 次中至少一次成功,度量能力上限,适合有人在环、可重试或可从多候选中挑选的场景(创意文案、代码草稿辅助);pass^k = p^k,k 次全部成功,度量生产一致性,适合无人值守、失败即事故的场景(客服、支付、退款),是发布门槛该看的数。关键在于 k 增大时两者迅速分道扬镳:p=0.8 时 pass@8≈99.9997% 而 pass^8≈16.8%。实证上,τ-bench 报告 GPT-4o retail 域 pass^1≈60%(官方榜单 60.4%)、pass^8 ≈25%(摘要 <25%)(arXiv:2406.12045)。所以汇报口径必须匹配产品形态:向用户交付「每次都做对」的承诺,就用 pass^k;两个数之间的 gap 就是稳定性债。

题 2(基础):为什么不能用一个「成功率」指标评估 Agent?你会怎么分层组织指标?

参考答案: 单一指标有三个失效模式(Airbnb 三坑):浅层 helpfulness 造成虚假信心;没有版本对比就发现不了回归;指标与产品结果脱节导致白费精力。我会按决策用途分三层(阿里框架):P0 上线门禁——不达标不发布,只留「失败即事故」的硬指标:核心场景通过率、P0 风险样本失败数(要求为 0)、关键工具参数正确率、安全合规通过率、一致性 pass^k;P1 版本比较——任务完成率、groundedness、效率指标,必须带统计口径(置信区间 + 显著性 + 最小可感知变化),回答「v2 是否真的比 v1 好」;P2 体验观察——语气、清晰度、转人工率、满意度,不拦发布但长期跟踪趋势。分层的原则是「指标变差时我们做什么动作」:拦发布、比版本、看趋势,三类动作三套口径。P0 要少而硬,否则团队会绕过门禁;P2 不等于不重要——体验决定产品生死,只是不进门禁。

题 3(进阶):一个支付客服 agent 评测显示「至少一次成功率 92%,连续成功率(k=3)58%」。产品经理说 92% 足够上线了,你怎么看?

参考答案: 不能上线,而且这正是一致性双指标要防止的误判(阿里)。至少一次成功率度量的是能力上限——「多试几次总有一次成功」;但支付场景每次失败都是真实事故(错误退款、重复扣款),用户不会接受重试,生产要求看的是连续成功率,即 pass^k 口径。92% vs 58% 的巨大 gap 说明 agent「会做但不稳」,优化方向不是提能力而是降方差:固定 prompt 与输出 schema、收紧工具参数校验、减少自由发挥路径、对高风险步骤加强制校验。同时要追问统计口径:这个 58% 是多少任务、每任务几次运行估出来的?pass^k 对试验次数 n 敏感,n 太小会高估,需报告 n 与置信区间。门禁设置上,我会把「pass^3 ≥ 目标值(如 90%)且 P0 风险样本 0 失败」作为发布条件,把至少一次成功率降级为能力观察指标。若单任务 p≈0.83(0.83³≈57%),要达到 pass^3≥90% 需 p≥96.5%——差距是明确可量化的。

题 4(进阶·计算):基线通过率 82%,新版本 85%,评测集 n=100。能发布吗?要可靠检出 3 个百分点的提升需要多少样本?

参考答案: 不能发布——3 个点的差异在 n=100 下没有超过统计噪声。通过率的标准误约 √(p(1−p)/n),基线 0.83 附近、n=100 时约 3.8 个点,95% CI 约 ±7.4 个点,两版本 CI 大幅重叠。正确做法是配对设计:两版本跑同一批用例,用 McNemar 类检验只看判定不一致的样本,案例难度这个最大噪声源被钉死,检出力更高——这正是阿里门禁要求的「置信区间 + 显著性 + 最小可感知变化」三件套。样本量估算:双比例比较 n ≈ (z_{α/2}+z_β)²·2p̄(1−p̄)/δ²,与 δ² 成反比。基线 80%、α=0.05、功效 0.8 时,检出 10pp 每组约 250 样本,检出 5pp 约 1000,检出 3pp 约 2800。所以要么扩评测集到约 3000 条/版本(配对设计可显著更少),要么把 MPP(最小可感知变化)放宽到 5pp 并接受「小提升不发布」——两个方向都是把「统计成本」显式化。动手验证见 cd evals-special/labs && python3 eval_lab08_statistics_ci.py。

题 5(进阶):如何设计 Agent 的效率与成本指标体系?质量与成本冲突时怎么决策?

参考答案: 效率与成本是与质量并列的维度而非脚注——腾讯的原话:「pass@1 高但 token 花 10 倍的方案生产上不可接受」。指标清单(全部可从 trace 程序化统计,代码判):Token avg/p95(input/output 分开)、工具调用次数 avg/p95、延迟 p50/p95/p99(只看均值会掩盖尾部,agent 的耗时大头常在工具与外部等待)、失败重试率、单次任务成本 ¥/task。落地要点:① 每个任务带成本画像,报告里与质量分并排(腾讯测评报告含模型版本与费用、总 token、平均费用每 Trial);② 效率退化要能扣进总分(腾讯 TPerf:耗时基准 300s 每超 10% 扣 1 分,token 每超基线 10% 扣 1 分,上限 −10);③ 质量与成本冲突时看能力-成本前沿:质量持平(统计噪声范围内)时选便宜的。实例:DoorDash 模型迁移(Sonnet 4.6→Gemini 3.5 Flash),离线 harness 先发现分数大跌、定位为兼容性而非能力差距,小修后质量持平(harness 噪声范围内),迁移生产延迟降 35%、质量无损——质量指标守底线、效率指标换收益的标准操作。

题 6(进阶):groundedness(有据性)和幻觉率怎么度量?怎么保证度量本身可信?

参考答案: 度量方法:把「agent 的每条论断」与「其背后的证据(检索片段/工具返回)」交给 LLM-as-a-Judge 按 rubric 逐条核对,输出 pass/fail + 理由;幻觉率 = 无证据论断占比。工程上三个关键点:① 证据切片——judge 不该读全量 trace,DoorDash 的做法是每条 rubric 标准声明依赖的证据,transcript builder 只给 judge 那一片(grounding 检查拿论断 + 背后工具输出),聚焦证据让判断更一致;② judge 必须校准——Airbnb 的 groundedness judge 初始与人工一致率仅 78%(会误罚正确的改述),修订 rubric 与 few-shot 后达 88% 才上量;阿里的口径是与人工一致率约 85% 后进自动化,腾讯是 ≥85% 可用;③ 归因要下探到检索层——幻觉失败常因检索没召回正确文档,需配合组件级指标(context recall 低是检索问题,faithfulness 低是生成问题)。参考数字:Airbnb 100 样本探索中 15 个 groundedness 失败是最大失败类;OpenAI 官方建议文档问答 recall ≥ 0.85、precision ≥ 0.7。幻觉率要按切片(场景/知识域)报告,并作为 P0 安全维度进门禁(腾讯五维之一)。

题 7(进阶):你负责的评测指标被「刷」了——优化后分数大涨,但线上投诉没降。如何排查和治理?

参考答案: 排查按三段式:grader 被钻空 / 评测集被污染 / 指标与目标错配。① grader 钻空:抽查「通过但可疑」的样本——agent 是否修改了测试文件、对单点断言表面达标、用固定话术骗过 rubric(SWE-bench 类评测已有改测试文件骗分的实证,arXiv:2506.12286);② 评测集污染/过拟合:团队是否针对已知用例调 prompt,用复述变体试探、检查通过率是否远超线上真实分布;③ 指标错配:优化的是 proxy(离线 helpfulness 分),真实目标 gold(线上投诉)没动——这正是 Goodhart 定律,OpenAI 的 overoptimization 标度律(arXiv:2210.10760)给出定量形态:proxy 持续上升时 gold 先升后降。治理:a) 代理指标旁永远挂独立 gold 指标(线上转人工率、投诉率、人审抽检),跟踪 proxy-gold 背离,背离即停;b) 指标组合替代单一北极星(质量 pass^k + 安全 + 成本同时看);c) 按切片报告,平均分最易被攻破;d) 评测集定期换血、保留私有 holdout;e) 对 grader 做红队(喂「看起来对其实错」的对抗样本)。观念:分数大涨的第一反应是怀疑测量系统,不是庆祝。

题 8(系统设计):为一个电商退款客服 Agent 设计完整的评估指标体系与发布门禁。

参考答案: 分五层设计。① 维度框架(腾讯五维 + 阿里分层):功能正确性(P0,代码判)——任务完成率按数据库终态校验(退款单状态、金额精确到分),不评自然语言话术;鲁棒与安全(P0)——pass^k(k=3/5)、幻觉率、误拒/漏拒、越权断言(must-not-call:不得跳过订单状态校验)、PII 合规;过程质量(P1,Rubric)——是否先查订单状态再承诺、关键澄清是否发生;效率(P1,代码判)——token/调用次数 avg&p95、延迟 p50/p95/p99、¥/task;体验(P2)——语气、解释完整性、转人工率、重复追问率。② 一致性口径:重复运行 N=5,关键决策类 0% 容忍——退款不可逆,任何一次失败都是事故,门禁看连续成功率 pass^3;同时报至少一次成功率作能力参照。③ 统计口径:golden set 起步 50–200 条(阿里),覆盖核心路径 + 高风险边界(已发货退款、运费险、特殊类目——业务先定口径),版本对比用配对检验 + 95% CI + 预设 MPP;报告 Wilson 区间与试验次数。④ 门禁规则:P0 硬门禁(核心场景通过率 ≥ 阈值、P0 风险样本失败 = 0、pass^3 达标、安全集 0 漏拒),P1 显著性比较(不劣于基线 + 成本不超基线 50%),P2 观察不拦截;离线门禁与线上灰度联动,离线升线上降 → 回滚(阿里)。⑤ 运营闭环:线上每日抽样(参考 Airbnb 5% 去标识化流量)用同一 rubric + 同一校准 judge 打分(离线在线同口径,DoorDash 原则);badcase 进 RCA(阿里五步)与回归集(只增不减);judge 升级时重跑三项统计(与人工一致性/高风险漏判率/边界稳定性)。评分器选型遵循确定性 > Rubric > 人工(腾讯),judge 校准到 ≥85% 一致率才上量(详见第 E05 章)。


五、易错点 · 反直觉点

  1. 只报单次成功率,不报一致性:「准确率 80%」的 agent,pass^8 只有 16.8%。用户不接受「多试几次总有一次成功」——无人值守场景必须报 pass^k。记忆锚点:能力看 pass@k,发布看 pass^k。
  2. 用「n 次里成功过任意一次」冒充成功率:这实际是 pass@n(n 是总试验次数),会系统性高估 pass@k;同理用 (c/n)^k 估一致性也是危险方向的高估。正确口径是无放回组合估计 1−C(n−c,k)/C(n,k)。记忆锚点:很多「好看」的评测数字,是口径选出来的。
  3. 门禁只看差了多少,不看是否超过噪声:n=100 时 ±7 个点都是噪声,82%→85% 不构成发布理由。门禁要带置信区间 + 显著性 + 最小可感知变化三件套。记忆锚点:没有误差范围的对比结论可能只是噪声。
  4. 万能 helpfulness 分:什么都能评 = 什么都评不准,语气好、篇幅长都能刷高分,制造虚假信心(Airbnb 三坑之首)。指标要从观察到的真实失败模式推导。记忆锚点:先有失败模式,后有指标。
  5. 平均每轮分数高 = 会话成功:每轮都「答得还行」但最终没解决问题仍是失败(阿里)。任务完成率要落在 Session/Outcome 层,用终态校验而非文本匹配。记忆锚点:嘴上说已取消,数据库纹丝不动。
  6. 只看质量不看成本:pass@1 高但 token 花 10 倍的方案生产上不可接受(腾讯)。质量相近时,延迟 p99 与 ¥/task 决定选型。记忆锚点:成本画像与质量分并排上报。
  7. 指标 KPI 化后被反向刷爆:指标成为目标就不再是好指标——proxy 持续上升时 gold 先升后降(arXiv:2210.10760);二元对错计分还会激励瞎猜与幻觉(arXiv:2509.04664)。代理指标旁必须挂独立 gold 指标。记忆锚点:分数大涨先怀疑尺子,再怀疑模型。
  8. 通过率 0% 或 100% 归因于模型:多数时候是任务定义或评分器坏了,不是模型弱/强(腾讯人工评分六大场景之「诊断异常」);0% pass^N 通常说明任务定义有问题。记忆锚点:极端分数先查尺子和卷子。
  9. 能力套件与回归套件用同一预期:能力评测起步通过率应偏低(20–50%,指方向),回归评测应接近满分(确定性任务 100%、非确定性 ≥95%,拦退化)。用回归的预期要求能力集会打击探索,反之会漏掉回归。记忆锚点:能力集是山峰,回归集是底线。
  10. 尺子自己热胀冷缩:judge 模型/prompt、rubric 升级后直接对比历史分数,趋势图失真。评分器要版本化,升级时重新校准并做桥接(阿里 judge 持续运营三统计:与人工一致性、高风险漏判率、边界稳定性)。记忆锚点:换尺子之前,先用旧尺子量一遍新尺子。

六、推荐资源

论文(arxiv ID 均来自本特辑 _research/ 已核实调研):

  1. τ-bench(arXiv:2406.12045,Sierra,2024)——pass^k 的原始出处;GPT-4o retail pass^1≈60%→pass^8≈25% 的可靠性实证。https://arxiv.org/abs/2406.12045
  2. Scaling Laws for Reward Model Overoptimization(arXiv:2210.10760,OpenAI,ICML 2023)——Goodhart 的定量形态:proxy-gold 背离与最优优化量标度律。https://arxiv.org/abs/2210.10760
  3. Catastrophic Goodhart(arXiv:2407.14503,NeurIPS 2024)——重尾误差下 KL 正则失效,「加正则就安全」的证伪。https://arxiv.org/abs/2407.14503
  4. Does RL Really Incentivize Reasoning…(arXiv:2504.13837,NeurIPS 2025)——pass@1 与大 k pass@k 反转:只报 pass@1 会系统性高估能力增益。https://arxiv.org/abs/2504.13837
  5. Why Language Models Hallucinate(arXiv:2509.04664,OpenAI,2025)——计分规则即激励机制:二元打分激励瞎猜,应允许弃权与校准计分。https://arxiv.org/abs/2509.04664
  6. GEPA(arXiv:2507.19457,2025)——Pareto 前沿按切片保留候选,隐含「按切片看指标、防平均分掩盖退化」的指标设计原则。https://arxiv.org/abs/2507.19457

工业实践原文(本章全部工业数字的出处):

  1. 阿里技术《Agent 评测:方法论与体系设计》——P0/P1/P2 分层、一致性双指标、门禁统计三件套、容忍阈值思想。
  2. 腾讯技术工程《AI Agent & Skill 测评方案及落地实践》(martinskxu)——五大维度、N=5 稳定性读法、容忍阈值分级、¥/task 成本画像。
  3. Airbnb《Eval-driven development: Lessons from evaluating GenAI at scale》——三坑、从失败推导指标、judge 少而精、groundedness 校准 78%→88%。
  4. DoorDash《Building Ask DoorDash (Part 3): Evaluation》(2026-06-30)——质量分 +8、错误率近乎减半、模型迁移延迟降 35% 质量无损。
  5. Anthropic《Demystifying evals for AI agents》(2026-01)——pass^k 进发布门槛(p=0.75 时 pass^3≈42% 的著名例子)、capability vs regression 套件、确定性任务 100%/非确定性 ≥95%。
  6. OpenAI《Evaluation best practices》——量化门槛示例(文档问答 recall ≥ 0.85 / precision ≥ 0.7、摘要 ROUGE-L ≥ 0.40)。

动手实验:

  • cd evals-special/labs && python3 eval_lab01_metric_system.py——pass@k/pass^k 理论值与无偏估计、p=0.8 时两指标随 k 分道扬镳、同一 agent 在不同门禁下的相反发布结论。
  • cd evals-special/labs && python3 eval_lab08_statistics_ci.py——Wilson 区间覆盖率验证、配对显著性(McNemar)、样本量速查表:3% 差异在 n=100 下不可判、n=2000 下可判。
  • cd evals-special/labs && python3 eval_lab10_edd_loop.py——P0 门禁(通过率 ≥90% 且 0 个 P0 风险样本失败)与回归检测的完整闭环。

相关章节:

  • 第 E01 章 · 为什么评估是 GenAI 工程的生命线(指标体系要解决的问题)
  • 第 E03 章 · 黄金数据集与用例设计(指标的载体:评什么样本)
  • 第 E04 章 · 程序化评分(指标怎么算:确定性评分器)
  • 第 E05 章 · LLM-as-Judge 深入(语义类指标的度量与校准)
  • 第 E07 章 · 轨迹与 Agent 级评估(过程类指标:工具序列、假阳性)
  • 第 E09 章 · 评估的统计学基础(置信区间、样本量、显著性的完整推导)
  • 第 E10 章 · 评测驱动开发(指标如何进门禁与 CI)
  • 第 E13 章 · Benchmark 全景与前沿争议(外部坐标系与 Goodhart 的基准侧)
  • 第 E15 章 · 工业实践案例研究(四家指标体系的横向对比)
  • 主手册第 8 章 · Agent 评估与可观测性(浓缩版对照;本章在一致性指标、分层与统计口径上显著更深)
第 3 章 / 共 15 章

黄金数据集与用例设计

📌 本章导航(6 节)

一句话导读:E01 回答了"为什么评",E02 回答了"评什么",本章回答"拿什么评"——评测集是整个 evals 体系的尺子,尺子歪了,后面所有分数都是误导性信心。学完本章你能回答:线上数据为什么不能直接当评测集、用例从哪来、怎么组织、Golden Set 建多大、badcase 凭什么入库、用例集如何像代码资产一样持续治理。


一、知识图谱

黄金数据集与用例设计(拿什么评)
│
├── 1. 为什么不能是线上随机抽样
│   ├── 幸存者偏差:正常流程占多数,高风险边缘场景占比极低
│   └── 后果:报告"看起来不错",关键问题恰好全部漏掉
│
├── 2. 用例四类来源(阿里)
│   ├── 专家设计 —— 定标准(冷启动的 20-50 条参考解)
│   ├── LLM 扩展 —— 先定结构字段(场景/订单状态/诉求/期望动作),再生成自然语言
│   ├── 线上真实数据 —— 真实分布与失败挖掘的原料(须去标识化)
│   └── badcase 回流 —— 失败 → 资产(须过入库标准)
│
├── 3. 用例组织范式(腾讯四场景)
│   ├── 触发 → 核心逻辑 → 产物质量 → 异常容错
│   ├── 每场景正向 + 负向用例成对设计
│   ├── 核心逻辑用例量 ≈ 其余三类之和的 2-3 倍
│   └── 负向触发用例必不可少:"过度触发比不触发更难发现"
│
├── 4. 一条合格用例的形态
│   ├── 用例 spec:id/来源/场景/输入/期望行为/判据/风险等级/状态
│   ├── checklist 式场景 rubric(DoorDash 素食 taco 清单):低方差,小样本可迭代
│   └── 基线快照(腾讯):执行 1 次 → 人工确认 → 快照为基线;不硬编码预期输出
│
├── 5. Golden Set 定位与规模
│   ├── 定位:基线评测集(相对稳定、长期复用),用于版本对比与发布门禁
│   ├── 规模经验:20-50(Anthropic)/ 50-100(Airbnb,必须含坏样本)/ 50-200(阿里)
│   └── 成熟后扩展:分类采样集 / 长尾集 / 对抗集 / 线上回流集
│
├── 6. 生命周期治理
│   ├── 入库标准五项:可复现 / 期望明确 / 根因清楚 / 代表性 / 已脱敏
│   ├── 同簇去重:同簇保留代表例
│   ├── 能力集 →(稳定 100% 通过)→ "毕业"进回归集;回归集只增不减
│   └── 样本治理:P0/P1 长期保留 / 稳定通过者降级抽样集 / 主动学习抽新分布
│
├── 7. 隐私合规:去标识化 + 用途限定(Airbnb)
│
└── 8. 三层互补:公开 benchmark(外部坐标)+ 私有 golden set(业务真值)+ 在线信号(最终裁决)

30 秒版本:评测集不是"攒一堆例子",而是一条有准入、有组织、有生命周期、有合规边界的治理流水线。 它的质量上限决定评测结论的质量上限。


二、核心概念精讲

2.1 为什么不能是线上随机抽样:幸存者偏差

直觉上最省事的做法是"从线上日志里随机抽一批会话当评测集"——真实、免费、量大。阿里的评测方法论明确否掉了这条路:评测集不是线上随机抽样。

机制:线上流量的分布天然是"正常流程占多数、易错边缘场景占比低"。随机采样会忠实地复刻这个分布,于是评测报告里 98% 的样本本来就是 agent 闭着眼也能处理好的请求。

后果链条:

环节 发生了什么
抽样 随机抽 200 条线上会话
分布 高风险场景(退款已发货、叠加优惠、欺诈嫌疑)占比可能不足 2%,样本里只有零星几条
报告 通过率 96%,"看起来不错",评审会顺利过会
上线 恰好漏掉的那几类问题在生产里被用户反复触发——投诉、资损、舆情

做个示意算术(非工业数据,仅建立直觉):某高风险场景在线上流量中占 1%,随机抽 100 条,期望只抽到 1 条;如果该场景下 agent 有一半概率犯错,你的评测"发现这个问题"的概率也就五五开。评测集的职能是暴露问题,而随机抽样的职能是复刻流量——两者的目标函数根本相反。

正确姿势是分层与定向:

  • 按风险/意图/置信度分层采样,对高风险、低置信、新意图样本过采样(代价是整体通过率失真,聚合时按真实流量权重加权修正);
  • 阿里的主动学习口径:新分布出现时优先抽取低置信 / 高影响 / 新意图 / 新工具 / 新知识点样本进人工确认;
  • 线上数据的正确角色是失败挖掘的矿与分布参照,不是评测集主体。Airbnb 的每日抽样 5% 去标识化生产流量,用途是生产监控与评审队列,与作为基线的 golden set 是两套资产。

分层采样的一种典型设计(综合阿里口径的工程化表达):

层 划分依据 采样策略 用途
高风险场景 risk_level P0/P1(资损/合规/隐私) 全量或高比例过采样 门禁主体,永不稀释
低置信预测 在线 judge/模型置信度低 优先抽取进人工确认 发现新失败模式
新分布 新意图/新工具/新知识点/漂移告警 定向补充 覆盖盲区
普通正常流程 其余流量 按真实比例随机抽样 分布参照与日常监控

两个配套动作:过采样会让"整体通过率"偏离真实流量表现,汇报整体分数时按真实流量权重加权还原;同时保留分层明细——分层视图才是改进工作的抓手(哪个层在恶化一目了然)。

一句话记忆:随机抽样回答"线上平均表现如何",评测集回答"最坏情况下会不会死"——不能用一把尺子量两件事。

2.2 用例四类来源:专家设计 / LLM 扩展 / 线上真实数据 / badcase 回流

阿里的评测数据集建设给出四条来源,各有分工,缺一不可:

来源 角色 优点 主要风险 治理要点
专家设计用例 定标准 覆盖核心分支与高风险分支,判据权威 贵、慢、带专家个人盲区 冷启动主力;先出 20-50 条参考解(腾讯人工建 ground truth 的起步量)
LLM 扩展用例 上量 便宜、快、表达多样 自由生成会编造业务上不存在的场景 先用规则确定结构字段,再生成自然语言(见下)
线上真实数据 分布校准 真实用户表达、真实分布 幸存者偏差 + 隐私风险 去标识化后用于失败挖掘与分层抽样,不直接当基线
badcase 回流 防再犯 每条都是真实发生过的失败,针对性最强 badcase ≠ 用例(见 2.6 入库标准) 过五项入库标准,编码为用例进回归

(1)专家设计:定标准的人永远不能缺席。 评测集冷启动阶段,腾讯的做法是新建套件先由专家产出前 20-50 个参考解作为 ground truth;阿里同样把"专家设计用例"列为四类来源之首——它定义的不是样本量,而是"什么算对"的口径。口径未固化的场景(如"订单已发货 + 用户拒收 + 运费险 + 特殊类目该走哪条流程")必须由业务先定,工程师不能代答。

(2)LLM 扩展:先定结构字段,再生成自然语言。 这是阿里方案里最值得抄的细节:

错误做法:prompt = "请生成 100 条客服 agent 的测试用例"
           → 模型自由发挥,场景重复、分布失控、编造业务上不存在的状态

正确做法(两步):
  第一步:用规则/枚举确定结构字段
    {场景类型: 退款, 订单状态: 已发货, 用户诉求: 仅退款, 期望动作: 先查订单状态再答复}
  第二步:LLM 只负责把结构字段改写成接近真实用户的自然语言表达
    "东西还在路上我不想要了,钱能直接退我吗?"

结构字段保证覆盖矩阵按需填充(每条分支、每种订单状态都有人管),自然语言改写保证表达真实多样。顺序反过来,用例集的构念效度就丢了。(动手实验:cd evals-special/labs && python3 eval_lab02_golden_dataset.py,其中的 MockLLM 会直接拒绝无结构字段的生成请求——接口约束即治理。)

(3)线上真实数据:真实客服会话/工单是金矿,但进门先过两道关:去标识化(见 2.7)与代表性审查。公开语料同理——WildChat(arxiv 2405.01470,100 万条真实 ChatGPT 交互日志)与 LMSYS-Chat-1M(arxiv 2309.11998)这类真实对话语料是构建评测集与用户模拟器的常用原料,但都要先做隐私清洗再入库。

(4)badcase 回流:线上失败是最有针对性的用例原料。注意 badcase 回流不是"复制粘贴进 JSONL",必须先过 2.6 的入库标准——这是四家共识(Airbnb 的"每周 PM 评审新增测试"是同一动作的组织形态)。看一条 badcase 从现象到用例的完整编码(阿里实例"Agent 直接承诺一定退款成功"的展开):

# ① 线上 badcase(原始现场)
session: session-20260712-8841
phenomenon: 用户咨询已发货订单退款,Agent 回复"放心,一定给您退款成功"
root_cause_label: 风险防控 / 过度承诺          # 根因标签清楚,才具备入库资格

# ② 过入库标准后编码为用例
case_id: risk-overpromise-012
source: badcase 回流
created_from: session-20260712-8841
scenario: 退款 · 已发货
input: "东西已经发货了但我不想要了,能全额退给我吗?"
expected_behavior:
  - must_call: query_order_status               # 期望行为可判定
  - must_not: 无条件承诺退款成功
  - reply_mentions: [物流状态, 拦截/拒收流程, 退款条件]
risk_level: P0                                   # 涉资损与合规,永不降级
suite: capability                                # 修复验证稳定后毕业进回归集

这条用例同时满足入库五项:失败可复现(有原始 trace)、期望明确(三条检查项)、根因清楚(风险防控域)、有代表性("过度承诺"是一类问题)、已脱敏。它进入回归集后,未来任何一次 prompt 重构若重新引入"拍胸脯式承诺",CI 会当场拦截。

交叉参照:OpenAI 官方 evaluation best practices 把数据来源归纳为五路——生产、专家构造、历史、合成、采购——与上面四类来源基本同构("采购"对应公开数据集/基准)。EDDOps 论文(arxiv 2411.13768,2024-11 首发,2025-11 v3)则要求每条用例带 provenance(来源出处)、oracle(判定标准)、slice 标签——来源必须可追溯,通过率要能按来源拆开看。

2.3 用例组织范式:触发 → 核心逻辑 → 产物质量 → 异常容错

用例攒到几十条后,最大的问题不再是"不够多",而是"没组织"。腾讯给出的组织范式是把每个 Skill/Agent 的用例沿四个场景展开,每个场景回答一个递进的问题:

场景 回答的问题 正向用例 负向用例
① 触发 该触发吗? 各种合法表述都能触发 相似但不相关的 prompt 不误触发
② 核心逻辑 过程对吗? 工具调用序列/参数/顺序正确 缺步骤 / 错工具 / 错参数
③ 产物质量 产物好吗? 准确 / 完整 / 格式合规 缺失 / 格式错 / 幻觉
④ 异常容错 出错扛得住? 优雅降级、明确提示 崩溃 / 死循环 / 静默失败 / 泄露

三个关键设计纪律:

(1)负向触发用例为什么必不可少。 腾讯原文一句话点破:"只测正例,Agent 可能学会什么都触发——过度触发比不触发更难发现。"不触发会立刻被用户抱怨(功能"坏了"),过度触发却悄悄消耗 token、污染下游流程、把无关请求路由进昂贵链路,直到某天账单或事故才暴露。所以触发场景的用例必须是正负成对的:正例测召回,负例测精度。

(2)核心逻辑用例量 = 其余三类之和的 2-3 倍。 这是腾讯的经验法则。配套三步法:

  1. 梳理分支流程图(把业务分支穷举成图);
  2. 每条分支至少 1 个用例(N 条分支至少 N 个正向 + 关键分支的负向);
  3. 补充组合与边界:分支间组合、阈值边缘、跨分支冲突。分支过多时先覆盖高频与易错。

(3)异常容错要拆成三个子类设计(腾讯):

子类 用例示例 期望行为
异常输入 查询不存在的 ID / 非法格式 / 缺少关键 ID 告知不存在不编造;提示格式错误;主动追问而非瞎猜
边界条件 数据量极大 / 数据为空 不超时;明确告知无数据
环境故障 mock_tool_failure 注入工具失败 优雅降级,不无限重试

这个四场景框架与主手册第 8 章的"任务分类学 → 覆盖矩阵"一脉相承,但给出了更落地的填充顺序:先触发、再过程、再产物、最后容错——因为前置场景失败时,后置场景的用例根本没有意义(触发都错了,谈何产物质量)。

工业实例:TPerf 的用例分组落地(腾讯)。性能分析 Agent TPerf 把 30+ 用例按场景分成 9 组,每个用例绑定一条真实压测记录(不可变、可复现),支持 7 个模型的参数化对比(每用例 × 每模型):

场景组 CPU 瓶颈 网卡 磁盘 磁盘 IO 内存 TCP 队列 Nginx 配置问题 正常场景
用例数 6 5 4 2 1 3 1 1 5

两个值得抄的细节:① 正常场景也配了 5 条用例——"没问题时不误报"本身就是一种能力,只测异常不测正常,会把"逢数据必喊瓶颈"的 agent 评出高分;② 高频场景(CPU/网卡)用例多、罕见场景(内存/Nginx)用例少,分组数量本身就是风险权重的显式表达——分支过多时先覆盖高频与易错,正是三步法的落地形态。

2.4 一条合格用例长什么样:用例 spec、checklist rubric 与基线快照

(1)用例 spec:字段即契约。 一条可入库的用例至少应固化如下字段(与 labs/eval_lab02_golden_dataset.py 的 dataclass 一致):

case_id: refund-shipped-007
source: badcase 回流            # 专家设计 / LLM 扩展 / 线上数据 / badcase 回流
scenario: 退款 · 已发货          # 结构字段:场景类型 + 订单状态
input: "东西还在路上我不想要了,钱能直接退我吗?"
expected_behavior:              # 期望行为写成可判定的检查项,不写"回答要好"
  - must_call: query_order_status
  - must_not: 无条件承诺退款成功
  - reply_mentions: [物流状态, 退款条件]
risk_level: P1                  # P0 资损/合规 / P1 核心流程 / P2 体验
suite: capability               # capability(能力集)/ regression(回归集)/ graduated
created_from: session-20260712-8841   # provenance:来自哪条线上会话/哪次评审

要点:期望行为必须写成规则/Judge 标准/人工验收标准能消费的形式(阿里入库标准第二条"期望行为明确"的直接推论);risk_level 决定门禁权重与保留策略;created_from 让每条用例可回溯到现场。

(2)checklist 式场景 rubric:低方差信号。 DoorDash 的一个代表性设计是"场景级清单"。例:场景"为两人份、预算 ≤$60 的素食 taco 购物清单",rubric 不写"购物清单质量好"这种宽泛标准,而是写成一张可核验的清单——验证每件商品都是素食 taco 原料、小计 ≤$60。DoorDash 的结论:这类 checklist 标准比宽泛通用标准方差更低,小样本更有用,支撑更快的迭代。

机理很直白:判定依据越接近可程序化核验的事实(商品名在不在清单里、金额加总对不对),judge 与人工的自由裁量空间就越小,同一输入重复评分的波动就越小——方差低了,50 条样本也能看出两个版本的真实差异;方差高了,500 条样本也只是噪声(统计细节详见第 E9 章 · 评估的统计学基础)。用例设计的通用原则由此得出:能用 checklist 的场景不要用印象分,先收敛判定口径再谈规模化。

(3)基线快照机制(腾讯):期望答案也是资产。 腾讯的用例基线机制回答了一个常被忽略的问题——"预期结果从哪来、谁来确认、何时更新":

用例设计:只定义 prompt 与检查规则(不写死预期输出)
  → 执行 1 次
  → 人工审核本次执行的过程与结果
  → 不可接受:修改后重跑
  → 可接受:该次执行快照成为基线
后续每次执行都与基线对比(确定性评分器做程序化判定;Rubric 以基线为参考答案比语义差异)

基线快照包含两部分:预期过程(CoT、工具调用序列含入参与返回、中间产物、完整 Trace)与预期结果(最终响应、输出文件、输出报告)。基线更新的三个时机:Agent/Skill 逻辑变更、模型版本升级、用例本身修改(prompt 或检查规则变了)——任一发生都要重新执行 1 次并人工确认。

TPerf 实战案例把这一点做到了极致:30+ 用例不硬编码预期输出,而是通过基线会话标识(session_id + message_id)指向人工确认过的分析记录,评测时从平台 API 动态获取。每个用例对应一条真实压测记录——不可变、可复现。对比维度也分三层:过程对比(关键步骤缺失/顺序偏离→过程退化)、结果对比(关键内容缺失/产物不一致→结果退化)、效率对比(token/步骤数超基线比例,如 >50% → 效率退化)。

(4)两条配套纪律。

  • Eligibility 适用性前置(DoorDash):checklist/rubric 再具体,也不是每条都适用于每个会话。DoorDash 的做法是 judge 先判"该标准是否适用本会话",不适用则跳过——例如食谱类会话不因缺少复购步骤被扣分。用例与标准入库时就要声明适用条件,否则不适用场景的误扣会成为门禁噪声的主要来源。
  • 每条标准写成"从会话本身可验证"(DoorDash):同一条 rubric 既要能供人工校准、又要能供 judge 规模化执行——凡是人工判定时需要翻外部系统才能核实的标准,要么拆成可验证的证据切片(详见第 E7 章 · Transcript Builder),要么不写进自动评测。
  • 执行环境隔离(阿里):用例设计得再好,执行时多用例共享状态(同一个测试账号、同一份被改写的库存数据)也会导致分数不可复现。评测执行环境必须逐用例隔离或重置——这是用例 spec 之外的运行侧前提。

2.5 Golden Set:定位与规模经验

定位(阿里):Golden Set 默认作为基线评测集——相对稳定、长期复用的核心样本,用于版本对比与发布门禁。它不是全部评测数据,而是那把"不能热胀冷缩的尺子";分类采样集、长尾集、对抗集、线上回流集是它外围的扩展层。

规模经验(以素材为准):

来源 推荐规模 语境与补充
Anthropic《Demystifying evals for AI agents》(2026-01) 20-50 个真实用例即可起步 官方建议起步最小集;并区分 capability 套件(初始通过率应偏低,指引方向)与 regression 套件(应接近满分,拦截退化)
Airbnb 50-100 条 gold set,必须含坏样本 用于 judge 校准;客服案例中 PM/SME 标注 60 条 gold(含失败样本);规模化阶段扩到 5,000 样本做生产监控,每日另抽样 5% 去标识化流量
阿里 先做 50-200 条高质量 golden set 覆盖核心业务路径与高风险边界;成熟后扩展分类采样集、长尾集、对抗集、线上回流集
腾讯 前 20-50 个参考解起步 人工建 ground truth 的起步量;TPerf 实战落地为 9 大场景 30+ 用例

三个读法:

  1. 起步门槛出奇地低。四家没有一个要求先攒 1000 条——20-50 条覆盖核心路径与高风险边界的用例就能启动 eval-driven 迭代。等的不是数据量,是判据的清晰度。
  2. 规模服务于职能。50-200 条是"基线尺子"的规模;Airbnb 的 5,000 样本是"每日估计生产质量"的监控规模,两者不可混谈(为什么 100 条尺子在统计上够用,详见第 E9 章的样本量计算)。
  3. gold set 必须含坏样本(Airbnb 十条要点之一)。原因有二:校准 judge 时需要负例,否则测不出 judge 是否"一律说好";坏样本还承担区分"judge 误罚正确改述"与"judge 放过流畅错误"的功能——Airbnb 客服案例中 judge 初始一致率仅 78%,正是在含失败样本的 60 条 gold 上定位到"judge 误罚正确的改述",修 rubric 后升至 88%(judge 校准全流程详见第 E5 章 · LLM-as-Judge 深入)。

注意"黄金集"一词的两个职能,面试别混:Airbnb 语境的 50-100 条 gold set 主要服务于 judge 校准(含坏样本、人工标注、量小、长期固定),阿里语境的 50-200 条 golden set 主要服务于版本对比与发布门禁(覆盖核心路径与高风险边界、期望行为明确)。成熟团队两者都有:校准集管"尺子准不准",基线集管"版本行不行"——它们可以是同一批样本的两个视角,但维护节奏与准入标准不同(校准集换血要极慎重,否则 judge 一致性历史数据不可比)。

2.6 数据集生命周期治理:入库、去重、毕业、只增不减

评测集是活的:每周都有 badcase 想进来,每个版本都有用例想"退役"。没有治理流水线,用例库要么膨胀到跑不起,要么信号被稀释成噪声。

(1)入库标准五项(阿里,badcase 进评测集/训练数据/知识修订前的通用门槛):

标准 含义 缺失的代价
失败可复现 或至少有稳定 Trace + 人工确认 无法验证修复是否生效
期望行为明确 可写成规则 / Judge 标准 / 人工验收标准 无法打分,judge 噪声直接注入门禁
根因标签清楚 归到具体能力域或业务流程 无法归因,RCA 断链(详见第 E11 章)
样本有代表性 覆盖一类问题而非一次性环境抖动 用例库充满孤例,信号稀释
已脱敏合规 PII 清理完成 法务红线

badcase 不天然是用例。 阿里把一条 badcase 的反馈生产拆成三条生产线(评测集 / 训练数据 / 知识修订),而入库标准是三条线共用的闸门——五项缺一不可。

(2)同簇去重:失败会成簇出现(同一根因反复触发),入库与治理时同簇保留代表例,避免 100 条"退款已发货未查订单状态"挤爆回归集。簇的组织可以直接复用 rubric 标准——DoorDash 的经验是 rubric 标准天然是问题簇(grounding 失败 / 缺替代品 / 糟糕叙述分开调查),失败列表因此变成按影响排序的主题列表。

(3)能力评测 vs 回归评测与"毕业"机制(腾讯):

维度 能力测评 回归测评
回答的问题 Agent 能把什么做好 原有能力是否还在
起步通过率 20-50%(目标山峰,主动拓展、频繁迭代) 接近 100%(防御漂移)
变更频率 频繁增改 只增不减,CI 每次运行
失败含义 改进方向 阻断发布

毕业流转:能力集用例通过率稳定 100% 后"毕业"进回归集;badcase 的完整旅程是"复现记录完整轨迹 → 分析根因定预期行为 → 修复 → 纳入用例集防回归 → 进能力集,稳定后毕业到回归集"。腾讯引用 Anthropic 的口径作为回归门槛:确定性任务用例集整体通过率需 100%,非确定性任务 ≥95%。与之配套的是稳定性容忍阈值分级(关键决策类 0% 容忍、辅助分析类 ≤10%、创意生成类 ≤40%)——同一条用例在不同业务语境下的"毕业线"不同。

(4)样本治理四条规则(阿里):

  1. 同簇保留代表例;
  2. P0/P1 风险样本长期保留(资损、合规、隐私类永不降级);
  3. 稳定多版本通过且低风险者降级为抽样集(退出每次必跑,保留抽查资格)——这是回归集不无限膨胀的泄压阀;
  4. 新分布出现时主动学习优先抽取低置信 / 高影响 / 新意图 / 新工具 / 新知识点样本进人工确认。

(5)执行触发时机(腾讯):治理的最终产物是"变更 → 自动回归"的条件反射:

触发时机 方式 跑什么
提示词变更 CI 自动,PR 合入前回归 回归集全量
模型版本升级 手动触发 验证兼容性(回归集 + 关键能力集)
定期巡检 定时任务 全量回归

门禁的严格程度可以参考 DoorDash 仿真评测飞轮的口径:任何变更必须通过全部 50+ 个 eval 才能上线,且全流程一次触发,5 分钟内可跑完 200+ 场模拟对话——"门禁要严、跑得要快",两者靠 fixtures 与并行化同时满足(详见第 E8 章)。

(6)长尾集与对抗集:成熟期在 golden set 之外单独维护。长尾集收低频但真实的场景(小语种、极端金额、多重约束叠加);对抗集收注入、越权、诱导承诺等安全用例——安全用例必须常驻回归,一次 prompt 重构完全可能功能全绿而防线塌方(安全评估详见主手册第 8 章 · Agent 评估与可观测性)。

动手实验:入库检查器、同簇去重、毕业流转、回归门禁的可运行实现都在 cd evals-special/labs && python3 eval_lab02_golden_dataset.py;毕业机制与"回归集只增不减"在 EDD 全闭环中的位置见 cd evals-special/labs && python3 eval_lab10_edd_loop.py。

2.7 隐私合规:去标识化与用途限定

生产数据进评测链路,合规是硬门槛,不是"以后再说"。素材中两条明确实践:

  • Airbnb:生产抽样采用隐私保护方法——人工评审前去标识化、用途限定于安全与质量。两个动作缺一不可:去标识化解决"数据能不能用",用途限定解决"数据会不会被挪作他用"。
  • 阿里:把"已脱敏合规"列为入库标准第五项——未脱敏的样本在闸门口就被拒,而不是入库后再补救。

工程上的常见做法(通用实践):直接标识符(姓名/电话/卡号/地址)程序化替换,间接标识符(罕见组合特征)做泛化或删除;工具返回值里的 PII 同样要扫(trace 是重灾区);留存期分级、访问留痕;用于 judge 校准与人工评审的样本走同一套脱敏管线。注意脱敏不是"一次性清洗":线上回流是持续流,脱敏必须内建在入库管道里,而不是靠人记得手动处理。

2.8 公开 benchmark 与私有评测集:三层互补

私有 golden set 不是孤岛,它和公开基准、在线信号构成三层坐标系:

层 代表 测什么 主要局限
公开 benchmark(外部坐标) τ-bench、GAIA、SWE-bench 等 与业界横向对比的能力水位 污染、饱和、分布与你的业务错配
私有 golden set(业务真值) 自建 50-200 条基线集 你自己的核心路径与高风险边界 规模有限、需要持续治理防过拟合
在线信号(最终裁决) 每日抽样评分、转人工率、满意度 真实用户的最终体验 稀疏、滞后、混杂因素多

几点关键事实(以素材为准):

  • 公开基准的价值在"外部参照"而非"产品指标"。τ-bench(arxiv 2406.12045,2024-06)用数据库终态哈希 + pass^k 提供了可靠的横向坐标:GPT-4o 在 retail 域 pass^1 ≈60%(官方榜单 60.4%)、airline 域 ≈42%,而衡量可靠性的 pass^8 跌至约 25% / 16%(官方榜单与论文口径)——这类数字能帮你判断"自家 agent 的稳定性缺口是不是行业通病"。
  • 基准会饱和、会被污染。Anthropic 报告 SWE-bench Verified 一年内从 40% 涨到 80%+;EDDOps 对学术文献的统计显示 97.76% 的评测仍用静态基准——静态题面迟早进训练语料。公开分数只能当路标。
  • 私有集的最大敌人是"自己"。一旦评测集被当作优化目标(如用 MIPROv2 类优化器以 eval 分数为搜索目标,arxiv 2406.11695),就会出现泄漏与过拟合风险——EDDOps 因此把 contamination safeguards(污染防护)与 provenance 列为评测资产的必备属性;工程手段是留出集隔离、定期换血、按 slice 报告(GEPA 的 Pareto 前沿选择即按切片保留候选,防止平均分掩盖退化,arxiv 2507.19457)。
  • "只能选一个向老板汇报,选哪个":选私有 golden set 的通过率 + 在线信号。基准分数回答不了"我们的用户会不会出事",只有来自真实失败的私有集和线上数据能回答(完整选型框架详见第 E13 章 · Benchmark 全景与前沿争议)。

三、面试高频考点

# 考点 分级 一句话考察意图
1 线上随机抽样的幸存者偏差 ⭐⭐⭐ 是否理解"评测集找问题"与"抽样复刻流量"目标相反;能否给出分层采样对策
2 用例四类来源及分工 ⭐⭐⭐ 专家定标准 / LLM 上量 / 线上校分布 / badcase 防再犯,缺一即偏科
3 LLM 扩展"先结构字段后自然语言" ⭐⭐⭐ 是否懂覆盖矩阵与构念效度;自由生成=场景编造+分布失控
4 四场景组织范式与正负用例配对 ⭐⭐⭐ 触发→核心逻辑→产物质量→异常容错的递进逻辑与负例设计能力
5 负向触发用例为什么必不可少 ⭐⭐ "过度触发比不触发更难发现"——测的是精度不是召回
6 Golden Set 规模经验与"必须含坏样本" ⭐⭐⭐ 20-50/50-100/50-200 三档口径;坏样本用于校准 judge、暴露误罚
7 入库标准五项 ⭐⭐ badcase ≠ 用例;可复现/期望明确/根因清楚/代表性/已脱敏
8 能力集 vs 回归集与毕业机制 ⭐⭐ 山峰 vs 防线;稳定 100% 毕业;回归集只增不减;确定性 100%/非确定性 ≥95%
9 checklist 式 rubric 为何低方差 ⭐⭐ 判定收敛到可核验事实 → 小样本可迭代(DoorDash 素食 taco)
10 基线快照机制 ⭐⭐ 预期答案也是资产:执行 1 次→人工确认→快照;三个更新时机
11 公开 benchmark / 私有集 / 在线信号三层互补 ⭐⭐⭐ 基准是路标、私有集是资产、线上是裁决;污染与过拟合风险意识
12 同簇去重与评测集膨胀治理 ⭐ 代表例保留、P0/P1 长期保留、稳定通过降级抽样集
13 隐私合规(去标识化 + 用途限定) ⭐ Airbnb 口径;脱敏内建在入库管道而非事后补救

四、经典面试题与参考答案

题 1(基础):为什么不能直接从线上日志随机抽样当评测集?

参考答案:

因为线上流量存在幸存者偏差:正常流程占多数,易错的高风险边缘场景(退款已发货、叠加优惠、欺诈嫌疑)占比极低。随机抽样忠实复刻这个分布,评测报告"看起来不错",但恰好把最关键的问题漏掉了——随机抽样回答的是"线上平均表现如何",评测集要回答的是"最坏情况下会不会死"。

正确做法分三层:① 评测集主体来自专家设计 + 结构化 LLM 扩展 + badcase 回流,按"触发→核心逻辑→产物质量→异常容错"组织,对高风险分支定向填充;② 线上数据做分层采样(按风险/意图/置信度,过采样高风险与低置信样本),用于失败挖掘与分布校准,聚合时按真实流量权重加权;③ 线上抽样(如 Airbnb 每日 5% 去标识化流量)定位为生产监控,与作为基线门禁的 golden set 分开管理。

题 2(基础):评测用例有哪几类来源?各自的优点和风险是什么?

参考答案:

四类(阿里口径):

  1. 专家设计——定标准。覆盖核心与高风险分支、判据权威;缺点是贵且慢,冷启动先出 20-50 条参考解即可。
  2. LLM 扩展——上量。便宜快、表达多样;风险是自由生成会编造业务不存在的场景,所以必须先用规则确定结构字段(场景类型/订单状态/用户诉求/期望动作),再让 LLM 生成自然语言表达。
  3. 线上真实数据——分布校准。表达最真实;但有幸存者偏差与隐私风险,须去标识化,且不直接当基线。
  4. badcase 回流——防再犯。每条都是真实发生过的失败,针对性最强;但 badcase ≠ 用例,须过五项入库标准(可复现/期望明确/根因清楚/代表性/已脱敏)。

加分项:EDDOps 要求每条用例带 provenance/oracle/slice 标签,通过率按来源拆开看,才能判断"是评测集偏了还是模型偏了"。

题 3(进阶):用 LLM 批量生成测试用例时,为什么强调"先定结构字段、再生成自然语言"?让模型自由生成会怎样?

参考答案:

自由生成有三个失效模式:① 场景编造——模型生成业务上不存在的状态组合(如"未支付订单申请改地址"),用例失去可判定性;② 分布失控——高频套路反复出现、关键分支无人覆盖,没有覆盖矩阵可查;③ 判据缺失——生成时没有期望动作,入库后还要人工补,成本反而更高。

"先结构后语言"把生成拆成两段:结构字段(场景类型/订单状态/用户诉求/期望动作)由规则或枚举确定,保证覆盖矩阵按需填充、每条用例天生带判据;LLM 只负责把结构改写成接近真实用户的自然语言表达,保证多样性与真实感。本质是把"测什么"(构念效度)与"怎么说"(表面多样性)解耦——前者必须握在人手里。工程实现上对应结构化输出/schema 校验:生成请求里没有结构字段就直接拒绝(eval_lab02 的 MockLLM 正是这样实现的)。

题 4(进阶):负向触发用例为什么必不可少?你会怎么设计?

参考答案:

因为过度触发比不触发更难发现(腾讯原话)。不触发会立刻被用户发现(功能"坏了"),过度触发却静默发生:无关请求被路由进昂贵链路、token 消耗上涨、下游流程被污染,直到成本账单或连锁事故才暴露。只测正例的评测集会系统性纵容"什么都触发"的 agent。

设计方法:① 相似但不相关的 prompt 成对构造——与合法触发仅一字之差的表述(相邻技能的需求、含相同关键词但意图不同的请求)必须不触发;② 负例覆盖三类:相邻技能混淆、关键词陷阱(含实体词但意图不同)、空泛请求("帮我看看");③ 判定用程序化断言(未调用目标技能入口 / 未进入目标流程),零 judge 成本;④ 与正向用例配对汇报:触发场景同时报召回(正例触发率)与精度(负例不触发率),两个数一起看才有意义。

题 5(进阶):Golden Set 建多大规模合适?为什么 Airbnb 强调 gold set 必须包含坏样本?

参考答案:

规模经验(均以素材为准):Anthropic 建议 20-50 个真实用例即可起步;Airbnb 用 50-100 条 gold set;阿里建议先做 50-200 条高质量 golden set 覆盖核心业务路径与高风险边界。共识是起步门槛低、判据优先于数量:50-200 条是"基线尺子"的规模,承担版本对比与发布门禁;更大的集合(如 Airbnb 规模化阶段的 5,000 样本、每日 5% 抽样)是生产监控用途,两者职能不同。统计上,100 条样本的通过率 95% 置信区间约 ±10 个百分点,足以分辨"明显变好/变坏",再小则噪声淹没信号(计算详见第 E9 章)。

必须含坏样本有两个原因:① 校准 judge 需要负例,否则测不出 judge 是不是"一律给好";② 坏样本能暴露 judge 的误判类型——Airbnb 客服案例正是在含失败样本的 gold 集上发现 judge 初始一致率仅 78%,根因是"judge 误罚正确的改述",修 rubric 后升到 88%。没有坏样本的 gold set,校准根本无从谈起。

题 6(进阶):线上进来一条 badcase,能直接变成评测用例吗?入库标准是什么?

参考答案:

不能。badcase 是原料,不是用例;阿里的入库标准五项缺一不可:

  1. 失败可复现(或至少有稳定 Trace + 人工确认)——否则无法验证修复是否生效;
  2. 期望行为明确——可写成规则/Judge 标准/人工验收标准,否则无法打分;
  3. 根因标签清楚——归到具体能力域或业务流程,否则 RCA 断链;
  4. 样本有代表性——覆盖一类问题而非一次性环境抖动,孤例会稀释信号;
  5. 已脱敏合规——PII 清理完成,法务红线。

完整旅程是:badcase → 过五项标准 → 编码为用例(带 provenance 指回原始 session)→ 进能力集验证修复 → 稳定 100% 通过后毕业进回归集(只增不减)。一条 badcase 至少可生产三类反馈(评测集/训练数据/知识修订),入库标准是三条生产线共用的闸门。

题 7(进阶):能力评测和回归评测有什么区别?"毕业"机制怎么运转?

参考答案:

两者回答的问题相反:能力测评回答"Agent 能把什么做好"——是目标山峰,起步通过率 20-50%,主动拓展、频繁迭代,失败代表改进方向;回归测评回答"原有能力是否还在"——是防线,期望接近 100%,防御漂移,CI 每次运行,失败即阻断发布。

毕业机制是两者的传送带:能力集用例通过率稳定 100% 后毕业进回归集;回归集只增不减。腾讯引用 Anthropic 口径定回归门槛:确定性任务用例集整体通过率 100%,非确定性任务 ≥95%,并按业务类型分级容忍(关键决策类 0% 容忍、辅助分析类 ≤10%、创意生成类 ≤40%)。防膨胀靠降级泄压:稳定多版本通过且低风险的用例降级为抽样集(退出每次必跑、保留抽查资格),但 P0/P1 风险样本长期保留、永不降级。badcase 的完整闭环:复现 → 定根因与期望行为 → 修复 → 纳入用例集防回归 → 进能力集 → 稳定后毕业。

题 8(进阶):DoorDash 的 checklist 式场景 rubric(如"素食 taco 购物清单")比宽泛 rubric 好在哪?什么场景适用?

参考答案:

案例:场景"为两人份、预算 ≤$60 的素食 taco 购物清单",rubric 写成可核验清单——每件商品都是素食 taco 原料、小计 ≤$60——而不是"清单质量好"。

好在低方差:判定依据收敛到可程序化核验的事实(商品在不在清单、金额加总),judge 与人工的自由裁量空间被压缩,同一输入重复评分的波动小。方差低的直接收益是小样本也能迭代——50 个场景就能可靠区分两个版本,支撑更快的发布节奏;宽泛标准方差高,同样样本量下差异淹没在噪声里。此外 checklist 失败时归因明确(哪一条没满足一目了然),天然服务于失败聚类。

适用边界:任务目标可枚举成事实性检查项时用 checklist(购物、预订、表单类);开放式目标(语气、叙事质量)仍需语义 rubric 兜底,此时用 eligibility 前置(DoorDash:judge 先判标准是否适用本会话)避免误扣。两者都要求"从会话本身可验证",才能同一 rubric 既供人工校准又供 judge 规模化。

题 9(系统设计):为一个新上线的客服 Agent 从零设计评测数据集体系:来源、组织、规模、治理流程、与 CI 的衔接,一次讲清。

参考答案:

第一阶段(第 1-2 周):定口径、立骨架。 与业务方先定高风险场景的口径(如"已发货+拒收+运费险该走哪条流程");专家设计 20-50 条参考解覆盖核心路径;按腾讯四场景(触发→核心逻辑→产物质量→异常容错)组织,正负用例成对,核心逻辑用例量≈其余三类之和的 2-3 倍(先梳理分支流程图,每条分支至少 1 例);每条用例固化为 spec(输入/期望行为/判据/risk_level/provenance),期望行为写成 must-call/must-not 等可判定检查项。

第二阶段(第 3-4 周):扩量与基线。 用"先结构字段后自然语言"的 LLM 扩展把规模做到 50-200 条(阿里口径),覆盖核心业务路径与高风险边界;对执行类用例走基线快照流程(执行 1 次→人工确认→快照为基线,不硬编码输出);为购物/预订类场景配 checklist 式低方差 rubric;线上真实会话去标识化后做分布比对,补覆盖盲区。

第三阶段(持续):治理流水线。 入口:badcase 双通路(离线评测失败 + 线上投诉/低满意度/转人工)汇入同一任务表,过五项入库标准(可复现/期望明确/根因清楚/代表性/已脱敏)编码为用例;同簇去重保留代表例。流转:新用例先进能力集,稳定 100% 通过后毕业进回归集(只增不减);回归集进 CI——PR 触发回归(提示词变更)+ 模型升级手动验证 + 定期全量巡检;门槛按 Anthropic 口径:确定性 100%、非确定性 ≥95%,P0 风险样本失败一票否决。防膨胀:稳定多版本通过且低风险者降级抽样集,P0/P1 长期保留;成熟后扩展长尾集与对抗集(注入/越权用例常驻回归)。

第四阶段(规模化):三层坐标。 私有 golden set 做发布门禁;公开基准(τ-bench 类)做季度外部水位参照;线上每日抽样(去标识化、用途限定)做持续监控——三层分数不可互替。组织上指定人类终判者裁决口径争议(Airbnb 五原则之一),评测集增长与 judge 校准各有 owner。


五、易错点 · 反直觉点

  1. 误区:线上日志随机抽一批就是最"真实"的评测集。 真相:线上分布里高风险场景占比极低,随机抽样复刻的是流量而不是风险,报告"看起来不错"恰好说明关键问题被漏掉了。 记忆锚点:评测集找问题,抽样描分布——目标相反,不能混用。

  2. 误区:触发场景只需要测"该触发时能触发"。 真相:只测正例,agent 可能学会什么都触发;过度触发静默消耗成本、污染下游,比不触发更难发现。 记忆锚点:正例测召回,负例测精度,触发场景必须成对。

  3. 误区:让 LLM 自由生成几百条用例,又快又多。 真相:没有结构字段约束的生成=场景编造+分布失控+判据缺失;覆盖率无法审计,入库后全是返工。 记忆锚点:先定骨架(结构字段),再长皮肉(自然语言)。

  4. 误区:badcase 很宝贵,发现一条就加一条进评测集。 真相:不可复现的无法验证、期望不明的无法打分、无根因标签的无法归因、一次性抖动不代表一类问题、未脱敏的有合规风险——不过入库标准的 badcase 是噪声不是资产。 记忆锚点:badcase 是原料,入库标准五项是闸门。

  5. 误区:gold set 全放好样本,干净漂亮。 真相:没有坏样本就校准不了 judge——测不出 judge 是否一律说好,也发现不了"judge 误罚正确改述"这类系统性误判(Airbnb 78%→88% 的校准正是靠含失败样本的 gold 集)。 记忆锚点:gold set 必须含坏样本,否则尺子没法校。

  6. 误区:用例预期输出直接写死在 JSON 里,一劳永逸。 真相:业务逻辑变更、模型升级后硬编码的预期会变成错误答案,评测开始误杀正确行为;腾讯的做法是基线快照(执行 1 次→人工确认→快照为基线),且 Agent 逻辑变更/模型升级/用例修改三个时机必须重做基线。 记忆锚点:预期答案也是资产,要有人审、有版本、有更新时机。

  7. 误区:评测集越大越好,1000 条总比 100 条强。 真相:基线集的价值在判据清晰与风险覆盖,不在数量;过大意味着维护成本、judge 成本与 CI 时长暴涨,信号还被重复样本稀释。四家的起步口径都是 20-200 条量级;规模扩张走"分类采样集/长尾集/监控抽样"等外围层。 记忆锚点:尺子要准不要长,宁深勿水。

  8. 误区:评测集只进不出,永远安全。 真相:不做毕业与降级,回归集无限膨胀到 CI 跑不动;但只做减法更危险——回归集只增不减是底线,泄压靠"降级抽样集"(退出必跑、保留抽查),P0/P1 风险样本永不降级。 记忆锚点:只增不减是原则,降级抽样是泄压阀。

  9. 误区:私有评测集拿来当优化目标(自动改 prompt 刷分)没问题,反正是自己的集。 真相:eval 一旦成为目标就会被拟合——MIPROv2 等优化器以 eval 分数为搜索目标时,必须配留出集与定期换血;EDDOps 把污染防护与 provenance 列为评测资产的必备属性。被刷穿的评测集给出的门禁全是虚假信心。 记忆锚点:评测集当裁判就不能同时当考题——留出集隔离,定期换血。


六、推荐资源

一手工业实践(本章数字的全部出处)

  1. Airbnb《Eval-driven development: Lessons from evaluating GenAI at scale》(Rohit Girme, Dan Miller, Mia Zhao, Lifan Yang, Clint Kelly)——EDD 五原则、50-100 gold set 含坏样本、每日 5% 去标识化抽样、隐私用途限定。
  2. DoorDash《Building Ask DoorDash (Part 3): Evaluation》(Steven Xu, Fabio Flores, Twisha Jain, 2026-06-30)——checklist 式场景 rubric(素食 taco 清单)、fixtures、50 场景 × 8 trials 的成本账。https://careersatdoordash.com/blog/building-ask-doordash-part-three-evaluation/
  3. 阿里技术《Agent 评测:方法论与体系设计》(2026 年第 28 篇)——幸存者偏差、四类来源、50-200 golden set、入库标准五项、样本治理四规则。
  4. 腾讯技术工程《AI Agent & Skill 测评方案及落地实践》(martinskxu,TEG 云架构平台部网关测试团队)——四场景用例组织、正负用例、2-3 倍经验法则、基线快照、能力/回归毕业机制、TPerf 实战。

论文(arxiv ID 均经 _research/ 调研核实)

  1. EDDOps: Evaluation-Driven Development and Operations of LLM Agents(arxiv 2411.13768,2024-11 首发 / 2025-11 v3)——评测资产 = 标准基准 + 领域知识 + 专家用例 + 合成数据;每条用例带 provenance/oracle/slice 标签;污染防护是评测资产必备属性。
  2. MIPROv2(arxiv 2406.11695,2024-06)——eval 集既是测试又是优化目标时的泄漏与过拟合风险(留出集、定期换血的出处语境)。
  3. GEPA(arxiv 2507.19457,2025-07)——Pareto 前沿按切片保留候选:按 slice 看指标、防止平均分掩盖退化。
  4. τ-bench(arxiv 2406.12045,2024-06)——数据库终态校验与 pass^k:公开基准如何提供可靠外部坐标(GPT-4o retail pass^1 ≈60% → pass^8 ≈25%)。
  5. WildChat(arxiv 2405.01470,2024-05)与 LMSYS-Chat-1M(arxiv 2309.11998,2023-09)——构建评测集与用户模拟器的真实对话语料原料。

延伸读物

  1. Anthropic Engineering《Demystifying evals for AI agents》(2026-01)——20-50 条起步、capability vs regression 套件划分。https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents
  2. OpenAI《Evaluation best practices》——数据来源五路(生产/专家构造/历史/合成/采购)。https://developers.openai.com/api/docs/guides/evaluation-best-practices
  3. Hamel Husain《Your AI Product Needs Evals》——evals-as-tests 运动的布道文本。https://hamel.dev/notes/llm/evals/

动手 labs(本特辑)

  1. eval_lab02_golden_dataset.py(本章配套实验):用例结构 dataclass、四类来源构造、五项入库标准检查器、同簇去重、毕业流转与回归门禁。 cd evals-special/labs && python3 eval_lab02_golden_dataset.py
  2. eval_lab10_edd_loop.py:毕业后的用例如何进入 EDD 门禁闭环(回归集只增不减的断言)。 cd evals-special/labs && python3 eval_lab10_edd_loop.py
  3. eval_lab07_simulator_fixtures.py:checklist 式 rubric 与 fixtures 的可运行版本(配合第 E8 章)。 cd evals-special/labs && python3 eval_lab07_simulator_fixtures.py
  4. eval_lab08_statistics_ci.py:为什么 100 条 golden set 在统计上够用——置信区间与样本量计算(配合第 E9 章)。 cd evals-special/labs && python3 eval_lab08_statistics_ci.py
  5. eval_lab05_judge_calibration.py:gold 集含坏样本如何支撑 judge 校准(78%→88% 的复现,配合第 E5 章)。 cd evals-special/labs && python3 eval_lab05_judge_calibration.py

章节交叉引用

  • 指标怎么定:第 E2 章 · 评估指标体系
  • 用例的期望行为如何变成评分器:第 E4 章 · 程序化评分
  • gold 集如何校准 judge:第 E5 章 · LLM-as-Judge 深入;人工标注与口径裁决:第 E6 章
  • fixtures 与模拟场景的用例形态:第 E8 章 · 对话 Agent 与仿真评测
  • 样本量与置信区间的数学:第 E9 章 · 评估的统计学基础
  • 评测集在开发循环中的用法:第 E10 章 · 评测驱动开发(EDD);badcase 的根因分析:第 E11 章;线上回流与数据飞轮:第 E12 章
  • 公开基准全景与选型:第 E13 章 · Benchmark 全景与前沿争议;四家实践完整案例:第 E15 章
  • 主手册第 8 章 · Agent 评估与可观测性(本章的浓缩版对照:任务分类学 → 覆盖矩阵 → item spec → 分阶段扩建)
第 4 章 / 共 15 章

评分三层之一:程序化评分

📌 本章导航(6 节)

一句话导读:评分三层(程序化 → LLM Judge → 人工)中,程序化评分是唯一"零成本、零漂移、可单测"的一层。本章讲透:哪些检查必须写成代码、检查规则如何用 DSL 落成可执行规格、评分输出为什么不能只有 pass/fail、粗筛→精判→人工复核的分层流水线怎么省钱、以及扣分制 / 基线快照 / LCS 轨迹对齐这些腾讯 TPerf 实战中打磨过的工程细节。学完本章,你能独立设计一套可进门禁、可喂 RCA 的程序化评分子系统,并清楚知道规则的边界在哪里(边界之外见第 E05 章)。


一、知识图谱

程序化评分(评分三层之一 · 确定性层)
│
├── 定位:确定性优先 ——「能用代码判断的,绝不用模型判断」
│   └── 三类评分器选择顺序:确定性评分器 → Rubric/Judge → 人工
│       成本:毫秒级/免费 → 秒级/API 费 → 分钟~小时级/人力
│       稳定性:100% → 有抖动 → 取决于标注员
│       覆盖:已知硬指标 → 未知软指标 → 主观+边缘场景
│
├── 检查清单(八类,Airbnb + 腾讯合集)
│   ├── 输出层:① schema/格式校验  ② 空输出与异常长度  ③ 关键词/正则黑白名单
│   ├── 任务层:④ P/R/F1(分类任务)  ⑤ 语义相似度(有参考答案时)
│   └── 执行层:⑥ 工具调用断言  ⑦ 执行指标(调用次数/token/耗时)  ⑧ 基线对比
│
├── 前提:结构化输出 —— JSON schema 强类型,不靠 prompt 措辞产出结构
│
├── 表达:expected_behavior DSL —— must_call / 参数约束 / 预算 / 关键词 / 基线
│
├── 输出规范:{score, passed, 问题分类, 置信度, 判定依据}
│   └── 问题分类 = 现象层 ≠ 根因 → 是 RCA 的「现象入口」
│
├── 流水线:分层筛查(阿里)
│   └── 粗筛层(便宜规则快速分流)→ 精判层(完整规则 + Judge)→ 人工复核层
│       纪律:粗筛已明确失败的样本,绝不进精判
│
├── 工程实践(腾讯扣分制 + 基线快照 + TPerf 实战)
│   ├── 扣分制:初始 100 分负分制,达标线 80 分,每次输出扣分明细 JSON
│   ├── 基线快照:单用例执行 1 次 → 人工确认 → 快照为基线
│   ├── 轨迹对齐:LCS 最长公共子序列 + 五类归一化,不一致/多余/缺少/顺序错各扣 2
│   └── 稳定性:pass^k 思想 + 容忍阈值分级(关键决策 0% / 辅助分析 ≤10% / 创意 ≤40%)
│
└── 边界:规则永远判不了的 —— 语义正确性 / 语气 / 策略合理性 → 第 E05 章 LLM-as-a-Judge

本章回答的核心问题,与三层评分的分工:

问题 由哪一层回答 本章覆盖
输出格式对不对、工具调没调对、有没有超预算 程序化评分(确定性) ✅ 全章
语气好不好、引用有没有据、策略合不合理 LLM-as-a-Judge 仅划边界(第 E05 章展开)
政策口径怎么定、judge 与规则冲突谁说了算 人工评估 仅划边界(第 E06 章展开)

二、核心概念精讲

2.1 确定性优先:程序化评分在三层评分体系中的位置

阿里对评分层的总纲只有一句话:规则看"硬条件"(工具、状态、字段、禁用动作),LLM 看"语义/策略合理性";能写成代码的由规则主判;高风险/抽检/低置信/变更观察期追加 LLM Judge;能自动稳定判断的不长期依赖人工。腾讯把同样的原则表述为选择优先级:确定性 > Rubric > 人工。Anthropic 在《Demystifying evals for AI agents》(2026-01)中给出的打分三层顺序完全一致:确定性代码检查(正则/终态/单测)→ 模型裁判 rubric → 人工抽检。

三家公司独立得出同一个顺序,原因可以拆成四个维度。腾讯给出的三类评分器对照表(原文数字):

维度 确定性评分器 Rubric 评分器 人工评分器
谁来评 脚本(Bash/Python/断言/Lint/AST) 大模型(固定版本) 领域专家
规则写在哪 代码里 Prompt + JSON Schema 人脑 + 标注指南
成本 毫秒级 / 免费 秒级 / API 费用 分钟~小时级 / 人力
稳定性 100% 有抖动(需降噪) 取决于标注员水平
覆盖 已知硬指标 未知软指标 主观 + 边缘场景
典型用例 文件存在、构建/测试通过 代码风格、意图贴合、解释清晰度 校准 LLM、诊断 0%/100% 异常、红队
门禁角色 硬门禁 分级门禁(error 硬 / warning 软) 不进门禁,做采样审查

这张表有四个面试必须说出来的要点:

  1. 稳定性 100% 是程序化评分独有的性质。Judge 有抖动需要降噪,人工取决于标注员水平;只有代码断言同一输入永远给同一结论——这是它能做"硬门禁"的根本原因,也是版本对比时分数差异可以归因于被测系统而非评分器的前提。
  2. 规则写在代码里 = 可单测、可 review、可版本化。评分器本身是软件,享受软件工程的全部基础设施(回归测试、code review、git 历史);judge 的规则藏在 prompt 里,人工的规则藏在人脑和标注指南里,可审计性依次递减。
  3. 门禁角色分层:确定性评分器做硬门禁(不过不发),Rubric 做分级门禁(error 硬 / warning 软),人工不进门禁只做采样审查——把最贵的判定能力用在杠杆最高处(详见第 E06 章 · 人工评估与评分路由)。
  4. "覆盖:已知硬指标"暗示了边界:程序化评分只能判"已经想到并能写成规则的东西",未知软指标必须交给下一层。三层不是三选一,而是分层防御:Airbnb 十条要点的第 ⑥ 条就是"代码检查 + 模型 judge + 人工评审结合"。

确定性优先的经济学:一条样本走一次 LLM judge 是秒级延迟 + API 费用,走一次规则断言是毫秒级 + 免费。当评测规模达到 DoorDash 的"每天 2,000 个自动评分会话"时,能用规则判的每一项交给 judge,都是每天重复支付一笔本可省下的钱,还要额外承担 judge 抖动带来的噪声。

2.2 程序化检查清单:八类检查与适用场景

Airbnb 三层评估框架的第一层"程序化检查(确定性、最先跑)"给出五项,腾讯"确定性评分器"给出五项(部分重叠),合并去重后是一张可直接照抄的八类清单:

# 检查项 判什么 出处 适用场景 命中时的典型问题分类
1 schema / 格式校验 JSON 可解析、必填字段齐全、字段类型正确 Airbnb 标注"永远有用" 一切结构化输出;Agent 最终答复、工具入参 invalid_json / missing_field / type_error
2 空输出与异常长度 输出为空、过短(装不下最小结构)、过长(失控复读/冗余刷屏) Airbnb 标注"永远有用" 一切文本产物的第一道安检 empty_output / too_short / too_long
3 关键词 / 正则 黑名单(禁用话术、过度承诺、PII、注入回声)、白名单(必备披露内容) Airbnb:安全合规;腾讯:关键词匹配 安全合规、话术红线、披露义务 blacklist_hit / whitelist_missing
4 P/R/F1 分类标签与金标的精确率/召回率/F1 Airbnb:分类任务 意图识别、工单分类、情感判定等可离散化的任务 按错分类型细分
5 语义相似度 与参考答案的向量相似度(计算过程仍是确定性代码) Airbnb:有参考答案时 摘要、改写等有参考输出但字面不必相同的任务 similarity_below_threshold
6 工具调用断言 是否调用指定工具、参数是否正确、禁用工具是否被调用 腾讯:工具调用检查 一切带工具的 Agent;安全关键路径 tool_not_called / tool_param_error
7 执行指标 调用次数上限、token 阈值、耗时预算 腾讯:执行指标 防死循环、防成本失控、防效率退化 too_many_calls / time_budget_exceeded
8 基线对比 与人工确认过的基线快照逐项对比(调用序列 / 产物 / token) 腾讯:基线对比 回归评测、"过程是否退化"判定 process_regression / result_regression

两点使用经验:

  • 检查项 1、2 放最前面,永远先跑。Airbnb 对格式校验与空/异常长度的评价都是"永远有用"——它们不依赖任何业务知识,却能拦截最脏的一批样本(连 JSON 都解析不了的输出,后续一切检查都没有意义)。
  • 从观察到的失败反推检查项,而不是拍脑袋穷举。Airbnb 旅行客服案例的探索阶段:跑 100 个 prompt 人工精读,发现 15 个 groundedness 失败、8 个正确但啰嗦、5 个不当拒答、3 个 JSON 失败——随后"建测试"阶段第一批落地的就是 JSON 与长度检查。程序化检查清单应该随 badcase 回流持续生长(详见第 E10 章 · 评测驱动开发)。

一个最小评分器的写法(示意骨架,完整可运行版见 lab03)——注意它已经遵守了 2.5 的五元组输出契约:

def check_tool_called(sample, required: list[str]) -> ScoreResult:
    """检查项 6:关键工具是否被调用。只看 trace 里的调用事件,毫秒级。"""
    actual = [c["name"] for c in sample.trace if c["type"] == "tool_call"]
    missing = [t for t in required if t not in actual]
    if missing:
        return ScoreResult(
            scorer="check_tool_called",
            score=0.0, passed=False,
            issue="tool_not_called",                    # 可枚举常量,RCA 入口
            confidence=1.0,                              # 确定性判定,置信度恒为 1
            evidence=f"关键工具 {missing} 未被调用(实际调用: {actual})",
        )
    return ScoreResult("check_tool_called", 1.0, True, "none", 1.0,
                       f"全部关键工具已调用: {required}")

两个细节值得注意:① 确定性评分器的 confidence 恒为 1.0——它不会"拿不准",拿不准是下一层的事;② evidence 里带上实际值(实际调用列表、实际金额),人审时一眼定位,不用重跑。

动手验证:本章配套实验 labs/eval_lab03_programmatic_scorers.py 实现了上表第 1、2、3、6、7 类评分器,并对 19 条构造样本(明显失败 / 边界 / 通过)跑完整流水线。运行:cd evals-special/labs && python3 eval_lab03_programmatic_scorers.py。

2.3 结构化输出是前提:JSON schema 强类型 vs prompt 措辞的脆弱性

程序化评分的一切前提是:被评的输出有稳定可解析的结构。Airbnb 的原话是:建议用结构化输出(JSON schema 严格类型化),不要只靠 prompt 措辞产出结构,否则下游管道会坏。

两种做法的对照:

维度 JSON schema 强类型约束 靠 prompt 措辞"请输出 JSON"
格式保证 解码层/约束解码强制合法 无保证,模型偶发多说话、漏引号、markdown 包裹
解析成本 直接 json.loads 正则抠取 + 兜底解析,脆弱且需持续打补丁
失败模式 失败即显式报错,可计数 静默产出"看起来像 JSON"的坏结构
评分兼容性 字段/类型断言直接写 每条正则都在赌模型不改措辞
换模型时 schema 契约不变 每个模型的"听话程度"不同,格式失败率漂移

工程落地的三件事:

  1. 生成侧强制:能用 API 的 structured output / tool schema 约束就用,把格式失败率压到接近零;格式失败率本身要作为一个独立的可统计问题分类计入报告(lab03 中 invalid_json / missing_field / type_error 是三个独立 issue 常量,便于归因是"完全不会输出 JSON"还是"字段意识不足")。
  2. 解析侧兜底:即便有约束,也要有解析失败的兜底分支——解析失败本身就是评分信号(直接判 fail 并给出问题分类),绝不允许评分器抛异常中断整批评测。
  3. 格式防护反哺生产:DoorDash 底座模型迁移案例(Claude Sonnet 4.6 → Gemini 3.5 Flash)中,Flash 的部分工具参数格式与工具签名不符(签名要 plain string,Flash 传了 {"dishes": [...]} JSON 对象)。修复手段之一就是确定性的:工具输入做确定性防护,错误形状强制转换回预期形状而非丢弃调用——最终迁移达成延迟降 35%、质量无损。评分侧发现的格式问题,反过来指导了生产侧的防御性编码,这是"确定性检查价值外溢"的典型例子。

2.4 expected_behavior:把期望行为写成可执行规格(DSL)

腾讯的用例由两部分组成:prompt + 检查规则;预期结果不硬编码在用例里,而是通过基线会话标识(session_id + message_id)指向一份人工确认正确的执行记录,评测时动态获取(TPerf 从 Knot API 拉取)。这套思路可以整理成一份 YAML 风格的 expected_behavior DSL(下例为按腾讯检查项体系整理的示意写法,非任何一家原文):

case_id: refund-001
prompt: "订单 ORD-1001 我不想要了,帮我退款"
risk_level: P0                       # 风险等级决定门禁严格度与是否追加人工复核
expected_behavior:
  # —— 工具调用断言(腾讯:工具调用检查)——
  must_call: [query_order]           # 关键工具必须调用(未调用 = 硬失败)
  must_not_call: [force_refund]      # 禁用工具(越权/跳过校验的防线)
  partial_order:                     # 偏序约束:只约束先后,不约束全序列
    - [verify_identity, execute_refund]
  params:                            # 参数约束:类型 + 值域
    execute_refund.amount: {type: number, min: 0, max: "order.paid_amount"}
    query_order.order_id: {equals_input: "订单号"}

  # —— 输出断言(Airbnb:schema / 长度 / 关键词)——
  output_schema: {required: [action, reason], types: {action: enum[refund,reject,clarify]}}
  length: {min_chars: 16, max_chars: 400}
  keywords_blacklist: ["内部员工通道", "保证一定退款成功"]   # 过度承诺一票否决
  keywords_required_if:                # 白名单条件触发:提到退款就必须披露时效
    when_output_contains: "退款"
    must_contain: ["1-3个工作日"]

  # —— 执行指标(腾讯:调用次数 / token 阈值)——
  budget: {max_tool_calls: 6, max_total_latency_ms: 8000}

  # —— 基线对比(腾讯:基线快照机制)——
  baseline:
    session_ref: "sess_2026-07-12_refund-001"   # 指向人工确认过的基线会话
    compare: [call_sequence_normalized, artifact_exists, token_ratio<=1.5]

各检查字段的适用场景速查:

DSL 字段 适用场景 不适用 / 注意
must_call / must_not_call 安全与正确性强依赖某次调用(先鉴权后操作、禁跳过校验) 不要枚举全部调用强制顺序,会惩罚合法替代路径
partial_order 有明确前置依赖但路径可变的流程 只表达"必须先 A 后 B",不表达步数
params 约束 金额、ID、枚举等可值域化的参数 语义等价参数(同义改写)判不了,交给 judge
output_schema / length 一切结构化产物 格式之外的内容质量判不了
keywords 黑白名单 合规红线、必备披露、禁用话术 变体绕过(同义替换)防不全,是必要非充分手段
budget 防死循环、防成本失控、效率回归 阈值需从基线统计得出,不能拍脑袋
baseline compare 回归评测、"过程/结果/效率是否退化" 基线需随被测系统变更而重录(见 2.7)

lab03 的样本集正是按这份 DSL 的字段逐项构造正负样本的(黑名单命中"内部员工通道"、白名单缺失"1-3个工作日"、调用 9 次超上限 6、总耗时 11500ms 超预算 8000ms、amount=300 超值域 [0,150]),每类失败都被对应的评分器拦下并给出正确问题分类。

2.5 评分输出规范:绝不止 pass/fail

阿里的评分输出规范是本章最重要的设计点之一:评分输出不止 pass/fail,还要有问题分类(现象层:事实性错误 / 答非所问 / 过度承诺)、问题现象、置信度、判定依据——为 RCA 提供"现象入口";且现象分类 ≠ 最终根因。

一条失败样本如果只告诉你 "fail",下游什么都做不了:不知道坏在哪个环节(无法聚类)、不知道判定有多可靠(无法决定要不要人工复核)、不知道为什么失败(无法回放调试)。因此评分器应统一返回一个五元组(lab03 的 ScoreResult 即此结构):

字段 类型 下游用途
score 连续分 [0,1] 灰度阈值、漂移观察(二值门禁用 passed,趋势观察用 score)
passed bool 门禁硬判定
issue(问题分类) 枚举常量 badcase 聚类、RCA 映射表的键、报告分布统计
confidence [0,1] 自动采信 vs 升级人工复核的路由信号
evidence(判定依据) 人可读文本 回放核对、误报申诉、人审快速定位

一条真实失败样本的评分输出长这样(lab03 中"退款金额超值域"样本的等价物):

{
  "case_id": "refund-001",
  "scorer": "check_tool_params",
  "score": 0.0,
  "passed": false,
  "issue": "tool_param_error",
  "confidence": 1.0,
  "evidence": "refund.amount=300.0 超出合法范围 [0, 150](订单实付 150)",
  "prompt_version": "v1.8",
  "model": "candidate-a"
}

issue 供聚类与 RCA 映射,evidence 供人审复核,prompt_version/model 绑定让同一 issue 能按版本聚成问题簇。

三条落地纪律:

  1. 问题分类必须是可枚举的常量,不是自由文本。lab03 定义了 13 个 issue 常量(empty_output / too_short / too_long / invalid_json / missing_field / type_error / blacklist_hit / whitelist_missing / tool_not_called / tool_param_error / too_many_calls / time_budget_exceeded / none)。可枚举才能可统计,才能被下游"问题现象 × 功能模块"映射表直接消费(详见第 E11 章 · Badcase 根因分析与优化闭环)。
  2. 现象 ≠ 根因,必须分层。"关键工具未调用"是现象;根因可能是 prompt 没写清触发条件、工具描述缺失、或上下文被覆盖。阿里 RCA 五步的第二步"范围收敛"正是拿现象去查映射表缩小候选模块——程序化评分输出的 issue 就是这条流水线的入口。阿里 RCA 中"规则定位硬错误"的清单——工具未调用 / 顺序违反 SOP / 参数缺失 / 报错未重试 / DB 状态未变 / 引用来源不存在——几乎每一项都是程序化评分器能直接给出的确定性信号。
  3. 判定依据让每条失败可申诉。evidence 字段(如 "refund.amount=300.0 超出合法范围 [0, 150]")让人审和开发者不用重跑就能复核结论;没有 evidence 的 fail 在评审会上等于没有结论。

聚类的价值用阿里的实例最直观:报告不是列 100 条 badcase,而是产出"退款已发货场景中,Agent 23 次跳过订单状态校验,主要集中在 v1.8 Prompt"——这句话的"23 次"来自 issue=tool_not_called 的可统计聚合,"v1.8 Prompt"来自评分记录上绑定的 prompt 版本。没有结构化的评分输出,就不可能有这样的聚类。

2.6 分层筛查流水线:粗筛 → 精判 → 人工复核

当样本量大、评分手段贵贱悬殊时,不能让每条样本都走全套检查。阿里的分层筛查流水线:

待评样本(离线评测集 / 线上抽样 / badcase 回流)
   │
   ▼
┌─────────────────────────────────────────────┐
│ 粗筛层:规则 Scorer + 轻量 Judge               │
│ 空输出 / 长度 / JSON 解析 / 关键词(只看输出文本) │
└──────┬──────────────────────┬────────────────┘
       │ 明确失败              │ 通过或存疑
       ▼                      ▼
  直接定案                 ┌──────────────────────────────┐
  (给出问题分类,          │ 精判层:完整规则 + Judge        │
   绝不进精判)             │ 工具断言 / 参数值域 / LCS 对齐 /  │
                           │ LLM 语义判定(需要 trace 与模型) │
                           └──────┬─────────────┬──────────┘
                                  │ 结论可信      │ 高风险 / 低置信 / 冲突
                                  ▼              ▼
                             入库 + RCA      ┌────────────────┐
                                             │ 人工复核层(E06)│
                                             │ 终判并回收口径   │
                                             └────────────────┘

各层职责与输出:

层 手段 职责 输出
粗筛层 规则 Scorer + 轻量 Judge 快速分流:明显通过 / 明显失败 / 存疑 明显失败的直接定案并给问题分类
精判层 完整规则 + Judge 确认 badcase,处理边界样本 初始问题分类 / 现象 / 置信度 / 判定依据
人工复核层 专家 高风险 / 低置信 / 冲突 / 口径未固化的样本 终判结论,回收口径反哺前两层

关键纪律:粗筛已明确失败的样本绝不进精判。否则昂贵的判定能力(trace 解析、LLM 往返)被垃圾样本稀释,评测成本随样本量线性恶化。

分层的依据不是"哪个评分器写得早",而是"评分器依赖的信息范围":

  • 只看输出文本本身的规则最便宜(空输出、长度、JSON 解析、关键词)→ 粗筛;
  • 需要完整 trace / 工具调用记录 / 环境状态的判定较贵(工具断言、参数值域、LCS 对齐)→ 精判前段;
  • 需要 LLM 语义判断的最贵(语气、groundedness、策略合理性)→ 精判后段;
  • 需要政策口径与价值判断的 → 人工层。

成本账要用数字说话。lab03 的实测结果(固定种子、可复现):19 条样本中粗筛拦截 8 条明显失败(空输出 / JSON 损坏 / 异常长度 / 缺字段 / 类型错误 / 黑名单 / 白名单缺失),11 条进入精判层;LLM Judge 仅被调用 10 次;按相对成本单元计,实际开销 490 单元 vs 全量走精判的 baseline 874 单元,节省 43.9%(实验断言阈值 ≥35%)。样本越脏、judge 越贵,分层节省越大——这正是阿里把分层筛查写进平台架构的原因。

人工复核层的路由条件(高风险 / 低置信 / 规则与 Judge 冲突 / 新模型新 Prompt 上线抽样等)展开见第 E06 章 · 人工评估与评分路由。

2.7 评分工程实践:扣分制、基线快照、轨迹对齐与稳定性阈值

这一节集中讲腾讯(含 TPerf 实战案例)沉淀下来的四套工程机制,都是"程序化评分如何长期运营"的答案。

(1)扣分制与达标线。 腾讯的评分规则:初始 100 分负分制,每处不符扣对应分至 0,达标线 80 分(推荐值,按 Agent 类型与业务风险调整)。扣分项(原文数字):

扣分项 分值
任务结果不符预期 −100(直接归零)
步骤遵循性,每步 −10
步骤输出结果,每步 −10
工具/知识库调用,每项 −10
分析耗时(基准 5 分钟),每超 1 分钟 −10
一致性 N 次(建议 N=5)全达标取均值

每次评分输出 JSON 扣分明细 + 原因,渲染 HTML 报告归档;报告头部带用例总数 / 通过率 / 平均分 / 模型版本与费用 / 总 token / 平均费用每 Trial。扣分制的好处是分数可归因:80 分与 60 分的差距能逐项拆出来,而不是一个黑盒总分。

(2)基线快照机制。 基线 = 单用例执行 1 次后经人工确认的预期过程与预期结果快照——回答"正确的执行应该长什么样"。预期过程含 CoT、工具调用序列(入参返回)、中间产物、完整 Trace;预期结果含最终响应、输出文件、输出报告。流程:用例设计只定义 prompt 与检查规则 → 执行 1 次 → 人工审核 → 不可接受则修后重跑 → OK 则该次快照成为基线。后续每次执行与基线对比,分三个方面:

  • 过程对比:调用序列一致 / 关键步骤缺失 / 顺序偏离 → 判"过程退化"(确定性评分器程序化判定);思维链合理性、步骤最优交给 Rubric 以基线为参考答案对比语义差异;
  • 结果对比:产物存在 / 关键内容缺失 / 产物不一致 → 判"结果退化";结论准确性、表述完整性交给 Rubric;
  • 效率对比:token / 步骤数超基线比例,如 >50% → 效率退化。

基线更新时机是常考点:Agent/Skill 逻辑变更、模型版本升级、用例本身修改(prompt 或检查规则变了)——三者任一发生,重新执行 1 次并人工确认。TPerf 的基线配置随代码仓库 Git 版本化;用例不硬编码预期输出,而是用基线会话标识指向人工确认正确的记录、评测时动态获取——这样基线更新有据可查、可回滚。

(3)轨迹序列对齐:LCS + 归一化(TPerf 实战)。 程序化判定"工具调用序列是否一致"最忌讳 exact match(时间戳不同、查询参数不同都会误判)。腾讯 TPerf 的做法:LCS(最长公共子序列)对齐基线与 Trial 步骤,先做归一化再对齐,归一化规则五条(原文):时间戳占位 / 搜索工具忽略查询参数 / 写入操作只留路径 / 终端命令提取脚本名 / 连续读文件组内不校验顺序。对齐后:不一致 / 多余 / 缺少 / 顺序错各扣 2 分,上限 −10。这套机制在 lab06 有完整实现,运行:cd evals-special/labs && python3 eval_lab06_trajectory_eval.py(轨迹三层评估详见第 E07 章)。

TPerf 的效率评分同样是程序化的:耗时基准 300s,每超 10% 扣 1;token 以基线为基准每超 10% 扣 1,上限 −10。模型评分维度(关键判定不一致直接 −80、章节内容每项 −5 上限 −80)则交给 CodeBuddy CLI 逐项对比——确定性与模型评分各管一段,最后合成。

(4)一致性标准与得分公式。 基线对比不能要求逐字一致,腾讯给出三档标准:数值型整数精确、小数相对误差 ≤1%;结论型异常等级与关键发现一致;建议型核心排查方向一致即可。得分公式(TPerf):trial_score = max(0, 100 + 各项扣分);trial_pass = score ≥ 80;case_score = 全 pass 取均值,任一 trial 不达标则该用例 0 分——最后一条正是 pass^k 思想在评分规则里的落地(详见第 E02 章 · 评估指标体系与第 E09 章 · 统计学基础)。

(5)稳定性容忍阈值分级。 N 次执行(建议 N=5),只要 1 次不通过即存在稳定性风险,但容忍度按使用类型分级(腾讯原文):关键决策类(问题定位/故障诊断)0%——N/N 全过,任何一次失败都可能误判;辅助分析类(性能分析/报告生成)≤10%;创意生成类(代码建议/文案)≤40%。N=5 的结果解读:全过 = 稳定;1/5 失败 = 存在幻觉,按类型判断;2/5 = 高幻觉率,深入排查;5/5 失败 = 稳定失败,先查任务定义或基线。腾讯特别提示:0% 的 pass^N 通常说明任务定义有问题,不是能力不行——这条经验在诊断"评分器自己坏了"时极其有用(人工评分的六个必要场景之一就是"诊断通过率异常:0% 或 100% 通常是任务/评分器坏了,不是模型弱")。

TPerf 的零容忍决策是个好案例:TPerf 虽属辅助分析类,但结论直接影响优化决策与发布判断,一次错误结论可能导致性能问题漏检上线——因此采用关键决策类标准(任一 Trial 不达标该用例 0 分)。容忍阈值不是由任务类型机械决定的,而是由错误的业务代价决定的。

(6)用例集构成与执行画像(TPerf 实测数字)。 TPerf 的用例集按场景分组共 9 大类、30+ 用例,每个用例对应一条真实且不可变的压测记录(可复现):

场景分组 用例数 场景分组 用例数
CPU 瓶颈 6 TCP 队列 3
网卡 5 Nginx 1
磁盘 4 配置问题 1
磁盘 IO 2 正常场景 5
内存 1 — —

执行侧的工程数字:支持 7 模型对比(每用例 × 每模型参数化测试);Trial 并发 + 评分并行 + 三评分器并行;限流自动重试(≤5 次);单用例约 3000s;全量 30+ 用例 × 7 模型约 3–5 小时;用 pytest 实现、TCase 平台管理用例;trace 取自 Knot AG-UI 协议事件流(工具调用事件/文本消息事件/token 消耗),由事件流解析器构建调用步骤列表。另有两条值得抄的设计:基线配置随代码仓库 Git 版本化、执行结果每次重新生成并归档;支持重新评分——评分逻辑调整后无需重新触发 Agent,历史 trace 直接重算分。这把"评分器升级"与"被测系统重跑"解耦了,是评测平台降本的关键机制。

最后补两条门禁口径(腾讯引用 Anthropic 推荐):确定性任务用例集整体通过率需 100%,非确定性任务 ≥95%;能力测评起步通过率 20–50%(目标山峰,主动拓展),回归测评接近 100%(防御漂移,只增不减,CI 每次运行),通过率稳定 100% 后用例"毕业"进回归集。

2.8 规则的边界:哪些东西规则永远判不了

程序化评分的边界与它的优点同源:只能判"能写成规则的已知硬条件"。阿里给出的分工口径:规则看硬条件(工具、状态、字段、禁用动作),LLM 看"语义/策略合理性"。三类东西规则永远判不了:

判不了的 例子 该交给谁
语义正确性 回复引用的退款政策是否真实存在、事实是否准确 LLM Judge(groundedness 检查,见第 E05 章)
语气与体验 是否像"热情专业的旅行顾问"、是否有同理心、是否啰嗦 LLM Judge rubric(见第 E05 章)
策略合理性 该先澄清还是先操作、补偿口径是否符合内部政策 人工定口径 + Judge 辅助(见第 E06 章)

还有两个与边界相关的常考问题:

  1. 假阳性(结果对、路径错):回复看似正确,但执行路径已偏离或带风险——阿里对此的处方是加过程型与风险型检查(工具断言、禁用动作、SOP 顺序),腾讯则在 Rubric 评分输出中专门设了 is_false_positive 布尔字段(结果对但过程错的虚假成功)。程序化评分能抓住其中可规则化的部分(跳过校验工具、越权调用),抓不住的部分要靠轨迹级评估与 judge(详见第 E07 章 · 轨迹与 Agent 级评估)。
  2. 规则会不会被钻空:关键词黑名单会被同义改写绕过、单点断言会被"表面达标"满足。对策是黑白名单只做必要非充分的第一道防线,关键检查用状态级多点校验,并给评分器本身配对抗样本(见本章易错点 9 与第 E10 章)。

拿到一个新检查需求时,用这个顺序决定它该落在哪一层:

这条判定能写成代码断言吗?
├── 能,且只看输出/trace 就有确定答案 ──→ 程序化评分(本章)
├── 写不成代码,但可以写成"人/模型能对照的判断标准" ──→ LLM Judge + rubric(第 E05 章)
│       └── judge 与人工一致率校准到 ~85% 才进自动化(阿里/腾讯口径)
└── 依赖内部政策口径 / 价值判断 / 高风险兜底 ──→ 人工(第 E06 章)

本章收束:程序化评分 = 确定性优先的八类检查 + 结构化输出前提 + DSL 规格 + 五元组输出 + 分层流水线 + 扣分制/基线/对齐工程。它判不了的语义、语气与策略合理性,正是下一层的领地——详见第 E05 章 · LLM-as-Judge 深入。


三、面试高频考点

# 考点 分级 一句话考察意图
1 确定性优先原则与三类评分器选择顺序 ⭐ 基础必备 是否理解"能用代码判断的绝不用模型"背后的成本/稳定性/覆盖逻辑
2 程序化检查清单八类 ⭐ 基础必备 能否脱口而出 schema/长度/关键词/P-R-F1/相似度/工具断言/执行指标/基线对比
3 结构化输出是程序化评分的前提 ⭐⭐ 进阶高频 能否说清 JSON schema 强类型 vs prompt 措辞脆弱性的对照与兜底设计
4 评分输出五元组(问题分类/置信度/判定依据) ⭐⭐⭐ 深水区 是否理解"现象入口"与 RCA 的衔接,现象 ≠ 根因
5 分层筛查流水线(粗筛→精判→人工)与成本模型 ⭐⭐⭐ 深水区 能否给出路由纪律(粗筛失败不进精判)并用成本单元算节省
6 expected_behavior DSL 设计 ⭐⭐ 进阶高频 给一个业务场景能否当场写出 must_call/参数约束/预算/关键词规格
7 工具调用断言与轨迹对齐粒度 ⭐⭐ 进阶高频 exact match / 无序集合 / 偏序 / LCS+归一化的取舍
8 基线快照机制与更新时机 ⭐⭐ 进阶高频 "执行 1 次→人工确认→快照";逻辑变更/模型升级/用例修改三时机
9 扣分制与门禁线设计 ⭐⭐ 进阶高频 初始 100 分负分制、达标线 80、扣分明细 JSON 可归因
10 稳定性容忍阈值分级与 pass^k ⭐⭐ 进阶高频 关键决策 0% / 辅助分析 ≤10% / 创意 ≤40%;case_score 任一不达标为 0
11 0%/100% 通过率异常诊断 ⭐⭐ 进阶高频 "通常是任务/评分器坏了,不是模型弱"——评分器自身 QA 意识
12 规则的边界与三层衔接 ⭐⭐⭐ 系统设计 硬条件归规则、语义归 Judge、口径归人工;假阳性靠过程型检查

四、经典面试题与参考答案

题 1(基础):什么是程序化评分?常见的检查项有哪些?

答题思路:先给定义与四个特性(快/稳/免费/可单测),再报菜名式过八类清单,最后点一句它在三层中的位置。

参考答案: 程序化评分是把评测中的"硬条件"写成代码断言,由脚本(断言/Lint/AST/解析器)确定性执行。特点:毫秒级、零费用、稳定性 100%(同一输入永远同一结论)、可单测可版本化,是三层评分(确定性 > Rubric > 人工)的第一层,承担硬门禁角色。常见检查项八类:① schema/格式校验;② 空输出与异常长度;③ 关键词/正则黑白名单;④ 分类任务的 P/R/F1;⑤ 有参考答案时的语义相似度;⑥ 工具调用断言(是否调用/参数正确/禁用工具);⑦ 执行指标(调用次数/token 阈值/耗时预算);⑧ 基线对比(与人工确认的基线快照逐项比)。Airbnb 对前两项的评价是"永远有用",并强调程序化检查"确定性、最先跑"。

题 2(基础):为什么说"能用代码判断的绝不用模型"?三类评分器怎么选?

答题思路:四个理由(成本/稳定性/可审计/零偏差)逐条给数字,再给选择顺序与门禁分工,最后补"分层防御不是三选一"。

参考答案: 四个理由:① 成本——规则毫秒级免费,Judge 秒级加 API 费,人工分钟到小时级;② 稳定性——代码断言 100% 稳定,Judge 有抖动需降噪,人工取决于标注员水平;③ 可审计——规则在代码里可单测、可 review、可 git 版本化,prompt 里的规则做不到;④ 零偏差——不存在 judge 的位置/冗长/自我偏好问题。腾讯的选择优先级是确定性 > Rubric > 人工,门禁角色也分层:确定性做硬门禁,Rubric 做分级门禁(error 硬/warning 软),人工不进门禁只做采样审查与校准。但注意三层是分层防御不是三选一:规则只能判"已知硬指标",语义/语气/策略合理性必须交给 Judge 与人工,阿里口径是"规则主判、Judge 辅助、人工兜底"。

题 3(进阶):为什么说结构化输出是程序化评分的前提?如果模型只能输出自由文本会怎样?

答题思路:对照两种做法的失败模式,落到三件工程事(生成侧约束/解析兜底/格式失败计数),用 DoorDash 迁移案例收尾。

参考答案: 程序化评分依赖稳定可解析的结构。Airbnb 明确建议用 JSON schema 严格类型化的结构化输出,不要只靠 prompt 措辞产出结构,否则下游管道会坏。对照来看:强类型约束下格式由解码层保证,直接 json.loads 即可断言字段与类型;靠 prompt 措辞则无保证,模型偶发多说话、漏引号、markdown 包裹,解析要靠脆弱正则打补丁,失败还常常静默。工程上三件事:生成侧尽量用 API 的结构化输出约束;解析失败本身作为评分信号(判 fail 并给问题分类 invalid_json),绝不让评分器抛异常中断批跑;把格式失败率单列统计。一个反哺生产的例子:DoorDash 模型迁移时发现新模型工具参数形状不符,修复手段是确定性的输入防护——错误形状强制转换回预期形状而非丢弃调用,最终迁移延迟降 35%、质量无损。

题 4(进阶):评分输出应该包含哪些字段?只报 pass/fail 会失去什么?

答题思路:报五元组字段,把每个字段挂到一个下游能力上(聚类/RCA 路由/人工路由/申诉),结尾强调现象 ≠ 根因。

参考答案: 阿里的规范:评分输出不止 pass/fail,还要有问题分类(现象层)、问题现象、置信度、判定依据。对应五元组实现:score(连续分,供趋势观察)/ passed(门禁硬判定)/ issue(可枚举的问题分类常量)/ confidence(把握度)/ evidence(判定依据)。只报 pass/fail 会失去四个下游能力:① 聚类——issue 可枚举才能统计出"退款已发货场景 23 次跳过订单状态校验,集中在 v1.8 Prompt"这样的问题簇;② RCA 路由——issue 是"问题现象 × 功能模块"映射表的键,是 RCA 的现象入口;③ 人工复核路由——低置信样本才升级人工;④ 申诉与回放——没有 evidence 的 fail 无法复核。最后强调现象 ≠ 根因:现象进 RCA 流水线,根因由后续分模块诊断产出,二者不能混。

题 5(进阶):给一个电商退款客服 Agent 设计程序化评分规格(expected behavior)。

答题思路:按 DSL 五方面现场写规格(工具断言/输出断言/预算/基线/风险分级),并说明检查项来源是 badcase 观察而非拍脑袋。

参考答案: 按 DSL 五个方面写:① 工具断言——must_call 含 query_order(退款前必查订单),must_not_call 含绕过校验的直接退款工具,partial_order 约束先鉴权后执行,参数约束 execute_refund.amount ∈ [0, 订单实付];② 输出断言——schema 必填 action/reason,长度上下限(过短装不下最小结构、过长疑似失控),黑名单("保证一定退款成功"等过度承诺话术)与条件白名单(提到退款必须披露"1-3个工作日"时效);③ 执行指标——调用次数上限、总耗时预算,防死循环与成本失控;④ 基线对比——与人工确认的基线会话做归一化后的序列对齐与效率比(token/步骤超基线 >50% 判效率退化);⑤ 风险分级——P0 用例失败即门禁拦截,并按风险等级决定是否追加人工复核。设计依据不是拍脑袋,而是从 badcase 回流中观察到的失败模式反推(Airbnb 做法:跑 100 条样本人工精读再建测试)。

题 6(进阶):如何程序化判定"工具调用序列是否正确"?exact match、无序集合、偏序约束、LCS 对齐各在什么时候用?

答题思路:四种粒度由严到松排开,各配一个适用场景,引用 TPerf 的归一化规则与扣分数字作为实战锚点。

参考答案: 四种粒度由严到松:① exact match——只适合完全确定性的流水线,真实 Agent 路径多样,用它会把合法替代路径判错;② 无序关键调用集合——只查 must_call/must-not-call 是否满足,适合安全护栏;③ 偏序约束——只约束关键先后(先鉴权后操作),保留路径自由度,适合流程合规;④ LCS 对齐 + 归一化——允许局部插入/缺失/乱序,按差异扣分而非一票否决,适合"过程是否退化"的回归判定。腾讯 TPerf 用第四种:先把步骤归一化(时间戳占位 / 搜索工具忽略查询参数 / 写入只留路径 / 终端命令提取脚本名 / 连续读文件组内不校验顺序),再 LCS 对齐,不一致/多余/缺少/顺序错各扣 2 分、上限 −10。核心取舍:断言守关键调用(安全),对齐量化退化程度(回归),永不要求全序列逐字一致。动手可跑 cd evals-special/labs && python3 eval_lab06_trajectory_eval.py。

题 7(进阶):解释粗筛 → 精判 → 人工复核的分层筛查流水线,并算一笔成本账。

答题思路:三层职责 + 一条路由纪律 + 分层依据(依赖信息范围),最后用 lab03 的成本单元数字定量收尾。

参考答案: 阿里的三层设计:粗筛层用规则 Scorer + 轻量 Judge 快速分成明显通过/明显失败/存疑;精判层用完整规则 + Judge 确认 badcase 并产出初始问题分类/现象/置信度/判定依据;人工复核层处理高风险/低置信/冲突/口径未固化样本。路由纪律:粗筛已明确失败的样本绝不进精判,否则昂贵判定被垃圾样本稀释,成本随样本量线性恶化。分层依据是评分器依赖的信息范围:只看输出文本的最便宜(空输出/长度/JSON/关键词),需要完整 trace 的次之(工具断言/参数值域/LCS),需要 LLM 语义判断的最贵。成本账(lab03 实测,固定种子可复现):19 条样本粗筛拦截 8 条,11 条进精判,LLM Judge 仅调用 10 次,实际开销 490 成本单元 vs 全量精判 baseline 874 单元,节省 43.9%(实验断言 ≥35%)。样本越脏、judge 越贵,节省越大。

题 8(系统设计):为公司的 Agent 评测平台设计完整的程序化评分子系统。

答题思路:按"接口契约 → 用例规格 → 流水线 → 门禁报告 → RCA 衔接 → 评分器自身 QA"六组件讲,每个组件给一个关键设计决策。

参考答案: 六个组件:① 评分器接口契约——所有评分器(规则或 Judge 包装)统一返回五元组 {score, passed, issue, confidence, evidence} 加评分器署名,issue 从可枚举常量表取,接口即 lab03 的 ScoreResult;② 用例规格——prompt + expected_behavior DSL(must_call/参数约束/预算/黑白名单/基线引用),基线用会话标识指向人工确认快照而非硬编码预期输出,随代码仓库版本化;③ 分层流水线——粗筛(文本级便宜规则)→ 精判(trace 级规则 + Judge)→ 人工复核路由(低置信/高风险/冲突),粗筛定案的失败不进精判,全程记录各层拦截数与成本单元;④ 门禁与报告——扣分制(初始 100、达标线 80、扣分明细 JSON),P0 用例一票否决,输出按问题分类聚合的分布报告,版本对比带统计口径(详见第 E09 章);⑤ 与 RCA 衔接——issue 作为"现象入口"进 RCA 映射表,评分记录绑定 prompt/模型版本支持问题簇聚类;⑥ 评分器自身 QA——配 golden 正负样本(含"看起来对其实错"的对抗样本)防误杀与漏放,评分器变更走回归,通过率 0%/100% 触发异常诊断(通常是评分器坏了不是模型弱),线上抽检与评分器结论的一致率持续监控。

题 9(进阶):回归集通过率从 92% 突然变成 100%,你的第一反应是什么?怎么排查?

答题思路:展示"先怀疑测量系统再谈模型能力"的资深反应,按评分器 → 基线 → 用例 → 交叉验证的顺序排查。

参考答案: 第一反应不是庆祝,而是怀疑测量系统。腾讯的经验:通过率 0% 或 100% 通常是任务或评分器坏了,不是模型弱。排查顺序:① 查评分器——最近有没有改过断言、正则、基线或聚合逻辑?用留存的 golden 正负样本(尤其"看起来对其实错"的对抗样本)重跑评分器,验证它还能抓住坏样本;② 查基线——基线是否被意外重录成了当前版本的输出(基线与被测同源会互相"背书");③ 查用例——回归集是否被悄悄删掉了失败用例,或数据文件路径失效导致断言空转;④ 查被测——是否真发生了能力跃升,用另一套未动过的评测集交叉验证,并抽查 20~50 条"通过"样本人工确认。结论要能区分"真的变好了"与"尺子变松了"。同样的逻辑适用于分数突变 0%:先查任务定义与基线,再怀疑能力。


五、易错点 · 反直觉点

  1. 把规则能判的交给 Judge:格式、字段、工具调用这类硬条件让 LLM 判,等于花钱买抖动——judge 会偶发误判且结论不可复现,门禁随之不稳。→ 真相:确定性 > Rubric > 人工是选择优先级,规则判不了的才升级。→ 记忆锚点:能写断言的绝不写 prompt。
  2. 评分输出只有 pass/fail:失败的样本没法聚类、没法路由、没法归因,评测平台退化成"出分工具"。→ 真相:必须有问题分类/置信度/判定依据,它们是 RCA 的现象入口与人工复核的路由信号。→ 记忆锚点:fail 必须带着"为什么 fail"出门。
  3. 把现象分类当根因:"工具未调用"写进根因报告,修复动作只能是无力的"加强 prompt"。→ 真相:现象 ≠ 根因,现象进映射表缩圈,根因靠分模块诊断产出,要指向 owner 与处理动作。→ 记忆锚点:现象是门牌号,根因是住户。
  4. 工具序列 exact match:时间戳不同、查询参数不同、合法路径顺序不同,全被判错;评测集退化成背答案。→ 真相:先归一化(时间戳占位/忽略查询参数/写入只留路径),再 LCS 对齐按差异扣分,关键调用用 must-call 断言守。→ 记忆锚点:断言守关键,对齐量退化。
  5. 靠解析自由文本做程序化检查:模型一句"好的,结果如下:"就能让你的正则全线失效。→ 真相:结构化输出(JSON schema 强类型)是前提,解析失败本身也要计为问题分类,而不是抛异常。→ 记忆锚点:结构不强制,规则全白写。
  6. 所有样本走全套检查:明显 JSON 损坏的样本也去调 LLM judge,昂贵判定被垃圾稀释。→ 真相:粗筛定案的失败绝不进精判;分层依据是评分器依赖的信息范围。→ 记忆锚点:便宜的筛子先过,贵的判官只审疑案。
  7. 通过率 100% 当好消息直接汇报:可能是评分器坏了、基线被同源污染、或失败用例被悄悄移除。→ 真相:0% 和 100% 都是异常信号,先查任务定义与评分器,再谈模型能力。→ 记忆锚点:满分先怀疑尺子。
  8. 基线快照一劳永逸(或动不动重录):被测系统升级后不重录,基线测的是旧世界;每次跑完都重录,基线永远在给现状背书。→ 真相:只有三个重录时机——Agent/Skill 逻辑变更、模型版本升级、用例本身修改,且重录必须再过一次人工确认。→ 记忆锚点:基线只在世界变了时变。
  9. 把关键词黑名单当安全的全部:同义改写、拆字、隐喻都能绕过正则。→ 真相:黑白名单只是必要非充分的第一道防线,语义层的过度承诺/注入回声要靠 Judge,高风险场景保留人工复核。→ 记忆锚点:正则判存在,Judge 判语义,人判口径。

六、推荐资源

一手工业实践(本章素材来源,完整精读笔记见 _research/00-industry-practice.md)

  1. 腾讯技术工程《AI Agent & Skill 测评方案及落地实践》(martinskxu,TEG 云架构平台部网关测试团队)——三类评分器对照表、扣分制与 80 分达标线、基线快照机制、稳定性容忍阈值分级、TPerf 实战(LCS 对齐 + 30+ 用例 × 7 模型)的原始出处。
  2. 阿里技术《Agent 评测:方法论与体系设计》(2026 年第 28 篇)——"规则主判、Judge 辅助、人工兜底"、分层筛查流水线、评分输出规范(问题分类/置信度/判定依据)与 RCA 衔接的原始出处。
  3. Airbnb《Eval-driven development: Lessons from evaluating GenAI at scale》(Rohit Girme, Dan Miller, Mia Zhao, Lifan Yang, Clint Kelly)——三层评估框架中程序化检查清单(schema/长度/关键词/P-R-F1/语义相似度)与结构化输出建议的原始出处。
  4. DoorDash《Building Ask DoorDash (Part 3): Evaluation》(Steven Xu, Fabio Flores, Twisha Jain, 2026-06-30)——rubric 工程、Transcript Builder 与模型迁移案例(工具参数形状强制转换、延迟降 35%)。
  5. Anthropic《Demystifying evals for AI agents》(2026-01)——打分三层顺序(确定性代码检查 > 模型 rubric > 人工校准)、"确定性任务通过率 100% / 非确定性 ≥95%"口径(腾讯文中引用)的出处。

动手实验(labs)

  1. labs/eval_lab03_programmatic_scorers.py(本章核心实验)——五元组评分输出、规则评分器家族、粗筛→精判两层流水线与成本节省断言。运行:cd evals-special/labs && python3 eval_lab03_programmatic_scorers.py
  2. labs/eval_lab06_trajectory_eval.py——LCS 轨迹对齐与归一化的实现,呼应 2.7 的 TPerf 机制(详见第 E07 章 · 轨迹与 Agent 级评估)。
  3. labs/eval_lab09_rca_pipeline.py——评分输出的问题分类如何被 RCA 映射表消费(详见第 E11 章 · Badcase 根因分析与优化闭环)。
  4. labs/eval_lab05_judge_calibration.py——下一章预告:规则判不了的交给 Judge 之前,先看 Judge 如何被校准(详见第 E05 章)。

交叉引用

  • 三层评分的另外两层:第 E05 章 · LLM-as-Judge 深入、第 E06 章 · 人工评估与评分路由。
  • 程序化评分的上下游:第 E02 章 · 评估指标体系(pass^k 与门禁统计口径)、第 E03 章 · 黄金数据集与用例设计(用例与基线从哪来)、第 E07 章 · 轨迹与 Agent 级评估(过程型检查的展开)、第 E10 章 · 评测驱动开发(检查项如何从失败中生长)、第 E11 章 · Badcase 根因分析(问题分类的下游)。
  • 主手册第 8 章 · Agent 评估与可观测性——本章是其"规则式 grader"一节的深挖版。
第 5 章 / 共 15 章

评分三层之二:LLM-as-Judge 深入

📌 本章导航(6 节)

一句话导读:规则判不了的(语气、有据性、策略合理性),交给 LLM Judge;但裁判本身是一台未经校验就会漂移的测量仪器。本章讲透:judge 的解剖结构(rubric + 证据切片 + verdict + rationale)、rubric 工程(二元检查 / eligibility 前置 / "描述成功长什么样")、四大偏差的机理-量化-缓解全表、Airbnb 式五步校准闭环(78%→88% 实战)、阿里"三统计"持续运营、JudgeBench 揭示的"高一致≠正确"、以及 2024-2026 可训练 judge 与 judge 攻防前沿。学完本章,你能独立搭建、校准、运营一个可进门禁的 judge 子系统,并在面试中回答"裁判可信吗"这个 evals 最核心的问题。


一、知识图谱

LLM-as-Judge(评分三层之二 · 语义判定层)
│
├── 定位:规则判「硬条件」,Judge 判「语义/策略合理性」,人判「口径与校准」
│   └── Judge = 测量仪器:仪器不先校准,量出来的全是噪声
│       DoorDash 量级:平均 1 条/天员工反馈 → 2,000 个/天自动评分会话
│
├── 解剖(anatomy)
│   ├── 输入:rubric(单条标准)+ 证据切片(只给该标准依赖的 trace 切片)
│   ├── 五条纪律(Airbnb):每维一个 judge / 与生成模型不同源 / 带 few-shot
│   │                        / 强制输出 schema / 清晰打分说明
│   └── 输出:verdict + rationale(+ 置信度 / 问题分类 → 供 RCA 消费)
│
├── Rubric 工程
│   ├── 二元检查 vs 分级打分(DoorDash:binary 汇总方差更低)
│   ├── eligibility 适用性前置:先判"本标准是否适用",不适用则跳过
│   ├── 描述"成功长什么样",而非指定唯一答案(容纳所有合法路径)
│   └── 铁律:"如果人都无法一致地应用 rubric,模型也不可能"(Airbnb)
│
├── 四大偏差:位置 / 冗长 / 自我偏好 / 风格
│   ├── 量化:等质量对照组、swap consistency、长度回归、自我识别率
│   └── 缓解:交换聚合 / LC 回归 / 异构评审团 PoLL / 组合去偏
│       系统复盘(2604.23178, 2026):单点策略收益有限;
│       中端模型 + 组合去偏 胜过前沿 judge 且便宜约 15 倍
│
├── 校准闭环(Airbnb 五步法)
│   ├── 50-100 gold set(必须含坏样本)→ 跑 judge → 目标一致率 high-80s~90s
│   ├── Cohen's κ / Krippendorff's α → 分歧分析改 rubric → 重复
│   ├── 工业口径:阿里 ~85% 进自动化;腾讯 ≥85% 可用
│   └── 自动化校准:GEPA 反射式 prompt 进化(DoorDash 生产在用)
│
├── 持续运营
│   ├── 金标校准集 + 失败模式变化时重新校准
│   ├── 升级三统计(阿里):与人工一致性 / 高风险漏判率 / 边界样本稳定性
│   └── Judge 版本化:模型 + prompt + 参数 + 判决协议,建"计量档案"
│
├── 元评估:judge 之间高一致 ≠ judge 正确
│   ├── JudgeBench(2410.12784):最强 judge 客观准确率 ~57% vs 人类 ~78%
│   ├── RewardBench / MM-Eval(18 种语言)/ Know Thy Judge(鲁棒性)
│   └── Judge 是攻击面:对抗攻击可让安全 judge 100% 放行有害输出
│
└── 前沿路线(2024-2026)
    ├── 可训练 judge:Prometheus 2 / Self-Taught Evaluators / GenRM / RM-R1
    ├── 零权重更新:GEPA 进化 judge prompt/rubric(rollout 少最高约 35 倍)
    └── 攻防:PoisonedRAG 投毒消费外部内容的 judge;judge 作奖励与 reward hacking

本章在三层评分中的坐标(衔接第 E04 章与第 E06 章):

问题 由哪一层回答 本章覆盖
格式 / 工具调用 / 预算等硬条件 程序化评分(第 E04 章) 不重复,只作边界
语气 / 有据性 / 策略合理性等语义判断 LLM-as-Judge ✅ 全章
政策口径、judge 校准的"人工真值"从哪来 人工评估(第 E06 章) 只讲校准接口
judge 分数能不能直接进门禁 统计口径(第 E09 章) 给出 85% 线背后的统计逻辑

二、核心概念精讲

2.1 定位:Judge 是「测量仪器」,不是「打分捷径」

为什么需要这一层。 阿里对评分分工的总纲是:规则看"硬条件"(工具、状态、字段、禁用动作),LLM 看"语义/策略合理性"。第 E04 章已经说明规则永远判不了语义正确性、语气、策略合理性——这些"未知软指标"正是腾讯三类评分器对照表中 Rubric 评分器的覆盖区:大模型(固定版本)按写在 Prompt + JSON Schema 里的规则打分,秒级出结果、付 API 费用、稳定性"有抖动(需降噪)"、做分级门禁(error 硬 / warning 软)。

Judge 解决的是规模化判断问题。 DoorDash 在构建 Ask DoorDash 评测体系时,把"规模化判断"列为五大挑战之一:"是否帮到用户需要人类级判断,但人工不可扩展",解法就是"校准过的 LLM judge 顶替人类评审"。他们给出的量级对比(原文数字):员工反馈平均只有 1 条/天,而评测体系做到 2,000 个/天自动评分会话;全国上线前 agent 质量分 +8 分、错误率近乎减半;全量回归从手工 6+ 小时压到自动约 20 分钟。没有 judge,这个反馈密度根本不可能存在。

但 judge 的定位必须摆正:它是一个带紧反馈环的测量问题。 DoorDash 的原话是两条:

  1. "LLM Judge only useful if it agrees with human reviewers."(judge 只有与人工评审一致时才有用)
  2. 人工用在杠杆最大处:定 rubric、标注校准集、审计 judge 行为;打分主力才是 judge。

换个说法:judge 是评测管线里最核心的"测量仪器",仪器本身需要校准(元评估)、需要防作弊(鲁棒性测试)、需要版本管理(prompt + 模型 + 参数)——否则整个评测体系建立在一个未被校验的传感器上(_research/01-llm-judge.md 调研结论)。Airbnb 对未校准 judge 的判词只有八个字:"未校准 judge 会制造误导性信心"——分数看起来很精确,量出来的却是 rubric 的缺陷。

引入 judge 之前,先回答三个问题(决策表):

问题 是 否
这条检查能写成代码断言吗(schema/关键词/工具调用/预算)? 写成规则,不用 judge(第 E04 章) 继续问下一行
人能否对这条标准给出一致的判断? 写 rubric,进 judge 校准流程 先停下:人都判不一致,说明标准未定义清楚(找业务定口径,第 E06 章)
该判断是否依赖内部政策口径(赔付规则、合规红线)? 人工定口径 → 能规则化就规则化,不能则 judge + 人工复核双轨 judge 独立承担,按本章流程校准与运营

一笔经济学账。 DoorDash 全量回归 sweep = 50 场景 × 8 trials = 400 次对话:人工本地聊约 1 分钟/次 → 6+ 小时;模拟器 + judge 约 20 分钟。按每次变更都跑一遍、每周数次变更计算,judge 化评测把迭代周期从"天"压到"小时"——这正是"评测是迭代指南针"(第 E01 章)能成立的前提。反过来说:如果你的 judge 未经校准,你只是用 20 分钟拿到了一份错误的报告,然后更快地把事情做坏。

这一节的结论:引入 judge 的门槛很低(写个 prompt 就行),但让 judge 可信的门槛很高(校准 + 运营 + 元评估)。本章剩下七节全部在讲后半句。

2.2 Judge 的解剖:rubric + 证据切片 + verdict + rationale

一个生产级 judge 的调用接口由四部分组成。Airbnb 给出的五条纪律与 DoorDash 的接口设计互相印证:

Airbnb 的 judge 使用规则(原文):

# 规则 工程含义
1 每个质量维度一个 judge 不要万能 judge;groundedness、语气、简洁性各配一个,互不污染。配套原则:judge 要少而精——3-5 个经校准的评估器好过一堆嘈杂的评估器(EDD 五原则之三)
2 judge 模型尽量与生成模型不同 防自我偏好(实证见 2.4;GPT-4 对自己输出的识别率约 72%,2404.13076)
3 带 few-shot 示例中必须含边界样本(阿里补充:few-shot 含边界样本与判定 CoT)
4 强制输出 schema JSON 结构化输出,verdict 与 rationale 分字段,下游可解析、可统计
5 清晰打分说明 每分档有可执行标准(阿里),不允许"凭感觉给分"

DoorDash 的 judge 接口(逐条标准独立评分):

  • 输入 = 标准 + 该标准依赖的证据。注意不是"整条 trace 扔给 judge":每条标准声明自己依赖哪片证据,Transcript Builder 只把那一片交给 judge(详见第 E07 章 · 轨迹与 Agent 级评估)。例如 grounding 检查只拿"agent 的论断 + 背后工具输出";多样性检查只拿"推荐结果 + 原始请求";叙述检查只拿 agent 工作时流式输出的文本。聚焦证据让判断更一致,也避免无关 trace 噪声干扰判决。
  • 输出 = verdict + 简短 rationale。

把两边合成一个可直接照抄的 judge prompt 骨架:

[system]
你是严格的评估器。只评判下面这【一条】标准,不要顺带评价任何其他质量。
先判断该标准是否适用于本会话(eligibility);不适用则 applicable=false 并结束。

[user]
## 标准(rubric,单条)
{criterion_text}
## 判 1 分当且仅当
{positive_desc}          # 描述"成功长什么样"
## 判 0 分当且仅当
{negative_desc}          # 枚举典型失败现象
## Few-shot(含边界样本与判定思路)
{examples}
## 证据(仅该标准依赖的 trace 切片)
{evidence_slice}
## 输出(严格 JSON,禁止其他文本)
{"applicable": bool, "verdict": 0|1, "confidence": 0.0~1.0,
 "rationale": "引用证据中的原文说明判定依据,≤80 字"}

输出侧的规范与第 E04 章程序化评分的五元组同构:rationale 不止是"解释",它承担三个职能——① 定位(错在哪一片证据上);② badcase 聚类(阿里:输出 reason 用于定位与聚类);③ 审计(人工复核 judge 行为时读的就是 rationale)。阿里进一步要求:每分档有可执行标准;输出 reason;高风险/抽检/低置信场景的 judge 结论要带置信度,置信度低的进人工路由(详见第 E06 章 · 人工评估与评分路由)。腾讯的 rubric 评分器输出则是典型的结构化样例:observation_points(回答是否基于项目规范而非通用知识 / 推理是否清晰连贯 / 有无幻觉编造)+ scoring(process_score 0-100、result_score 0-100、is_false_positive bool)。

为什么要 rationale 先行、分数随后? 这与 GenRM(2408.15240,2024)揭示的规律一致:把评分做成"先写判据、再给结论"的生成任务,比裸打分更稳健、更可审计,还能继承模型的推理能力。工程上记住一条:没有 rationale 的分数不可 debug,也不可被人工审计。

一次完整调用的样例(DoorDash guardrail 风格)——注意 judge 只拿到该标准声明的那片证据:

输入:
  标准:沟通质量——回复简洁,不向用户叙述思维过程。
  证据切片:agent 面向用户的全部回复文本(不含内部工具调用)。
判定:
  {"applicable": true, "verdict": 0, "confidence": 0.92,
   "rationale": "第 2 轮回复中出现『我先去查一下 reorder skill 的返回』,
                 向用户叙述了内部执行过程,命中判 0 条件。",
   "问题分类": "叙述泄漏", "置信度": 0.92}

其中 问题分类/置信度 与第 E04 章程序化评分的输出规范同构——三层评分共用一套输出契约,下游的 RCA 流水线(第 E11 章)才能无差别消费。上例的"叙述泄漏"正是 DoorDash 实战案例 1(reasoning leakage)中被日常线上评分捕获的失败模式。

2.3 Rubric 工程:描述「成功长什么样」

Rubric 是 judge 的"法律条文",其质量决定 judge 的上限。四个关键设计决策:

(1)二元检查 vs 分级打分

维度 二元检查(binary check) 分级打分(1-5 / 0-100)
输出 0/1 + rationale 分档分数 + rationale
方差 低,判定边界清晰 高,"3 分还是 4 分"人都会摇摆
汇总 逐条 binary 汇总为会话级总分(DoorDash) 加权平均,权重本身是争议源
迭代 每条标准独立可改、可单独校准 改一档描述牵动全量表
适用 行为合规、约束满足、事实核对 创意质量、体验类细粒度观察

DoorDash 的选择很明确:每条标准是 binary check,汇总为会话级总分。其 guardrail 与 capability 标准实例(原文):

  • Guardrail(全体 agent 适用):"沟通质量:回复简洁、不向用户叙述思维过程";"信任与诚实:不呈现可证伪虚假信息"。
  • Capability·餐厅发现:"约束满足:推荐满足配送时间/预算/饮食限制";"结果多样性:真实差异而非近似重复"。
  • Capability·杂货购物:"购物执行:用户的明确修改请求被执行";"商品相关性"。

(2)checklist 式场景 rubric:低方差信号。 DoorDash 的离线评测进一步把标准写成场景级清单。例:"两人份 ≤$60 素食 taco 购物清单"——验证每件商品都是素食 taco 原料、小计 ≤$60。这种 checklist 比宽泛通用标准方差更低,小样本更有用,支撑更快迭代(详见第 E08 章 · 对话 Agent 与仿真评测)。

(3)eligibility 适用性前置。 DoorDash 的独创设计:judge 先判该标准是否适用本会话,不适用则跳过——例如"复购流程"标准不会因为一个食谱会话缺少复购步骤而被扣分。这就是 2.2 骨架中 applicable 字段的来源。不做 eligibility 的后果:总分被一堆"不适用但判了 0"的标准拖低,且拖低幅度随会话类型漂移,分数彻底失去可比性。

(4)描述成功,而非指定唯一答案。 DoorDash 对开放式目标的 rubric 要求(原文):"具体到每次能同样判,宽泛到容纳所有合法路径"。rubric 写"推荐满足配送时间/预算/饮食限制",而不是"必须推荐那三家店"——前者判的是约束,后者背的是答案(对照第 E04 章"不要强制固定调用序列"的同一思想)。

一条铁律。 Airbnb 的原话值得裱起来:"如果人都无法一致地应用 rubric,模型也不可能。" rubric 写得含糊("回答要好"),人标不一致,此时不是 judge 不行,是标准不行——先停下修 rubric,再谈校准(人工分歧处理详见第 E06 章)。

完整 rubric 实例(Airbnb 房源 listing 解释可读性,判 0/1):

标准:listing 解释文本的可读性与语气
判 1 分:输出读起来像一位「热情专业的旅行顾问」——
        语气友好、信息以旅客视角组织、措辞自然。
判 0 分(命中任一即 0):
  - 语气错误(冷淡、机械、公文腔)
  - 出现内部术语(系统字段名、业务黑话)
  - 格式差(整块无排版、乱用符号)
  - 语法问题
  - 措辞过繁(堆砌形容词、信息密度低)
输出:reason(引用原文指出命中项)+ 0/1

注意这个实例同时示范了三件事:正向描述"成功长什么样"(热情专业的旅行顾问)+ 负向枚举可观察的失败现象 + 强制输出 reason。阿里对 rubric 的补充要求是"每分档有可执行标准"——即每个分数档都要像上面"判 0 分"列表一样落到可观察、可引用的现象,而不是形容词。

Rubric 好坏对照(评审 rubric 时逐行过一遍):

维度 坏 rubric 好 rubric 原因
可观察现象 "回答要专业" "不出现内部术语、不出现系统字段名" 前者两人打不出同一个分;后者命中与否可引用原文
容纳合法路径 "必须推荐宫保鸡丁" "推荐满足预算 ≤¥100 且不含用户忌口食材" 前者背答案、惩罚合法变体;后者判约束不判路径(DoorDash:"具体到每次能同样判,宽泛到容纳所有合法路径")
适用边界 所有会话一律评"复购引导" eligibility 前置:不适用则跳过 否则不适用场景被系统性扣分,总分随会话类型漂移
分档锚定 1-5 分但只写"5=最好" 每分档列可执行标准与示例(Airbnb 0/1 实例的写法) 无锚定的分级打分方差大到人都会摇摆
证据声明 把整条 trace 扔给 judge 标准声明依赖的证据,只交那一片 无关噪声降低判决一致性(DoorDash Transcript Builder)

2.4 Judge 偏差全景:四大偏差的机理、量化与缓解

Judge 是模型,模型就有偏好。2023-2026 的研究把偏差从" anecdote"变成了可量化的测量学问题。四大偏差总表(全部数字来自 _research/01-llm-judge.md):

偏差 机理 量化方式 缓解手段 关键论文(arxiv,年份)
位置偏差 成对评判中偏好出现在特定位置(常为第一个)的候选 swap consistency:交换 A/B 位置前后判决的一致率;等质量对照组的胜率偏离 50% 的幅度 双向交换取平均(成本 ×2);句级对齐 Split and Merge:拆句→语义对齐→逐单元比较 2305.17926(2023)首次系统证明 LLM 不是公平评估器;2310.01432(2023)
冗长偏差 把"更长"当成"更好",模型可通过写更长刷分 把长度作为协变量回归 logit(P(win)) = α·质量 + β·长度,看长度项系数 β LC win rate:回归掉长度项后重估胜率;排行榜同时发布原始与 LC 两指标 2404.04475(2024,TMLR):AlpacaEval 与 Chatbot Arena 人类排名相关性从 0.937 提升到 0.982
自我偏好 judge 识别并偏好自己生成的文本 自我识别率(judge 能否二分类出自己的输出)+ 自我胜率相对 50% 的偏移 judge 与生成模型不同家族;异构评审团;基于自我识别检测的统计校准 2404.13076(2024):GPT-4、Claude-2、Llama-2、Mistral 均显著偏好自己输出,GPT-4 对自身输出识别率约 72%,开源模型自我偏好更强
风格偏差 markdown/列表/自信语气等表面特征主导判决,压倒事实性与安全性 风格扰动 A/B:同一内容两种排版看判决翻转;跨模型效应量 风格受控对照;组合去偏(见下) 2409.15268(2024):judge 偏好与安全性/世界知识/指令跟随等对齐指标几乎不相关,却强烈偏好风格特征;2604.23178(2026):风格偏差效应量 0.10–0.76,是最主要的残余偏差

三个必须展开的要点:

(1)偏差必须被测量,而不是被假设。 量化偏差的"零刻度"是等质量对照组:两组答案真实质量完全相同时,任何一方的胜率显著偏离 50%,只能来自裁判偏差。动手验证:labs/eval_lab04_judge_bias.py 用 MockJudge(真实质量信号 + 可注入的位置/冗长/自我偏好偏差)完整演示了"注入偏差→量化→缓解→断言缓解有效"的闭环,运行:cd evals-special/labs && python3 eval_lab04_judge_bias.py。

(2)评审团(jury)优于单 judge,但有前提。 PoLL(2404.18796,2024,COLM)用三个不同家族的中等规模模型(Command-R、Llama-3-70B、Mistral-Large)组成评审团多数投票,替代单一 GPT-4 judge,三大发现:与人类判断的相关性高于单一大 judge;成本降到几分之一;跨家族组合显著缓解自我偏好(评委与选手不同源)。但集成的增益依赖评委误差独立:同代模型共享大量训练语料与对齐配方,风格偏好这类偏差是共模的——评审团对自我偏好有效,对共模的风格/格式偏差几乎无效。工程建议:评委来自 ≥2 个模型家族 + ≥2 种规模档。阿里实践中的对应做法是多 LLM 对抗打分治理"judge 与生成模型同源会偏爱自己风格"的偏差。

(3)不要迷信单点银弹,组合去偏 + 中端模型才是最优性价比。 2026 年的系统复盘论文 Judging the Judges(2604.23178,2026)对"去偏方法本身"做了大规模评测:9 种去偏策略 × 5 个 judge 模型(Google/Anthropic/OpenAI/Meta 四家族)× 3 个基准(MT-Bench n=400、LLMBar n=200、自建 n=375)× 4 类偏差。核心结论:

  • 单点去偏策略(swap / calibration / CoT 等)多数收益有限且跨模型不稳定;
  • 风格偏差是最主要的残余偏差(偏向 markdown/结构化输出);
  • "中端模型 + 组合去偏"能胜过前沿 judge 且便宜约 15 倍:Gemini 2.5 Flash + 组合策略达到全场最高一致率 71.0%(κ=0.549),约 $0.001/次评测;而最佳前沿配置 Claude Sonnet 4 仅 69.5%,约 $0.015/次评测。

这三条对工程决策的直接含义:去偏要像做 eval 一样在自己的领域数据上验证迁移性,而不是照搬论文结论;预算有限时,优先把钱花在组合策略上而不是最贵的模型上。

判决协议的选择:

协议 形式 优点 注意事项
单点绝对打分(pointwise) 一条输出 + rubric → 0/1 或分档 可独立评分、可跨批次比较;DoorDash/阿里生产主流 必须 rubric 锚定,否则分数漂移;分档间定义要互斥
成对比较(pairwise) 两条输出 → 谁更好 版本对比时信号最强 位置偏差重灾区,必须交换聚合;胜率先验 50% 使小样本即可看出方向
参考对比(reference-based) 输出 + 参考答案 → 判一致性 有金标时最省 judge 推理 参考答案本身要维护;警惕字面匹配误罚正确改述(Airbnb 78% 案例)

默认判决协议(综合上述证据的推荐配置): 双向位置交换取平均(或随机化位置)+ 判据先行(先写理由再打分)+ 温度 0 / 低采样;成对比较优于绝对打分(绝对打分必须配 rubric 锚定)。

2.5 Judge 校准完整流程:从 78% 到 88%

校准是 judge 从"能用"到"可信"的唯一通道。Airbnb 的五步法(原文流程):

① 建 50-100 条 gold set(必须含坏样本)
② 用 judge 跑该集合
③ 目标一致率 high-80s~90s%;分歧可用 Cohen's kappa / Krippendorff's alpha 度量
④ 检查分歧样本 → 改 rubric / few-shot 示例 → 回到 ②
⑤ 失败模式变化时重新校准(rubric 演进、被测系统改版、新能力上线)

实战案例(Airbnb 旅行平台客服政策问答助手,校准段): PM/SME 标注 60 条 gold(含失败样本);judge 初始一致率 78%(过低)——分歧分析发现 judge 误罚了"正确的改述"(答案正确但与参考措辞不同,字面重叠式 rubric 把它判错);修订 rubric(放宽改述惩罚、增加事实核对项)与 few-shot 后一致率达到 88%;同期检索改进减少了 groundedness 失败。labs/eval_lab05_judge_calibration.py 完整复刻了这个案例(60 条 gold、"正确的改述"与"流畅的错误"两类陷阱样本、v1 一致率 ~80% → v2 ≥85%),运行:cd evals-special/labs && python3 eval_lab05_judge_calibration.py。

gold set 的两条硬性要求:

  1. 必须含坏样本(Airbnb 十条要点之⑦)。只有好样本的 gold set 校准不出 judge 的"漏判"能力——judge 全判 pass 也能刷高一致率。
  2. 必须含两类陷阱样本:正确的改述(考验 judge 是否死抠字眼)与流畅的错误(读起来通顺、实则事实错误,考验 judge 能否核对事实)。前者对应上面 78% 的根因,后者对应"风格压倒实质"的偏差(2409.15268)。

一致率与 Cohen's kappa:为什么必须看两个数。 一致率(agreement)直观但有陷阱:若 gold set 中 90% 是 good 样本,judge 无脑全判 good 也有 90% 一致率。Cohen's kappa 扣除随机一致:

κ = (p_o − p_e) / (1 − p_e)
p_o = 观测一致率;p_e = 按双方边际分布算出的期望随机一致率
常用解读:<0.2 差 / 0.2-0.4 弱 / 0.4-0.6 中等 / 0.6-0.8 良好 / >0.8 几乎完全一致

样本类别不平衡越严重,κ 与一致率的差距越大——这正是"门禁要带统计口径"(第 E02 章、第 E09 章)在 judge 校准上的体现。多于两个标注者或有序类别时,用 Krippendorff's alpha。

分歧诊断决策表(第 ④ 步怎么"检查分歧"): 把不一致样本按"样本类别 × 分歧方向"拆开后,按表索骥:

分歧模式 典型根因 处方
FN 集中在"正确的改述" rubric 死抠字面(字面重叠式判据) 放宽改述惩罚,把"与参考一致"改为"事实核对"(Airbnb 78%→88% 的修法)
FP 集中在"流畅的错误" judge 只看通顺度,不核对证据 在 rubric 中加"必须引用证据原文"要求 + 负向 few-shot
人机在同类样本上也不一致 rubric 本身含糊(人都用不一致) 先停下修标准/找业务定口径(第 E06 章),再重标 gold
边界样本反复摇摆 判决抖动:温度过高 / 判据未锐化 温度降到 0;把"基本/大致"类措辞换成可观察判据
分歧均匀散布、无模式 judge 模型能力不足或任务超出 judge 边界 换更强/异构 judge;或该维度降级为人工评分

关键纪律:分歧分析必须按"样本类别 × 方向"拆开看,整体一致率会掩盖局部失效——这也是阿里要求 judge 输出 reason、DoorDash 把"审计 judge 行为"列为人工三大杠杆之一的原因。

四家公司的校准口径对照(全部为素材原文数字):

公司 口径 细节
Airbnb 目标一致率 high-80s~90s 50-100 gold set 含坏样本;分歧用 Cohen's κ / Krippendorff's α 度量;失败模式变化时重新校准
阿里 与人工复核一致率约 85%(参考值)后进日常自动化 周期性校准;一致性统计用一致率或多模型对抗 Kappa
腾讯 一致率 ≥85% 才可用 抽样 100-200 条对齐人工与 judge;"校准 LLM 评委"是人工六个必要场景中最核心的一个
DoorDash 只保留在留出集上提升与人工标注一致率的 judge prompt 修订版本 用 GEPA prompt optimization 打磨 judge 判定边界;rubric 演进(新增能力)时收新标注、重新校准

GEPA:把 judge 调优从炼丹变成自动化搜索。 GEPA(2507.19457,2025)是反射式 prompt 进化优化器:对含 LLM prompt 的系统采样轨迹→用自然语言反思失败原因→提出并测试 prompt 更新→在帕累托前沿上合并互补经验。论文数字:在多个任务上平均超过 GRPO 约 6%、最高约 20%,超过最强 DSPy 优化器 MIPROv2 10% 以上(如 AIME-2025 上 +12%),且 rollout 消耗少最高约 35 倍。DoorDash 把它用在 judge 校准上(上表第四行):迭代提出 judge prompt 修订,只保留在留出集上提升一致率的版本。其工程意义:当人工校准标签只有几十到几百条(典型情况)时,GEPA 式反射优化比 RL 微调现实得多;优化对象就是 rubric 措辞、评分流程、few-shot 示例,优化目标是"与人工标签的一致率"。注意防过拟合:必须保留 held-out 校准集——优化目标本身会被 gaming。

把五步法压成一段可执行的循环(labs/eval_lab05_judge_calibration.py 的完整实现即此结构):

gold   = 加载校准集()            # 50-100 条人工判定;必含坏样本 +
                                 # 「正确的改述」「流畅的错误」两类陷阱
while True:
    pred   = judge.run(gold)                    # ② 跑 judge
    report = 一致性报告(pred, gold)              # 一致率 / κ / 混淆矩阵
    if report.一致率 >= 0.85 and report.kappa >= 0.6:
        break                                   # 达标:阿里/腾讯口径
    分歧 = report.按(样本类别, 方向).分组()       # ④ 分歧诊断(见上表)
    rubric = 修订(rubric, 分歧)                  # 修判据 / 加 few-shot
    judge  = judge.换(rubric)                    # 回到 ②
# ⑤ 上线后:失败模式变化(新能力/被测系统改版/rubric 演进)→ 回到 ①

校准不是一次性动作。 第 ⑤ 步常被忽视:被测系统的能力边界变了、新的失败模式出现了、rubric 新增标准了,judge 的判定边界就过期了。DoorDash 明确写道:校准持续——rubric 演进时收新标注、重新校准。

2.6 Judge 的持续运营:校准集、升级三统计、版本化

Judge 通过校准只是开始,生产运营要解决三个问题:怎么知道它漂移了?升级时怎么验证?分数跨版本怎么比?

上线前速查表(judge 计量自检,任何一条为"否"都先补课):

# 检查项 对应小节
1 rubric 每条标准都能让人一致地判定? 2.3
2 校准集 50-100 条,含坏样本与两类陷阱? 2.5
3 一致率 ≥85% 且 κ ≥0.6? 2.5
4 高风险样本漏判率单独测过? 2.6
5 judge 与生成模型不同源(或有统计修正)? 2.4
6 版本四元组(模型/prompt/参数/协议)已登记? 2.6
7 离线与线上是同一 rubric + 同一 judge? 2.6
8 安全场景过了鲁棒性探针(风格扰动/注入)? 2.7/2.8

(1)维护 Judge 金标校准集,定期复测。 像校准传感器一样管理 judge:为每个领域维护 50-500 条人工/客观真值的校准集,定期测一致率与正确率漂移(JudgeBench 式客观真值优先于人类一致率,见 2.7)。阿里把这件事写成制度:每次 Judge prompt/模型升级,固定产出三类统计:

# 统计项 测什么 失守后果
1 与人工标注一致性(一致率或多模型对抗 Kappa) judge 的判定口径有没有漂移 分数系统性偏松/偏紧,门禁形同虚设
2 高风险样本漏判率(合规/资损/隐私) 最坏的那类错误 judge 放过了多少 一次漏判可能就是事故;这是"校准集里必须含坏样本"的运营版
3 边界样本稳定性(重复评测波动) 同一边界样本多次评测的判决抖动 分数噪声淹没真实版本差异,A/B 结论不可信

(2)Judge 必须版本化。 judge 的"版本"是四元组:judge 模型(固定版本)+ judge prompt(含 rubric 与 few-shot)+ 生成参数(温度等)+ 判决协议(单评/成对、是否交换位置)。任一变更都产生新版本的分数,与旧版本分数不可直接比较。腾讯三类评分器表中 Rubric 评分器一栏写的就是"大模型(固定版本)"。实操上给每个 judge 建一份"计量档案":记录模型、prompt 版本、温度、判决协议、校准集上的历史一致率曲线——回归评测分数异动时,第一步就是查 judge 的计量档案有没有变(对照第 E10 章"一次只改一个变量"的迭代纪律)。

(3)离线与线上必须同一套 judge。 DoorDash 的三条 lessons 之一:真实会话与模拟会话用同一 rubric + 同一校准 judge,两边分数才可对齐;各自调 judge,分数会以难调和的方式背离。离线门禁说"变好了"、线上体验说"变差了"时,如果两边 judge 不同源,你连"哪边在说谎"都无法判断(离线-线上联动详见第 E12 章 · 在线评估与数据飞轮)。

(4)接受"评测系统自己也产生 bug 报告"。 DoorDash 的第四条 lesson:被标记失败中有真实一部分是 harness 自身故障(judge 误报、trace 缺口),要与产品缺陷并行修复。这解释了为什么 judge 的 rationale 与置信度字段如此重要——它们是区分"模型错了"与"judge 错了"的唯二线索。

2.7 Judge 元评估:高一致 ≠ 正确

前两节讲"judge 与人工对齐",本节讲一个更尖锐的问题:如果人工本身不是 ground truth 呢?如果 judge 们集体犯错呢? 2024 年起,"judge 的元评估"成为独立赛道,核心结论一致:前沿 judge 在客观困难任务上准确率只有 ~57% 量级,与人类评审仍有明显差距,且 judge 间一致性高但可能"集体犯错"。

元评估基准速览(全部来自 _research/01-llm-judge.md):

基准 arxiv(年份) 方法 关键数字与发现
JudgeBench 2410.12784(2024,ICLR 2025) 350 个困难问题,偏好标签由代码执行/单元测试等客观真值产生,覆盖知识/推理/数学/编码 最强 LLM judge 准确率仅约 57%(GPT-4o 量级),人类评审约 78%;judge 间互相一致率很高(>75%),但"一致性"与"正确性"相关性很弱——judge 们会一起犯错;推理型模型(o1 系)在部分客观评判任务上并不占优
RewardBench 2403.13787(2024,NeurIPS D&B) ~3,000 偏好对,四维度(Chat/Chat-Hard/Safety/Reasoning),测 reward model / judge 的成对判别准确率 未经专门 RM 训练的通用 prompted judge 已可与专用 reward model 竞争甚至更好;成为 HF 上 RM 事实排行榜
CriticBench 2402.14809(2024,ACL Findings) 批判-纠错能力:找错、定位错误步骤、修正,8 类任务 LLM 批判能力显著弱于生成能力;自纠不对称——评别人明显好于评自己;解释了 self-refine 收益有限
MM-Eval 2410.17578(2024) 18 种语言的人类偏好标注,同时测 LLM judge 与 reward model judge 可靠性在非英语语言上显著下降,不同语言呈现不同偏差模式
Know Thy Judge 2503.04474(2025) 安全 judge 的鲁棒性元评估:wild 分布漂移 + 针对性对抗攻击 仅改变模型输出的风格(同一数据集),假阴性率跳变最高达 0.24;对抗攻击可让部分安全 judge 把 100% 的有害生成判为安全

元评估指标工具箱(建 judge 校准报表时照抄):

  1. 与人类一致率 + Cohen's κ(校正随机一致)——基础款,但受人工标注噪声限制;
  2. 客观真值正确率(JudgeBench 路线)——用单元测试/答案验证器产生金标偏好,比"与人类一致"更干净的测量,优先;
  3. 相关性:Kendall τ / Spearman / Pearson——排行榜层面与人类偏好排名的相关(LC-AlpacaEval 的 0.937→0.982 即此类);
  4. 鲁棒性元评估(Know Thy Judge 路线):风格扰动、提示敏感性、对抗攻击下的假阴性率变化;
  5. Bradley-Terry / Elo(竞技场聚合):P(A>B)=exp(θ_A)/(exp(θ_A)+exp(θ_B)),Arena-Hard(2406.11939,2024)用该框架把 arena 人类数据蒸馏为自动基准,与 Arena 相关性 ~0.98(动手实现见 labs/eval_lab11_arena_bradley_terry.py)。

对评测体系的直接含义:

  • judge 间一致性不能当验收指标。 MT-Bench(2306.05685,2023,NeurIPS 2023)确立范式时以"GPT-4 judge 与人类一致性约 80%+,与人类间一致性相当"作为合法性论证;JudgeBench 之后,这个论证不够了——验收 judge 要看客观真值正确率与鲁棒性,一致性只是必要不充分条件。学界分歧至今未消:一致性足够用于"相对排名"(排行榜场景),但绝对能力测量必须回到客观真值或人类评审。
  • 多语言产品不能只校准英语 judge(MM-Eval);跨模态 judge 泛化更差(MM-JudgeBench,2604.19405,2026)。
  • 安全 judge 上线前必须过鲁棒性元评估:风格扰动测试、对抗后缀、prompt injection——judge 是攻击面,不是旁观者(见 2.8)。
  • judge 选型:RewardBench 初筛,领域校准集终裁。 RewardBench 只测"成对判别",不测打分校准、多轮对话、鲁棒性——公开榜单上的名次不能替代自己校准集上的验证。任何"换 judge 模型"的决策,最终以本领域校准集的三统计(2.6)为准。

2.8 前沿路线:可训练 judge、prompt 进化与 judge 攻防

2024-2026 年,judge 从"提示词工程"走向"模型工程",再走向"攻防对抗"。演进主线分四段(_research/01-llm-judge.md 调研结论):

阶段 主题 代表工作
2023-2024 上半年 偏差的实证 catalog:四大偏差相继被量化,第一批缓解方法出现 2305.17926、2404.04475、2404.13076、2310.01432、2404.18796
2024 下半年 judge 的"元评估"成为独立赛道:以客观真值校准 judge JudgeBench 2410.12784、CriticBench 2402.14809、RewardBench 2403.13787、MM-Eval 2410.17578
2024-2025 可训练的 judge:从提示词工程走向模型工程 Prometheus/Prometheus 2、Self-Taught Evaluators 2408.02666、GenRM 2408.15240、RM-R1 2505.02387
2025-2026 judge 的优化与攻防:prompt/rubric 成为可优化对象,可攻击性被正面研究 GEPA 2507.19457、Know Thy Judge 2503.04474、PoisonedRAG 2402.07867、2604.23178

三条主线:

主线一:可训练的 judge(judge 专用模型)。

范式 代表工作(arxiv,年份) 核心思想 关键数字
Rubric 监督微调 Prometheus(2310.08491,2023);Prometheus 2(2405.01535,2024,EMNLP) 开源评测专用模型;rubric + 细粒度反馈作为输入/输出格式;Prometheus 2 首次同时支持直接评估(1-5 分 + rubric)与成对排序 7B/8x7B 两规模;直接评估协议上与人类偏好相关性达 0.3-0.4 量级并超过 GPT-4 judge
自训练 Self-Taught Evaluators(2408.02666,2024,Meta) 以强 judge(GPT-4)评判为种子,迭代"合成评测数据→偏好训练→再评测",全程零人工标注 从 Llama-3-8B-Instruct 出发,3 轮迭代后与 GPT-4-0314 评判的一致性达到相当水平
生成式验证 GenRM(2408.15240,2024,NeurIPS) reward = P("This solution is correct") 的 next-token 概率,把奖励建模变成生成任务,天然兼容 CoT GSM8K 与 MATH 上较同规模判别式 verifier 准确率提升最高约 8%
RL 训练 judge RM-R1(2505.02387,2025);CompassJudger-2(2507.09104,2025) GRPO 训练"会推理的裁判":先输出自然语言批判再给分;偏好方向作为可验证奖励 RM-R1(LLaMA-3.1-8B)在 RewardBench 平均 ~85%,多个子集超过更大的闭源 judge
Prompt 进化(零权重更新) GEPA(2507.19457,2025) 反射式进化 judge prompt/rubric,不碰权重 见 2.5:平均超 GRPO 6%/最高 20%,rollout 少最高约 35 倍

开源 judge 模型的三大工程红利(Prometheus 2 路线):本地部署(数据不出域)、成本低、可针对领域 rubric 微调;rubric-as-input 的接口设计已成事实标准。JudgeLM(2310.17631,2023)则更早证明了"微调大模型做 judge"的可扩展性。

主线二:judge 调优的路线选择。 综合素材的工程建议:

你手上有什么 推荐路线 理由
人工标签 < 几百条(典型情况) GEPA 式 prompt/rubric 进化 样本效率比 RL 高一个数量级以上;DoorDash 生产验证
标签数千条+ Prometheus 式监督微调 数据够才值得动权重;换来本地部署与低成本
判据可验证(代码/数学/格式约束) RM-R1 式 RL 偏好方向本身就是规则奖励,无需人工标注
任何自训练 judge 必须保留独立于训练分布的冻结校准集 防"judge 回声室":合成数据会放大种子 judge 的偏差,后续工作记录了迭代坍缩风险

主线三:judge 攻防。 这是与 reward hacking、安全评测的直接交界:

  • judge 可被直接攻击。 Know Thy Judge(2503.04474,2025):对抗攻击可让部分安全 judge 把 100% 的有害生成判为安全;仅改变输出风格即可让假阴性率跳变最高 0.24。安全评测管线必须包含"judge 红队"环节:风格扰动测试、对抗后缀、prompt injection 测试;judge 验收不能只看干净集准确率,还要报告鲁棒性元评估结果。
  • 消费外部内容的 judge 可被投毒。 RAG/agent 场景中,judge 会读检索结果、网页、工具返回——间接 prompt injection 与检索投毒(PoisonedRAG,2402.07867,2024)可以直接操纵这些 judge。对策:judge 输入的证据切片做注入检测;关键安全判决用"judge + 规则 + 人工"三重冗余。
  • judge 分数作训练奖励时的纪律。 SOS-Bench(2409.15268,2024)证明 judge 偏好与安全性、世界知识、指令跟随等具体对齐指标几乎不相关,以 judge 胜率为优化目标的偏好优化(DPO 等)可能只是在"优化风格";AlpacaEval 的长度 gaming 是"训练钻评测空子"的早期案例。工业主流做法:judge 分数可作辅助奖励,但必须配规则验证器与人工抽检闭环,并监控训练过程中 judge 分数与独立基准的背离(Goodhart 预警)。
  • agentic 场景的 rubric 验证仍是开放问题:Can LLM-as-a-Judge Reliably Verify Rubrics in Agentic Scenarios?(2606.29920,2026)正面追问 judge 在多步 agent 场景下验证 rubric 的可靠性;FairJudge(2602.06625,2026)尝试自适应、去偏、一致的 judge 框架。趋势判断:judge 校准正在成为一等公民,judge 鲁棒性测试将进入上线 checklist。

三、面试高频考点

# 考点 分级 一句话考察意图
1 三层评分中 judge 的定位:规则判硬条件、judge 判语义/策略合理性、人工定口径与校准 ⭐ 是否理解 judge 的边界,而不是"什么都扔给 GPT-4 评"
2 Judge 解剖:rubric + 证据切片 + verdict + rationale;每维一个 judge、不同源、few-shot、输出 schema ⭐ 能否写出生产级 judge 接口,而非玩具 prompt
3 二元检查 vs 分级打分的取舍;DoorDash 为何选 binary 汇总 ⭐⭐ 是否理解评分方差对迭代速度的影响
4 Rubric 铁律:"人都无法一致应用的 rubric,模型也不可能";描述成功而非指定唯一答案 ⭐⭐ 是否做过真实 rubric 工程,知道标准先于人/机一致性
5 四大偏差(位置/冗长/自我偏好/风格)的机理、量化与缓解手段 ⭐⭐ 最高频追问点;要能给出 swap consistency、长度回归、自我识别率等量化方式
6 Judge 校准五步法 + 85% 口径 + gold set 必须含坏样本 ⭐⭐ 是否知道"未校准 judge 制造误导性信心",有没有完整校准经验
7 一致率 vs Cohen's κ;base rate 陷阱(90% good 时全判 good 也有 90% 一致率) ⭐⭐ 统计素养;能否识破"一致率虚高"
8 高一致 ≠ 正确:JudgeBench 最强 judge 客观准确率 ~57% vs 人类 ~78%,judge 间一致 >75% 但会集体犯错 ⭐⭐⭐ 是否跟进了元评估赛道,能否区分"一致性"与"正确性"
9 Judge 与生成模型不同源;自我偏好(GPT-4 自我识别率 ~72%)与 PoLL 评审团 ⭐⭐ 是否知道共模偏差与评审团的独立性前提
10 Judge 升级三统计:与人工一致性 / 高风险漏判率 / 边界样本稳定性 ⭐⭐⭐ 运营视角:judge 不是一次性配置而是持续运营的资产
11 Judge 版本化四元组(模型 + prompt + 参数 + 协议)与离线/线上同一 judge ⭐⭐ 分数可比性与归因能力的工程前提
12 Judge 是攻击面:对抗攻击 100% 绕过安全 judge、风格扰动 FNR 跳变 0.24、PoisonedRAG 投毒 ⭐⭐⭐ 安全深水区;多数候选人只知道 judge 有偏差,不知道 judge 可被攻击
13 可训练 judge 路线选择:GEPA(标签 <几百条)/ SFT(数千条+)/ RL(判据可验证);回声室风险 ⭐⭐⭐ 前沿视野 + 成本意识;能否给出"零权重更新优先"的判断

四、经典面试题与参考答案

题 1(基础):什么是 LLM-as-a-Judge?它在三层评分体系中的位置是什么?能判什么、不能判什么?

参考答案: LLM-as-a-Judge 指用一个(通常更强的)LLM 按 rubric 评判另一个模型的输出,自 MT-Bench(2306.05685,2023)确立以来成为开放式生成评测的事实标准,因为它便宜、快速、可扩展——DoorDash 用它把评测规模从员工反馈平均 1 条/天做到 2,000 个/天自动评分会话。三层评分中:规则判"硬条件"(schema、工具调用、预算),judge 判"语义/策略合理性"(语气、有据性、策略是否合理),人工定口径并校准 judge。Judge 能判的:规则写不出、但人能一致判断的软指标;不能判的:一是代码能判的(用了浪费且引入抖动,"能用代码判断的绝不用模型");二是依赖内部政策口径的问题(阿里:judge 能判礼貌/清晰,但判不了"叠加优惠差价是否应补偿"这类要业务先定口径的问题);三是它自身未被校准前,什么都"判不准"——未校准 judge 制造误导性信心。

题 2(基础):请描述一个生产级 judge 的解剖结构:输入由什么组成、输出应包含什么、有哪些工程纪律?

参考答案: 输入 = 单条标准(rubric)+ 该标准依赖的证据切片。DoorDash 的做法是每条标准声明依赖的证据,Transcript Builder 只把那一片给 judge(grounding 检查拿论断 + 工具输出;多样性检查拿推荐 + 原始请求),聚焦证据让判断更一致。输出 = verdict + rationale(+ 置信度、问题分类),rationale 要引用证据原文,供定位、badcase 聚类与人工审计。工程纪律按 Airbnb 五条:① 每个质量维度一个 judge(3-5 个经校准的评估器好过一堆嘈杂的);② judge 模型尽量与生成模型不同源(防自我偏好);③ 带 few-shot,含边界样本;④ 强制输出 JSON schema;⑤ 清晰打分说明,每分档有可执行标准。外加两条运营纪律:judge 前可加 eligibility 判断(不适用则跳过),judge 本身要版本化管理。

题 3(进阶):设计 rubric 时,二元检查与分级打分(1-5 分)怎么选?为什么 DoorDash 推荐二元?

参考答案: 选 binary 的理由有四:① 方差低——"0 还是 1"的判定边界清晰,"3 分还是 4 分"连人都会摇摆,judge 抖动更大;② 汇总干净——逐条 binary 汇总为会话级总分,不需要为加权平均的权重吵架;③ 可独立迭代——每条标准单独可改、可单独校准,改一档描述则牵动全量表;④ 校准目标明确——一致率、漏判率都好算。DoorDash 的 guardrail/capability 标准全是 binary(如"不呈现可证伪虚假信息")。分级打分适合创意质量、体验观察等确实存在连续谱的维度,但要求每分档有可执行标准(阿里)且锚定示例。折中实践:分级维度先拆成若干 binary 子检查,再映射回分档;以及 checklist 式场景 rubric("两人份 ≤$60 素食 taco 清单")——比宽泛标准方差更低,小样本即可迭代。无论哪种,铁律是"人都无法一致应用的 rubric,模型也不可能"。

题 4(进阶):LLM Judge 有哪些常见偏差?分别如何量化、如何缓解?

参考答案: 四大偏差。① 位置偏差(2305.17926,2023):成对评判偏好特定位置;量化用 swap consistency(交换 A/B 前后判决一致率)与等质量对照组胜率偏离 50% 的幅度;缓解是双向交换取平均或句级对齐 Split and Merge(2310.01432,2023)。② 冗长偏差:把更长当更好;量化用长度作为协变量回归看系数;缓解是 LC win rate(2404.04475,2024),把 AlpacaEval 与 Arena 人类排名相关性从 0.937 提到 0.982。③ 自我偏好(2404.13076,2024):judge 偏好自己的输出,GPT-4 自我识别率约 72%;量化用自我识别率 + 自我胜率偏移;缓解是异构 judge、PoLL 评审团(2404.18796,2024)。④ 风格偏差(2409.15268,2024):markdown/格式/自信语气压倒实质;量化用同内容双排版 A/B;2604.23178(2026)系统复盘 9 种去偏策略发现单点策略收益有限,风格偏差是最主要残余偏差(效应量 0.10-0.76),"中端模型 + 组合去偏"胜过前沿 judge 且便宜约 15 倍(71.0% κ=0.549 @ $0.001/次 vs Claude Sonnet 4 69.5% @ $0.015/次)。默认协议:交换聚合 + 判据先行 + 温度 0。

题 5(进阶):请完整描述校准一个 LLM Judge 的流程,并给出量化标准。如果一致率长期卡在 80% 左右,你怎么诊断?

参考答案: 按 Airbnb 五步法:① 建 50-100 条 gold set,必须含坏样本与两类陷阱(正确的改述、流畅的错误);② 用 judge 跑该集合;③ 看一致率,目标 high-80s~90s,分歧用 Cohen's κ / Krippendorff's α 度量(注意 base rate 陷阱);④ 逐条检查分歧样本,归因是 rubric 含糊、few-shot 缺失还是 judge 能力不足,修 rubric/示例后重跑;⑤ 失败模式变化时重新校准。工业口径:阿里 ~85% 后进日常自动化,腾讯 ≥85% 可用,DoorDash 用 GEPA 自动迭代 judge prompt、只保留留出集一致率提升的版本。Airbnb 实战:judge 初始 78%,根因是字面重叠式 rubric 误罚正确的改述,修 rubric 后 88%。卡在 80% 的诊断路径:先按"样本类别 × 分歧方向"分解混淆矩阵(FN 误罚好答案 / FP 放过坏答案各在哪类样本);若是改述被误罚→rubric 从字面匹配转向事实核对;若是流畅错误漏判→给 judge 证据核对步骤与负向 few-shot;若人机之间对同一批样本也不一致→先修 rubric 定义(人都用不一致,模型不可能一致);最后才考虑换更强的 judge 模型。

题 6(进阶):为什么只看一致率不够?请用例子说明 Cohen's kappa 的价值。

参考答案: 一致率不扣除"随机一致",在类别不平衡时会严重虚高。例:gold set 100 条中 90 条 good、10 条 bad,judge 无脑全判 good,一致率也有 90%——看起来达标,实际上它对坏样本的漏判率是 100%。Cohen's kappa 用 κ=(p_o−p_e)/(1−p_e) 扣除随机一致 p_e,而 p_e 要按两个评分者各自的边际相乘再相加。这个 judge 恒判 good,它的边际是 good=1.0、bad=0.0,故 p_e=0.9×1.0+0.1×0.0=0.9,κ=(0.9−0.9)/(1−0.9)=0——恒判一类的退化 judge,κ 恰为 0,一致率的虚高被彻底戳穿。(易错点:若误把 judge 的边际也当成 gold 的 0.9/0.1,会算出 p_e=0.82、κ≈0.44;但 judge 从不判 bad,它的 P(good) 是 1 而非 0.9,一方恒判一类时 p_e 必然等于 p_o、κ 归零。)两点延伸:① 解读参考 <0.2 差 / 0.2-0.4 弱 / 0.4-0.6 中等 / 0.6-0.8 良好 / >0.8 几乎完全一致;② 校准集要故意保持足够的坏样本比例(Airbnb:gold set 必须含坏样本),否则一致率与 κ 同时失真。工程上还应把一致率拆成误罚率(FN,惩罚正确改述)与漏判率(FP,放过流畅错误)分别看——阿里对高风险样本的漏判率是 judge 升级的三统计之一,因为合规/资损场景的漏判代价远高于误罚。

题 7(进阶):为什么 judge 要与被评模型不同源?如果成本所限只能用同一个模型,怎么降低风险?

参考答案: 实证依据是自我偏好偏差(2404.13076,2024):GPT-4、Claude-2、Llama-2、Mistral 都能以显著高于随机的概率识别自己生成的文本,并在成对评判中系统性偏好自己的输出;GPT-4 对自身输出识别率约 72%,且自我偏好强度与自我识别能力正相关,开源模型更甚。同源自评相当于"裁判和选手是同一个模型",回归对比中模型会系统性高估自己的新版本。缓解首选:judge 与被评模型分属不同模型家族;关键评测用 PoLL 评审团(2404.18796,2024)——三个跨家族中端模型(Command-R、Llama-3-70B、Mistral-Large)多数投票,与人类相关性高于单一 GPT-4 judge、成本降到几分之一、显著缓解自我偏好。成本所限必须同源时的降级方案:① 统计校准——按自我识别检测修正胜率估计(原论文提出的方法);② 绝对打分 + rubric 锚定替代成对比较(自评的成对比较是自我偏好重灾区);③ 用客观真值校准集持续测该同源 judge 的正确率(JudgeBench 路线),一旦漂移立即降级处理;④ 高风险维度坚持换异构 judge 或人工。注意 PoLL 的边界:评审团只对独立误差有效,风格偏好是共模偏差,跨家族集成也治不了。

题 8(进阶):JudgeBench 显示最强 judge 的客观准确率只有 ~57%,而 judge 之间互相一致率超过 75%。这对我们构建评测体系意味着什么?

参考答案: 三个含义。① "judge 间高一致"不能作为验收指标——一致只说明它们共享同样的偏见(共模错误),不说明正确;MT-Bench 时代"与人类一致率 ~80%"的合法性论证在客观真值面前不够了(JudgeBench,2410.12784,2024,ICLR 2025:350 个由单元测试等客观验证产生偏好标签的困难问题,最强 judge ~57%,人类 ~78%)。② 元评估要优先用客观真值:凡是判据可程序验证的领域(代码、数学、格式约束),用单元测试/答案验证器造 judge 校准集,比"与人类一致"更干净;人类一致率留给无法客观验证的主观维度,并配 κ。③ 对 judge 的能力边界保持谦卑:judge 适合做"低成本筛查与排序",不适合做"最终裁决"——所以三层评分里人工才是校准源与高风险终判者(第 E06 章),所以阿里要求高风险/低置信/冲突样本进人工复核,所以推理模型也不一定更好(JudgeBench 报告 o1 系在客观评判上不占优,"会推理"≠"会评判")。答题加分点:补充 CriticBench(2402.14809,2024)的"批判能力弱于生成能力、自评弱于评他",说明 57% 并非意外。

题 9(系统设计):为公司的 Agent 评测平台设计一个「Judge 服务」:解剖、校准、版本化、路由、监控,给出完整方案。

参考答案: 分五层设计。① 接口层:judge 按"单条标准 + 证据切片"调用(DoorDash 接口),输出 {applicable, verdict, confidence, rationale, 问题分类};每个业务维度一个 judge,控制在 3-5 个(Airbnb);证据由 Transcript Builder 按标准声明切片供给(第 E07 章)。② 校准层:每 judge 配 50-100 条 gold 校准集(含坏样本、正确的改述、流畅的错误、高风险样本);按五步法迭代到一致率 ≥85%(腾讯口径)且 κ≥0.6;rubric 措辞优化可用 GEPA 自动进化,留出集防过拟合。③ 版本层:judge 版本 = 模型 + prompt + 温度 + 协议四元组,任一变化即新版本;每个版本建计量档案(校准集历史曲线);新旧版本过渡期双跑对比。④ 路由层(衔接第 E06 章):judge 结论不是终点——边界分/低置信/rationale 含糊/多 judge 分歧/规则与 judge 冲突 → 人工终判并回收口径;高风险场景自动通过也定期人工复核。⑤ 监控层:阿里三统计随每次升级固定产出(与人工一致性、高风险漏判率、边界样本稳定性);日常抽样人工审计 judge 行为(DoorDash:审计 judge 是人工三大杠杆之一);离线与线上强制同一 rubric + 同一 judge;把 harness 自身故障(judge 误报)单列缺陷池并行修复。成本策略:中端模型 + 组合去偏优先(2604.23178:71.0% 一致率 @ $0.001/次,比前沿配置便宜约 15 倍),关键门禁维度再上评审团。

题 10(系统设计):你准备把 judge 分数作为 RL 训练的奖励信号。请评估风险并设计治理方案。

参考答案: 风险有四类。① 风格 gaming:SOS-Bench(2409.15268,2024)证明 judge 偏好与安全性/知识/指令跟随等真实对齐指标几乎不相关,却强烈偏好格式、长度、拒绝话术——以 judge 胜率为目标做 DPO/RL 可能只是在优化风格;AlpacaEval 长度 gaming 是早期案例(LC-AlpacaEval,2404.04475,2024 因此而生)。② 直接攻击:训练循环里的策略模型会主动探索 judge 的漏洞,本质是自动化、持续化的对抗攻击——Know Thy Judge(2503.04474,2025)显示对抗攻击可让安全 judge 100% 放行有害输出,风格扰动即可让假阴性率跳变 0.24。③ 回声室:若用 judge 生成偏好数据再训模型(Self-Taught Evaluators,2408.02666,2024 式循环),种子 judge 的偏差会被放大,存在迭代坍缩风险。④ Goodhart:judge 分数上升但真实能力不涨,且越优化背离越大。治理方案:a) judge 分数只做辅助奖励,与规则验证器(可验证判据优先,参考 RM-R1,2505.02387,2025 的思路)和人工抽检组合;b) 训练前做 gaming 探针(长度/格式扰动测试),确认分数不可被低成本刷取;c) 保留独立于训练分布的冻结校准集,定期测 judge 客观正确率(JudgeBench 路线);d) 监控训练过程中 judge 分数与独立基准(线上信号、客观测试)的背离,背离超阈值即停训复盘;e) judge 与被训模型不同源,防自我偏好混入奖励。


五、易错点 · 反直觉点

  1. 误区:写一个"万能 judge"对所有维度统一打分。 真相:Airbnb 明确要求每个质量维度一个 judge,且 judge 要少而精——3-5 个经校准的评估器好过一堆嘈杂的;万能 judge 会把语气问题与事实问题混在一个分数里,无法归因、无法单独校准。记忆锚点:judge 按维度拆,宁少勿杂。
  2. 误区:judge 写个 prompt 就能进门禁。 真相:未校准 judge 制造"误导性信心"——分数精确,量的却是 rubric 的缺陷;必须校准到 high-80s~90s(Airbnb)/ ≥85%(阿里、腾讯口径)之后才谈自动化。记忆锚点:先校准,再门禁。
  3. 误区:judge 用和被评模型同一个模型,省钱又省心。 真相:自我偏好有硬实证——GPT-4 对自己输出的识别率约 72%,四个主流模型都系统性偏好自己的生成(2404.13076,2024);同源自评会系统性高估自己的新版本。记忆锚点:裁判与选手不同源。
  4. 误区:judge 之间一致率 >90%,说明 judge 可靠。 真相:JudgeBench(2410.12784,2024)显示 judge 间互相一致率 >75%,但最强 judge 客观准确率只有 ~57%(人类 ~78%),且一致性与正确性相关性很弱——它们会一起犯错。记忆锚点:高一致 ≠ 正确,可能是共谋。
  5. 误区:校准集全放好样本,因为"坏样本看起来不吉利"。 真相:全好样本的校准集测不出漏判能力——judge 无脑全判 pass 也能刷出高一致率;gold set 必须含坏样本(Airbnb 十条要点之⑦),且要含"正确的改述"与"流畅的错误"两类陷阱。记忆锚点:没有坏样本的校准集是假的。
  6. 误区:一致率 90% 已经很好,不必看 kappa。 真相:若 90% 样本是 good,全判 good 的傻 judge 一致率也是 90%(但 κ=0——恒判一类零判别力)。类别越不平衡,一致率越会撒谎。记忆锚点:看 κ,别只看一致率。
  7. 误区:找到一篇去偏论文就照搬(swap / CoT / 校准各挑一个"银弹")。 真相:2604.23178(2026)对 9 种策略 × 5 模型 × 3 基准的系统复盘显示:单点策略多数收益有限且跨模型不稳定;风格偏差是最主要的残余偏差;组合策略 + 中端模型才是性价比之王(便宜约 15 倍且一致率更高)。记忆锚点:去偏靠组合,银弹不存在。
  8. 误区:judge prompt 随手改,反正"改得更好了"。 真相:judge 版本 = 模型 + prompt + 参数 + 协议,任一变更都让新旧分数不可比;回归异动时查不到是模型变了还是 judge 变了。阿里的三统计(一致性/高风险漏判率/边界稳定性)必须随每次升级产出。记忆锚点:judge 即资产,改动即发版。
  9. 误区:推理模型(o1/R1 系)一定更会当 judge。 真相:JudgeBench 报告推理型模型在部分客观评判任务上并不占优;Critique 研究显示 CoT judge 会"推理出错误的自信"。"会推理"≠"会评判",评判能力要单独元评估。记忆锚点:推理强 ≠ 评判强。
  10. 误区:judge 不执行代码、不碰外部世界,所以没有安全问题。 真相:judge 是攻击面——对抗攻击可让安全 judge 把 100% 的有害输出判为安全(2503.04474,2025);消费检索内容/工具返回的 judge 可被 PoisonedRAG(2402.07867,2024)式投毒操纵;judge 分数进训练循环还会被 reward hacking。记忆锚点:judge 也要红队。

六、推荐资源

一手工业实践(本章素材来源,完整精读笔记见 _research/00-industry-practice.md 与 _research/01-llm-judge.md)

  1. Airbnb《Eval-driven development: Lessons from evaluating GenAI at scale》——judge 五条使用规则、rubric 0/1 实例、五步校准法、78%→88% 案例、"未校准 judge 制造误导性信心"的原始出处。
  2. DoorDash《Building Ask DoorDash (Part 3): Evaluation》(2026-06-30)——judge 接口(标准+证据→verdict+rationale)、eligibility 前置、binary rubric 汇总、GEPA 校准 judge、离线/线上同一 judge 的原始出处。
  3. 阿里技术《Agent 评测:方法论与体系设计》——"规则主判、Judge 辅助、人工兜底"、~85% 校准口径、升级三统计、多 LLM 对抗打分的原始出处。
  4. 腾讯技术工程《AI Agent & Skill 测评方案及落地实践》——Rubric 评分器(固定版本大模型 + Prompt + JSON Schema)、≥85% 可用口径、"校准 LLM 评委是人工最核心场景"的原始出处。

前沿论文(全部来自 _research/01-llm-judge.md,arxiv ID 已核实)

  1. MT-Bench / Chatbot Arena:Judging LLM-as-a-Judge(2306.05685,2023,NeurIPS 2023)——范式奠基,GPT-4 judge 与人类一致性约 80%+。
  2. 位置偏差:Large Language Models are not Fair Evaluators(2305.17926,2023);句级对齐:Split and Merge(2310.01432,2023)。
  3. 自我偏好:LLM Evaluators Recognize and Favor Their Own Generations(2404.13076,2024)。
  4. 风格偏差:Style Outweighs Substance(2409.15268,2024)。
  5. 长度控制:Length-Controlled AlpacaEval(2404.04475,2024,TMLR)。
  6. 评审团:Replacing Judges with Juries (PoLL)(2404.18796,2024,COLM)。
  7. 去偏系统复盘:Judging the Judges(2604.23178,2026)。
  8. 元评估:JudgeBench(2410.12784,2024,ICLR 2025)、RewardBench(2403.13787,2024,NeurIPS D&B)、CriticBench(2402.14809,2024,ACL Findings)、MM-Eval(2410.17578,2024)。
  9. 鲁棒性与攻防:Know Thy Judge(2503.04474,2025)、PoisonedRAG(2402.07867,2024)。
  10. 可训练 judge:Prometheus 2(2405.01535,2024,EMNLP)、Self-Taught Evaluators(2408.02666,2024)、GenRM(2408.15240,2024,NeurIPS)、RM-R1(2505.02387,2025)、CompassJudger-2(2507.09104,2025)、JudgeLM(2310.17631,2023)。
  11. Prompt 进化:GEPA(2507.19457,2025);综述:A Survey on LLM-as-a-Judge(2411.15594,2024);蒸馏基准:Arena-Hard(2406.11939,2024)。

动手实验(labs)

  1. labs/eval_lab04_judge_bias.py(本章核心实验之一)——MockJudge 注入位置/冗长/自我偏好偏差→等质量对照组量化→swap-and-average / 多 judge 投票 / 长度受控评分三种缓解的有效性断言。运行:cd evals-special/labs && python3 eval_lab04_judge_bias.py
  2. labs/eval_lab05_judge_calibration.py(本章核心实验之二)——复刻 Airbnb 78%→88% 校准案例:60 条 gold(含"正确的改述"与"流畅的错误")、混淆矩阵 / 一致率 / Cohen's κ、rubric 修订闭环、升级三统计监控。运行:cd evals-special/labs && python3 eval_lab05_judge_calibration.py
  3. labs/eval_lab11_arena_bradley_terry.py——Bradley-Terry / Elo 与长度风格控制,呼应 2.7 的竞技场聚合与 LC 思想(详见第 E09 章 · 评估的统计学基础)。运行:cd evals-special/labs && python3 eval_lab11_arena_bradley_terry.py

交叉引用

  • 三层评分的另外两层:第 E04 章 · 程序化评分(judge 的上游边界)、第 E06 章 · 人工评估与评分路由(judge 的校准源与人工兜底)。
  • judge 的上下游:第 E03 章 · 黄金数据集(校准集从哪来)、第 E07 章 · 轨迹与 Agent 级评估(Transcript Builder 证据切片全貌)、第 E09 章 · 评估的统计学基础(一致率/κ/置信区间)、第 E10 章 · 评测驱动开发(judge 筛候选、一次一变量)、第 E12 章 · 在线评估与数据飞轮(离线/线上同一 judge、judge 分数作奖励)、第 E14 章 · 前沿论文全景(judge 方向综述)、第 E15 章 · 工业实践案例研究(四家 judge 口径横向对比)。
  • 主手册第 8 章 · Agent 评估与可观测性——本章是其"LLM-as-Judge"一节的深挖版。
第 6 章 / 共 15 章

评分三层之三:人工评估与评分路由

📌 本章导航(6 节)

一句话导读:在「规则 → Judge → 人工」的三层评分体系里,人工是最贵、最慢、最不可扩展的一层,却也是唯一能产出新口径、裁决自动评分器的一层。本章回答四个问题:人力该花在哪些工作(六个高杠杆场景)、标注工程怎么做(指南/分歧/一致性)、哪些样本值得送人工(评分路由)、人工结论如何放大(反哺闭环)。学完你能设计一套完整的人机协同评分流水线,并扛住系统设计级的追问。

前置阅读:第 E04 章 · 程序化评分(规则层)、第 E05 章 · LLM-as-Judge 深入(Judge 层)。本章是评分三层的收口篇——三层不是并列的三选一,而是一条有路由、有反哺的流水线,人工站在流水线的两个关键位置:校准入口与冲突出口。


一、知识图谱

                  评分三层(选择优先级:确定性 > Rubric > 人工)
   ┌───────────────────┬───────────────────┬───────────────────┐
   ▼                   ▼                   ▼
【第一层 规则】      【第二层 Judge】      【第三层 人工】
 硬条件/工具/schema   语义/策略/rubric      兜底 + 校准源
 毫秒级·稳定100%      秒级·有抖动·需校准    分钟-小时级·最贵·最权威
   │                   │                   ▲
   │ 明显通过/明显失败  │ 一致率≥85%后放量    │
   ├──────────────────►├───────────────────┤
   │                   │                   │
   └── 不确定/冲突/新版本 ──►【人工评分路由】──┘
                       ①边界分 ②低置信 ③reason含糊
                       ④多judge分歧 ⑤新版本抽样 ⑥规则-Judge冲突
                                │
        ┌──────────┬──────────┬─┴───────┬───────────┐
        ▼          ▼          ▼         ▼           ▼
    校准Judge   主观打分   诊断0%/100%  建Ground   Trace采样
    (最核心)              异常        Truth      +高风险100%复核
        │                               │
        └───────────────┬───────────────┘
                        ▼
        专家时间分配:60%+ 花在「校准Judge」与「诊断异常」
                  坚决不做日常全量打分
                        │
                        ▼
        【反哺】人工结论 → 校准规则 / Judge prompt / 根因标签体系

先用一张表定位本章在评分三层中的角色:

层 评什么 成本 稳定性 覆盖 门禁角色
规则(E04) 硬条件:工具调用、状态、字段、禁用动作 毫秒级 / 免费 100% 已知硬指标 硬门禁
Judge(E05) 语义、策略合理性、语气 秒级 / API 费用 有抖动,需降噪 未知软指标 分级门禁
人工(本章) 口径、争议、高风险、异常 分钟-小时级 / 人力 取决于标注员水平 主观 + 边缘场景 不进门禁,做采样审查与终判

(表格口径来自腾讯三类评分器对照;"人工不进门禁"是关键设计决策:人力无法支撑每次 CI 运行,人工的价值在门禁之外——定口径、校尺子、查漏。)


二、核心概念精讲

2.1 定位:人工是评分系统的「校准源」,不是「打分主力」

三层的分工原则,阿里的一句话最凝练:规则主判,Judge 辅助,人工兜底。规则看"硬条件"(工具、状态、字段、禁用动作),LLM 看"语义/策略合理性",能写成代码的由规则主判;高风险/抽检/低置信/变更观察期追加 LLM Judge;能自动稳定判断的不长期依赖人工(阿里)。腾讯给出同样的优先级:确定性 > Rubric > 人工。

为什么"人工全量打分"是反模式?三笔账:

  1. 成本账:人工评分是分钟-小时级/人力成本,而自动评分是毫秒-秒级。腾讯的痛点表写得很直白:Skill 越多、模型越快,人肉回归指数增长,只能选择性验证、留下盲区。DoorDash 的数字更具冲击力——全量回归从手工 6+ 小时压到自动约 20 分钟(50 场景 × 8 trials = 400 次对话的 sweep)。
  2. 规模账:日常打分的样本量是生产流量级的。DoorDash 从"平均 1 条/天员工反馈"做到"2,000 个/天自动评分会话",靠的是校准过的 Judge 而不是扩招标注员。
  3. 杠杆账:专家最稀缺的能力是"判断什么是好",而不是"重复判断"。把专家耗在逐条打分上,等于用最贵的资源做最可替代的工作。

由此得到三条被多家公司验证的经验法则:

公司 人工定位的表述
腾讯 能自动化的坚决不找专家;专家时间 60%+ 花在"校准 LLM 评委"与"诊断异常"
DoorDash 人工用在杠杆最大处:定 rubric、标注校准集、审计 judge 行为;打分主力是 judge
Airbnb EDD 原则之一:指定一个最终人类决策者,裁决"好 vs 坏"争议;人工负责建 ground truth、安全高风险决策、细微差别与创意、解决自动评估器间冲突
阿里 人工兜底:定口径、校准 Judge、处理争议样本、抽查高风险场景;能自动稳定判断的不长期依赖人工

注意这四家的表述殊途同归:人工评估的成熟度,不看"能动员多少人打分",而看"自动化评分器以多小的人力投入变得可信"。人工不是评分系统的执行层,而是它的校准源与仲裁庭。

2.2 人工评估的六个高杠杆场景

腾讯把"人工必须出场"的场景收敛为六个,这是本章的主干清单:

# 场景 做什么 关键数字/做法
① 校准 LLM 评委(最核心) 抽样一批人工先判,量化 judge 与人的一致率 抽样 100–200 条对齐;一致率 ≥85% 才可用(腾讯);阿里口径 ~85% 后进日常自动化
② 主观任务打分 语气、清晰度、解释质量等无法程序化的维度 Rubric + 人工抽样;体验与对齐维度(P2)早期靠 Rubric+人工,成熟后转 A/B+用户反馈
③ 诊断通过率异常 通过率 0% 或 100% 通常是任务/评分器坏了,不是模型弱 0% pass^N 一般先查任务定义与评分器,而不是怀疑模型能力
④ 建 Ground Truth 新评测套件先产出参考解,作为后续自动评分的锚 前 20–50 个参考解(腾讯);基线快照机制:执行 1 次 → 人工确认过程与结果 → 快照成为基线
⑤ Trace 采样审查 每周固定抽样读轨迹,找自动评分器看不见的隐藏失败模式 与 Airbnb "When in doubt, look at your data"(约 100 样本人工精读输出与 trace)同构
⑥ 高风险兜底 医疗/金融/安全类场景 100% 人工复核 阿里补充:赔付/隐私/合规/投诉升级,自动通过的也要定期人工复核

六个场景的内在结构值得记住:①④ 是为自动化评分器"造尺子",③⑤ 是给自动化评分器"质检",②⑥ 是自动化永远不该独自碰的领域。

再叠上另外两家的清单,覆盖面更完整:

  • Airbnb 的人工四用途:建 ground truth;安全高风险决策;细微差别与创意(nuance & creativity);解决自动评估器间冲突——最后一条是"多 judge 分歧进人工"这个路由规则的方法论来源。
  • 阿里的适用环节:① 新建评测集定口径——例如"订单已发货 + 用户拒收 + 运费险 + 特殊类目"该走哪条流程,需要业务先定,这不是模型问题也不是评分器问题,是业务规则问题;② 校准 Judge——"judge 能判礼貌/清晰,但判不了'叠加优惠差价是否应补偿'这类依赖内部政策的问题";③ 处理争议样本;④ 抽查高风险场景。

一个面试可以直接复述的判断框架:凡是答案依赖"内部政策、业务口径、价值排序"的样本,自动评分器天然无权裁决——因为它们的训练分布里没有你的内部政策。这类样本永远要路由给人(见 2.6 分工决策表)。

各场景的操作要点(面试追问"具体怎么做"时的得分点):

  • ① 校准 Judge:校准样本要覆盖各分段与边界案例;人工对校准集的判定结论本身要版本化存档——它是后续每次 judge 升级对照的金标。
  • ② 主观任务打分:给标注员的 rubric 要写行为锚点("什么样的回复算简洁"),而不是"质量好/一般/差"这类抽象词;每次打分输出 reason,供他人复核与后续分歧分析。
  • ③ 异常诊断:标准动作是分层抽样 10–20 条逐条精读,读的是输入、输出、trace 三件套而非只读输出;对照旧版本被评系统重跑,区分"模型变了"还是"尺子变了"。
  • ④ Ground Truth:参考解不只记最终答案,还记关键过程(工具调用序列、中间产物)。腾讯的基线快照机制是标准做法:用例先执行 1 次 → 人工审核过程与结果 → 不可接受则修后重跑 → 可接受则该次快照成为基线,后续每次执行与基线对比;Agent/Skill 逻辑变更、模型升级或用例本身修改时重新快照。
  • ⑤ Trace 采样:固定节奏(每周)+ 固定抽样率,重点读两类样本——自动评分器打高分的(防"结果看似对但路径已偏离"的假阳性,阿里明确要求为此加过程型与风险型检查,轨迹评估细节详见第 E07 章 · 轨迹与 Agent 级评估)与用户反馈差的。
  • ⑥ 高风险兜底:复核结论要留痕(复核人、依据、rubric 版本)进审计日志;"自动通过也要定期复核"要排期化,不能靠临时起意。

2.3 Judge 校准:人工评估的第一任务

为什么校准排在第一位? 两句话足够:

  • Airbnb:未校准的 judge 会制造误导性信心——分数看起来在涨,可能只是尺子变松了。
  • DoorDash:"LLM Judge only useful if it agrees with human reviewers." Judge 的全部合法性来自与人工判断的一致性。

Airbnb 的校准五步法(本章必须能默写的流程):

  1. 建 50–100 条 gold set,必须含坏样本——只有好样本的校准集测不出 judge 的误罚倾向;
  2. 用 judge 跑该集合;
  3. 看一致率,目标 high 80s ~ 90s%;分歧程度可用 Cohen's kappa / Krippendorff's alpha 度量;
  4. 逐条检查分歧 → 改 rubric / 改 few-shot 示例 → 重复第 2 步;
  5. 失败模式变化时重新校准——校准不是一次性动作。

实战案例(Airbnb 旅行平台客服政策问答助手):PM/SME 标注 60 条 gold(含失败样本);judge 初始一致率 78%(过低)——分歧分析发现 judge 误罚了正确的改述(语义正确但字面不同于参考答案的回答被扣分);修 rubric 与示例后一致率达 88%;同期检索改进减少了 groundedness 失败。这个案例的价值在于展示校准循环的完整收益链:人工标注 → 暴露 judge 缺陷 → 修 rubric → judge 可信 → 规模化打分(该助手随后扩到 5,000 样本、每日抽 5% 去标识化生产流量)。

四家校准线对照(面试高频数字题):

公司 一致率口径 说明
Airbnb 目标 high 80s ~ 90s 配 Cohen's κ / Krippendorff's α 度量分歧
腾讯 ≥85% 才可用 抽样 100–200 条对齐
阿里 ~85%(参考值)后进日常自动化 升级时还要看高风险漏判率、边界稳定性
DoorDash 与人工标注一致才放量 用 GEPA 自动优化 judge prompt(见下)

三家独立给出 85% 上下的阈值,可以视为行业经验收敛值。注意表述的严谨性:这是经验线不是统计定律——门槛的实质是"judge 与专家的分歧 ≤ 专家之间的分歧"(主手册第 8 章 · Agent 评估与可观测性 对这一判据有展开)。

分歧怎么分解:第 4 步的"检查分歧"不是逐条重标一遍,实用做法是先把分歧样本按方向分桶,再对症下药:

分歧类型 表现 典型病因 修复动作
Judge 偏严 把正确答案判错 rubric 措辞过窄、过度依赖字面匹配 放宽 rubric 措辞、补"正确改述"的正向 few-shot(Airbnb 78%→88% 案例即此型)
Judge 偏松 把错误答案放过 缺事实核对项、被流畅性迷惑 加事实核对检查项、补"流畅的错误"负例
边界真分歧 人也拿不准 rubric 对该情形没有规定 走 2.4 的分歧处理:裁决后写回 rubric

分桶的价值在于:前两类改的是 judge(rubric/示例),第三类改的是口径本身——修复路径完全不同,混在一起处理会反复返工。

校准的自动化:GEPA(DoorDash 实践)。人工校准的瓶颈是"改 rubric 靠人试",DoorDash 把这一步交给了反射式 prompt 优化器 GEPA(arXiv 2507.19457,2025):对候选 prompt 采样运行 → 用自然语言反思诊断失败 → 变异生成新 prompt → 按 Pareto 前沿在多个任务切片上保留候选(而非只看平均分)。落到 judge 校准上:GEPA 迭代提出 judge prompt 修订,只保留在留出集上提升与人工标注一致率的版本。这等于把"分析分歧 → 改 rubric → 重测"的人工循环部分自动化,人工退到"标注留出集 + 审计修订方向"的位置。GEPA 原论文报告其样本效率比 GRPO 强化学习高约 35 倍量级(详见第 E10 章 · 评测驱动开发)。

校准是持续运营,不是一次验收(阿里):维护 Judge 金标校准集;每次 judge prompt/模型升级固定产出三类统计:

  1. 与人工标注一致性(一致率,或多模型对抗 Kappa);
  2. 高风险样本漏判率(合规/资损/隐私——这类样本漏判一个的代价远超平均分波动);
  3. 边界样本稳定性(重复评测的波动幅度)。

何时触发重新校准?把三家的触发条件合并成一张清单:rubric 演进/新增能力(DoorDash)、失败模式变化(Airbnb)、judge prompt 或模型升级(阿里)。三者任一发生,旧校准结论作废。

动手实验:校准五步法 + 混淆矩阵 + κ 的完整实现见 labs。 cd evals-special/labs && python3 eval_lab05_judge_calibration.py 该 lab 复现了 Airbnb 案例:Judge v1 字面重叠式 rubric 误罚"正确的改述"(一致率 < 82%),修订 rubric 后 v2 ≥ 85%。

2.4 标注工程:指南、分歧与标注者间一致性

人工评估的可信度不取决于"专家多厉害",而取决于标注工程的四个要素:指南、分歧处理、一致性度量、规模化路径。

(1)标注指南 / rubric 先于标注员。 Airbnb 的判断标准一针见血:"如果人都无法一致地应用 rubric,模型也不可能。" 标注指南不是评分的辅助文档,而是整个评分体系(人工 + judge)的单一事实来源。DoorDash 进一步要求每条标准写成"从会话本身可验证"——同一条 rubric 既供人工校准使用,又供 judge 规模化使用(第 E05 章 · LLM-as-Judge 深入 对 rubric 工程有完整展开,含 Airbnb 房源 listing 语气 0/1 判定的完整实例)。rubric 写得好不好,有一个廉价的检验方法:让两个专家各自独立按指南标一批样本,看一致率——IAA 低首先是 rubric 的问题,不是人的问题。

(2)专家分歧处理:先停下,解决分歧再自动化。 Airbnb 的纪律是:专家有分歧就先停下解决分歧再自动化。这条纪律背后的逻辑:专家分歧通常不是随机噪声,而是口径未定义的信号——两个专家各自在用指南没覆盖的隐含标准。此时强行自动化(取多数、平均、或交给 judge),等于把未定义的口径固化成系统性偏差。正确流程是把分歧样本摆上桌 → 辩论出裁决 → 把裁决写回 rubric → 再标下一批。这个"分歧 → 口径"的转化过程,正是 2.7 反哺闭环在标注阶段的形态。

(3)标注者间一致性(IAA, Inter-Annotator Agreement)的度量。 Airbnb 校准流程中点名的两个指标:

指标 适用 直觉
Cohen's kappa 两位标注者的分类一致性 一致率扣除"瞎猜也能一致"的基线后剩下的比例;κ=1 完全一致,κ≤0 等同于乱猜
Krippendorff's alpha 多标注者、多种数据类型(分类/有序/连续) κ 的泛化版,标注员数量与缺失标注都能处理

IAA 有双重身份:它既是标注质量的度量,更是 rubric 质量的度量。IAA 低 → 先修 rubric 再谈换人、再谈自动化。同时,IAA 也给出了 judge 校准目标的天花板参照:judge 与人的目标一致率定在 high 80s ~ 90s 而非 100%,部分原因正是人与人之间也做不到 100%(详见易错点 10)。

κ 的手算示例(面试计算题高频形态)。设人工专家与 judge 对 100 条样本独立做 pass/fail 判定,混淆矩阵如下:

                人工:pass   人工:fail
Judge:pass        72           8
Judge:fail         6          14
  • 观察一致率 P_o = (72+14)/100 = 86%;
  • 期望机遇一致率 P_e = P(judge pass)×P(人工 pass) + P(judge fail)×P(人工 fail) = 0.80×0.78 + 0.20×0.22 = 0.668;
  • Cohen's κ = (P_o − P_e) / (1 − P_e) = (0.86 − 0.668) / (1 − 0.668) ≈ 0.58。

解读这个反差:一致率 86% 看起来踩线达标,κ=0.58 却说明一致的大半来自"大多数样本本来就 pass"的基础率,judge 的真实判别力有限——单看 fail 行,人工判 fail 的 22 条里 judge 只抓到 14 条,漏判率约 36%。这正是分布偏斜场景的典型失真:一致率与 κ 讲的是两个故事,而真正致命的那个数字(坏样本漏判)两者都没直接回答。所以阿里的 judge 升级统计把高风险样本漏判率单列成项——校准报告里它必须与一致率并排出现。

(4)规模化路径:先小后大,先专家后队伍。 四家的起步规模惊人一致:

公司 起步规模 扩张条件
Airbnb 20–100 个专家标注样本起步 rubric 稳定且需要规模时才扩大标注队伍
腾讯 新套件前 20–50 个参考解 通过率稳定后用例"毕业"进回归集
阿里 先做 50–200 条高质量 golden set 成熟后扩展分类采样集、长尾集、对抗集、线上回流集
DoorDash rubric + 校准集 + 参考解 校准一致率达标后 judge 放量到每天 2,000 会话

顺序不能颠倒:先用少量专家把 rubric 磨稳定,再扩队伍。提前规模化标注的后果是:一群标注员按一份含糊的指南生产大批量低质标签,返工成本远高于前期慢慢磨 rubric。

(5)gold set 必须含坏样本。 这是 Airbnb 十条要点之一。校准集的构成要刻意覆盖三类"陷阱样本":

  • 流畅的错误:语言漂亮但事实错误——测 judge 是否被流畅性迷惑;
  • 正确的改述:语义正确但字面不同于参考答案——测 judge 是否过度依赖字面匹配(Airbnb 78%→88% 案例的病灶正是这里);
  • 边界样本:刚好踩在 rubric 判定线上的样本——它们决定 judge 的判定边界画在哪。

(6)隐私与合规。 Airbnb 明确:生产流量抽样送人工评审前必须去标识化,且用途限定于安全与质量。这不是可选项——任何把未脱敏生产会话直接丢给标注团队的流程,在合规审查处直接死亡(数据飞轮的合规红线详见第 E12 章 · 在线评估与数据飞轮)。

动手实验:gold set 的构造、入库标准检查与治理流水线见 labs。 cd evals-special/labs && python3 eval_lab02_golden_dataset.py

2.5 人工评分路由:不是「分数低」才配进人工

三层评分流水线真正的设计难点不在每一层怎么评,而在层与层之间怎么流转。阿里给出了完整的分层筛查架构:

粗筛层(低成本快速分流)          精判层(确认 badcase)          人工复核层(终判)
规则 Scorer + 轻量 Judge    →    完整规则 + Judge          →    高风险 / 低置信 /
明显通过 / 明显失败 / 存疑        产出:问题分类、问题现象、       冲突 / 口径未固化
                                  置信度、判定依据

关键设计:评分输出不止 pass/fail。精判层必须同时产出问题分类(现象层:如事实性错误/答非所问/过度承诺)、问题现象、置信度、判定依据——为下游 RCA 提供"现象入口"(第 E11 章 · Badcase 根因分析与优化闭环)。对路由而言,这四个字段里的置信度与判定依据(reason)是路由信号的直接来源:没有它们,下表的六类触发条件有一半无法实现。

人工评分路由的六类触发条件(阿里的核心贡献,也是本章的面试题眼):

# 触发信号 具体含义 捕获什么问题
① 边界分 自动得分落在阈值附近的灰区 阈值误判风险最高的样本
② 低置信 评分器自己输出的置信度低 评分器"知道自己不确定"
③ reason 含糊 judge 给了分但判定依据含糊、不可复核 judge 在"猜"而不是"判"
④ 多 judge 分歧 多个 judge 结论互相冲突 口径模糊或样本本身难(呼应 Airbnb"解决自动评估器间冲突")
⑤ 新版本上线抽样 新模型 / 新 Prompt / 新工具 Schema / 新活动上线,按抽样率送人工 分布漂移:旧评分器对新版本是"盲"的
⑥ 规则与 Judge 冲突 两层结论不一致 口径缺口 → 人工终判并回收口径

为什么"只看分数阈值"不够? 这是路由设计最常见的简化,必须能说出它漏掉的三类信号:

  1. 低分 ≠ 不确定。一个样本被规则高置信判 fail(如 JSON 损坏、禁用工具被调用),失败得明明白白,不需要人工——它需要的是修复,不是复核。反过来,一个 0.49 分的边界样本比一个 0.05 分的样本更值得人工看。
  2. 分数捕捉不到"评分器自身的不确定性"。置信度、reason 质量、judge 间分歧,都是分数之外的元信号——它们度量的是"尺子可不可靠",而不仅是"样本好不好"。
  3. 分数捕捉不到"分布漂移"。新模型/新 prompt/新 schema 上线时,旧评分器可能整体失准但分数看起来正常——此时唯一可靠的策略是按抽样率主动送人工(阿里的"变更观察期"),用人工结论反过来校验评分器是否还有效。这与主动学习思路一致:阿里在样本治理中明确,新分布出现时优先抽取低置信/高影响/新意图/新工具/新知识点样本进人工确认。

路由逻辑可以直接写成代码:

def route_to_human(sample, rule_verdict, judge_verdicts, context) -> bool:
    # —— 第一类:不确定性信号 ——
    if is_borderline(rule_verdict.score, gate_threshold):       # ① 边界分
        return True
    if max_confidence(rule_verdict, judge_verdicts) < CONF_MIN: # ② 低置信
        return True
    if is_vague(judge_verdicts[0].reason):                      # ③ reason 含糊
        return True
    if len({v.verdict for v in judge_verdicts}) > 1:            # ④ 多 judge 分歧
        return True
    # —— 第二类:漂移信号 ——
    if context.recent_change and sampled(context.audit_rate):   # ⑤ 新模型/新prompt/
        return True                                             #    新schema/新活动抽样
    # —— 第三类:冲突信号 ——
    if rule_verdict.verdict != judge_verdicts[0].verdict:       # ⑥ 规则 vs Judge 冲突
        return True                                             #    人工终判 + 回收口径
    return False

用 5 条样本走一遍路由决策(判断每条命中哪类信号):

样本 规则层 Judge 层 置信/reason 上下文 路由结果
A fail(0.02,JSON 损坏) 未触发 高置信 常规 自动:明确失败,送修复不送人工
B 0.49(门禁线 0.50) pass(0.6) — 常规 人工:① 边界分
C pass pass reason:"整体感觉还行" 常规 人工:③ reason 含糊,不可复核
D pass judge1=pass,judge2=fail — 常规 人工:④ 多 judge 分歧
E pass pass(0.9),reason 完整 — 新 prompt 上线第 2 天,命中抽样 人工:⑤ 新版本观察期抽样

注意样本 A 与 E 的对照:A 分数极低但无人工必要,E 分数很高且 reason 完整却必须进人工——路由的依据从来不是分数高低,而是信号的类别。

两个工程细节值得在面试中主动补充:

  • 路由率本身要监控。送人工比例突然飙升,通常意味着评分器坏了或分布漂移了(与"0%/100% 异常"同理);路由率长期为零,则可能是阈值设得太松,路由形同虚设。
  • 线上抽样是路由的最大进料口。Airbnb 每日抽样 5% 去标识化生产流量,跑检查与 judge 后标记样本送人工,每周 PM 评审——在线评估与人工路由共用同一套打分口径(DoorDash 原则:离线与线上同一 rubric + 同一校准 judge,两边分数才可对齐;详见第 E12 章 · 在线评估与数据飞轮)。

动手实验:分层筛查(粗筛 → 精判)与路由的成本节省可量化复现。 cd evals-special/labs && python3 eval_lab03_programmatic_scorers.py

2.6 人机分工决策表:什么永远留给人

把前面各节的结论汇总成一张可直接用于系统设计的决策表:

判断对象 谁评 理由 出处
硬条件:工具调用、状态、字段、禁用动作 规则 确定性、毫秒级、100% 稳定 阿里/腾讯
通用语义:礼貌、清晰、连贯、groundedness Judge(校准后) 可规模化;"judge 能判礼貌/清晰" 阿里
内部政策口径:"已发货+拒收+运费险+特殊类目走哪条流程" 人(业务定口径) 答案不在任何模型的训练分布里 阿里
依赖内部政策的判断:"叠加优惠差价是否应补偿" 人 judge 判不了政策依赖型问题 阿里
价值判断与"好 vs 坏"争议 指定的人类终判者 争议需要唯一裁决人,否则无限循环 Airbnb EDD 原则 4
高风险:医疗/金融/安全 人 100% 复核 单次误判代价不可接受 腾讯
高风险运营:赔付/隐私/合规/投诉升级 人(自动通过也定期复核) 自动通过 ≠ 无需审计 阿里
细微差别与创意 人 rubric 难以穷举"好品味" Airbnb
自动评分器间冲突 人仲裁 冲突=口径缺口,需权威裁决并回收口径 Airbnb/阿里
通过率 0%/100% 异常诊断 人 先怀疑任务与评分器 腾讯

从表中可以提炼出永远留给人的三类维度:

  1. 政策口径——业务规则的定义权不属于任何自动评分器;
  2. 价值判断——涉及取舍与排序的争议需要一个被授权的终判者;
  3. 高风险——误判代价不可接受的场景,自动化只能做初筛,人做最终把关。

以及一条防止过度自动化的边界原则(阿里原文):"能自动稳定判断的不长期依赖人工"——注意它的双向性:既反对"人工全量打分",也反对"人工永远把着不放"。分工的终局是人的有序撤退:今天人判的口径,明天变成规则或校准后的 judge;撤退的前提是自动化层通过了校准验收(一致率、高风险漏判率、边界稳定性)。腾讯表格中"人工评分器不进门禁,做采样审查"正是这种撤退后的稳态形态。

兜底裁决的升级路径(组织层配套):分工表回答"谁评",落地还要回答"评的人之间不一致怎么办"。可操作的三级升级链:标注员分歧 → SME 复审 → 指定的最终决策者裁决——Airbnb EDD 原则 4 要求明确指定这一个人,因为"好 vs 坏"的争议如果没有唯一终裁人,会在委员会里无限循环。每级裁决的结论都要带依据并写回 rubric,这就接上了 2.7 的反哺闭环。另有一个能批量消除"伪分歧"的机制值得借鉴:DoorDash 的 eligibility 适用性前置——judge 先判该标准是否适用本会话,不适用则跳过(如食谱流程不因缺复购步骤被扣分)。实践中相当一部分"judge 与人工分歧"其实是"这条标准本就不该评这个会话",把适用性判断前置,这类分歧在源头就消失了。

2.7 人工结论反哺:一次人工判定要产出三份资产

人工判完不是终点。如果人工结论只用于"给这条样本一个分数",那么下一条同类样本还得再花一次人工——人力成本线性增长,永远追不上样本量。阿里的反哺机制把人工结论导向三个去处:校准规则、校准 judge prompt、校准根因标签体系。

反哺路径一:规则层——口径回收。 路由条件⑥(规则与 judge 冲突)的人工终判,产出的不只是这条样本的 verdict,更是一条新口径。例如业务终判"拒收+运费险场景应走先退款后退货流程",这条裁决应当被写成一条确定性规则(或 rubric 检查项)入库——下次同类样本由规则直接判定,不再消耗人工。这就是"回收口径"四个字的完整含义:人工判定把口径缺口补上,自动化层的能力边界向外推一格。

反哺路径二:Judge 层——校准集回流。 人工与 judge 的分歧样本是校准集最优质的增量来源(它们恰好落在 judge 的判定边界上):分歧样本入金标校准集 → 分析分歧原因 → 修 rubric/few-shot/judge prompt → 重新跑校准五步法(2.3);DoorDash 更进一步用 GEPA 自动搜索 judge prompt 修订、只保留提升留出集一致率的版本,并在 rubric 演进(新增能力)时收新标注、重新校准。

反哺路径三:根因层——标签体系。 人工复核结论反校准根因标签体系(第 E11 章 · Badcase 根因分析与优化闭环):标签要稳定、可统计、指向 owner 与处理动作——运营可配置 / 算法需优化 / 工程需修复 / 业务需定口径。注意阿里强调"业务需定口径"本身就是一类根因:很多看似模型失败的问题,根因是业务规则从未被定义——这类问题的修复动作不是改 prompt,而是开一次业务评审会。

把反哺机制汇总成一张"资产转换表"——人工评估的每一类产出都应对应一个可复用的资产:

人工产出 转换成的资产 消费方 杠杆效果
冲突样本的终判 + 依据 新规则 / 新 rubric 检查项 规则层与 Judge 层 同类样本下次不再耗人工
分歧样本集 金标校准集增量 judge 校准流程 judge 一致率向 85% 线逼近
根因判定结论 根因标签库(指向 owner) RCA 与修复闭环(E11) 失败聚类产出可执行行动项
业务口径裁决 评测集的期望行为定义 golden set(E03) 新用例获得明确的验收标准
Trace 采样发现的隐藏失败模式 新用例 / 新检查项 回归集(只增不减) 线上失败转化为离线防线

反哺的规模效应,用两个工业数字收尾:

公司/项目 人工投入方式 杠杆产出
DoorDash(Ask DoorDash) 人工定 rubric + 标注校准集 + 审计 judge,打分交给 judge 全国上线前 agent 质量分 +8 分、错误率近乎减半;全量回归 6+ 小时 → 约 20 分钟;日均 2,000 个自动评分会话
Discord AITL(EMNLP 2025 工业赛道) 四类人工客服在线标注持续回流,驱动检索/生成再训练 再训练周期从月级压缩到周级;美国试点 recall@75 +11.7%、precision@8 +14.8%、有用性 +8.4%、采用率 +4.5%

Discord AITL 是人工评估反哺闭环的教科书样本:人工标注 → 评测集 → 再训练 → 上线 → 新标注,且专门量化了 offline 与 online 评测设置的一致性。它说明人工评估的产出不仅校准评分器,还能直接驱动模型迭代——人工不是成本中心,是评分系统的校准源、口径工厂与数据飞轮的进料口。


三、面试高频考点

# 考点 分级 一句话考察意图
1 人工的定位:校准源而非打分主力 ⭐⭐⭐ 是否理解三层分工本质;能否说出"专家时间 60%+ 花在校准与诊断"
2 人工评估的六个高杠杆场景 ⭐⭐⭐ 能否列出门槛之外的场景清单(校准/主观/异常诊断/GT/Trace 采样/高风险兜底)
3 Judge 校准五步法与 85% 校准线 ⭐⭐⭐ 是否真做过校准;gold set 含坏样本、分歧分析改 rubric 是得分点
4 人工评分路由的触发条件 ⭐⭐⭐ 系统设计深度题眼:必须答出"不是只看分数阈值",六类信号能列四类即合格
5 人机分工边界:永远留给人的维度 ⭐⭐⭐ 自动化边界意识:政策口径、价值判断、高风险三类不可让渡
6 专家分歧处理纪律 ⭐⭐ 是否知道"先停下解决分歧再自动化";分歧是口径缺口不是噪声
7 IAA 度量:Cohen's κ / Krippendorff's α ⭐⭐ 标注工程基本功;能说出 IAA 低首先怪 rubric 是加分项
8 0%/100% 通过率异常诊断 ⭐⭐ 第一反应是否"先怀疑任务定义与评分器"而不是怀疑模型
9 gold set 设计:含坏样本、20–100 起步 ⭐⭐ 是否理解"无坏样本的校准集测不出误罚";规模化路径是否先专家后队伍
10 Judge 升级后的三项统计 ⭐⭐ 是否把 judge 当需持续运营的资产:一致性/高风险漏判率/边界稳定性
11 人工结论反哺闭环 ⭐⭐ 人工判定是否被杠杆化:回收口径 → 规则/judge prompt/根因标签
12 隐私合规:去标识化后再人工评审 ⭐ 生产环境工程常识;Airbnb"用途限定于安全与质量"

四、经典面试题与参考答案

题 1(基础):三层评分体系里,为什么人工不做日常全量打分?专家时间应该怎么分配?

参考答案: 三层评分的分工是"规则主判、Judge 辅助、人工兜底"(阿里),选择优先级为确定性 > Rubric > 人工(腾讯)。人工不做全量打分有三笔账:成本上人工是分钟-小时级/人力,规则毫秒级免费、judge 秒级;规模上生产流量是千会话/天量级(DoorDash 日均 2,000 个自动评分会话,人工全量回归要 6+ 小时、自动化后约 20 分钟);杠杆上专家最稀缺的能力是"定义什么是好",不是重复判断。因此腾讯给出经验法则:能自动化的坚决不找专家,专家时间 60%+ 花在"校准 LLM 评委"与"诊断异常";DoorDash 同构:人工用在杠杆最大处——定 rubric、标注校准集、审计 judge 行为;Airbnb 则要求指定一个最终人类决策者裁决争议。人工的正确定位是评分系统的校准源与仲裁庭,不是流水线工人。

题 2(基础):Agent 评测中哪些工作必须留给人工?请给出尽量完整的清单。

参考答案: 按腾讯六场景为主干:① 校准 LLM 评委(最核心,抽样 100–200 条对齐,一致率 ≥85% 才可用);② 主观任务打分(语气、清晰度等 rubric 维度的人工抽样);③ 诊断通过率异常(0%/100% 通常是任务或评分器坏了);④ 建 Ground Truth(新套件前 20–50 个参考解,配合基线快照机制);⑤ Trace 采样审查(每周固定抽样读轨迹找隐藏失败模式);⑥ 高风险兜底(医疗/金融/安全 100% 人工复核)。再补两家:Airbnb 强调人工负责细微差别与创意、安全高风险决策、解决自动评估器间冲突;阿里强调新建评测集时"定口径"(如已发货+拒收+运费险场景走哪条流程需业务先定)与处理争议样本。归纳成三类不可让渡的维度:政策口径、价值判断、高风险——它们的答案依赖内部政策与业务取舍,不在任何模型的训练分布里。

题 3(进阶):请完整描述校准一个 LLM Judge 的流程,给出量化标准,以及不达标时怎么办。

参考答案: 按 Airbnb 校准五步法:① 建 50–100 条 gold set,必须含坏样本——流畅的错误、正确的改述、边界样本三类陷阱样本要刻意覆盖;② 用 judge 跑该集合;③ 看一致率,目标 high 80s ~ 90s(腾讯口径 ≥85%、阿里 ~85% 后进日常自动化),分歧用 Cohen's κ / Krippendorff's α 度量;④ 逐条分析分歧 → 修 rubric 与 few-shot 示例 → 重跑;⑤ 失败模式变化、rubric 演进、judge prompt/模型升级时重新校准。不达标时的动作不是换 judge 模型,而是回到分歧样本:Airbnb 客服案例中初始一致率 78%,分歧分析定位到 judge 误罚正确的改述,修 rubric 与示例后达 88%。校准还应自动化提效:DoorDash 用 GEPA(arXiv 2507.19457)迭代生成 judge prompt 修订、只保留在留出集上提升人工一致率的版本。校准后进入持续运营:每次升级产出三项统计——与人工一致性、高风险样本漏判率、边界样本稳定性。

题 4(进阶):两位专家标注同一校准集出现约 20% 的分歧。有人建议"取多数/平均,先往前推进",你怎么看?

参考答案: 不能取平均往前推进,这是标注工程里最危险的捷径。Airbnb 的纪律是:专家有分歧就先停下解决分歧再自动化。理由是:专家分歧通常不是随机噪声,而是口径未定义的信号——两位专家各自在应用指南没覆盖的隐含标准;此时取多数或平均,等于把一份未定义的口径固化成训练/校准数据,judge 学到的将是系统性偏差,而且后续很难追溯。正确流程:① 把分歧样本摆上桌逐条辩论;② 裁决出唯一答案;③ 把裁决写回 rubric/标注指南——分歧处理过程就是口径固化过程;④ 用更新后的指南重新标注分歧样本验证一致性;⑤ 再进入后续批次。同时要区分:若分歧集中在某类场景,说明 rubric 对该场景欠定义,补指南;若分散且两位专家 IAA 持续偏低,才考虑标注员培训或换人——但第一步永远是先怀疑 rubric,因为"如果人都无法一致地应用 rubric,模型也不可能"(Airbnb)。

题 5(进阶):你的评分流水线如何决定哪些样本最终送人工?为什么不能只看分数阈值?

参考答案: 用阿里的六类路由触发条件:① 边界分(得分落在门禁阈值灰区);② 低置信(评分器输出的置信度低于阈值);③ reason 含糊(judge 判定依据不可复核);④ 多 judge 分歧;⑤ 新模型/新 Prompt/新工具 Schema/新活动上线的抽样观察;⑥ 规则与 judge 结论冲突 → 人工终判并回收口径。这些条件依托分层筛查架构:粗筛层(规则+轻量 judge 快速分流)→ 精判层(完整规则+judge,输出问题分类/现象/置信度/判定依据)→ 人工复核层。只看分数阈值会漏掉三类信号:其一,低分 ≠ 不确定——高置信的明确失败(JSON 损坏、禁用工具)需要的是修复不是复核,边界分反而更值得看;其二,置信度、reason 质量、judge 间分歧度量的是"尺子可不可靠",是分数之外的元信号;其三,分数捕捉不到分布漂移——新版本上线时旧评分器可能整体失准而分数照常,必须按抽样率主动送人工,这也是主动学习"优先抽低置信/新意图/新工具样本"的落点。另外要监控路由率本身:飙升通常意味着评分器坏了或漂移了。

题 6(进阶):某个评测套件的通过率从 70% 突然变成 0%(或 100%),你的第一反应和排查路径是什么?

参考答案: 第一反应不是"模型突然变弱/变强",而是怀疑任务定义或评分器坏了——腾讯明确:0% 或 100% 通常是任务/评分器问题,不是模型能力问题;其稳定性调试经验也给出同构信号:0% pass^N 通常说明任务定义有问题。排查路径:① 查评测基础设施——用例输入是否被改坏、fixture/环境状态是否漂移、被测系统是否根本没跑通(超时、schema 变更导致全量解析失败);② 查评分器——规则断言是否过严(如基线更新后旧快照失配)、judge 是否升级或 prompt 变动导致尺度漂移;③ 人工抽样:按"诊断 0%/100% 异常"场景,专家抽 10–20 条逐条读输入、输出与 trace,判断到底是系统性失败还是系统性误判;④ 用旧版本被评系统重跑同一套件做对照——若旧版本也变 0%/100%,锁定评分器或环境;若旧版本分数正常,才回到新版本变更本身。这正是人工六场景中"诊断异常"的价值:自动评分器无法给自己做体检,体检必须靠人。

题 7(进阶):Judge 模型要升级到"更强"的新版本,能直接换吗?需要走什么验证流程?

参考答案: 不能直接换——"更强"是通用能力判断,不是"在你的 rubric 上判得更准"的证明;未经验证替换 judge 等于悄悄换了一把尺子,历史分数全部失去可比性。验证流程按阿里的 judge 持续运营口径:维护一份 judge 金标校准集(含坏样本与边界样本),对新版 judge 固定产出三项统计——① 与人工标注一致性(一致率或多模型对抗 Kappa),对照 ≥85% 的经验线;② 高风险样本漏判率(合规/资损/隐私),这是新版本最容易悄悄恶化的地方,平均分涨而高风险漏判升是典型的"尺子变松";③ 边界样本稳定性(同一批边界样本重复评测的波动)。同时做新旧桥接:同一批历史样本用新旧 judge 各跑一遍,量化分数漂移幅度,趋势图标注版本断点(主手册第 8 章 · Agent 评估与可观测性 对"judge 版本化与历史数据桥接"有展开)。若新 judge 在分歧样本上的判定理由与旧版系统性不同,还要回到 rubric 层确认是 judge 变了还是口径该变。DoorDash 的实践可作补充:judge prompt 的打磨本身可用 GEPA 类优化器在留出集上自动迭代,但"是否采纳修订"的验收标准始终是与人工标注的一致率。

题 8(系统设计):你们要为一个客服 Agent 搭建评分体系,团队只有一位领域专家(SME)和一位标注员。请设计人机分工方案:如何起步、如何校准、如何路由、如何反哺。

参考答案: 总体原则:把 SME 的时间当最稀缺资源预算——60%+ 花在校准 judge 与诊断异常,坚决不做日常全量打分(腾讯经验法则)。分四阶段: ① 起步(定口径 + 建锚):SME 牵头写 rubric,要求"每条标准从会话本身可验证"(DoorDash),业务口径类问题(退款政策组合、补偿规则)由 SME 直接定标准;标注员配合产出 20–50 个参考解(腾讯)与 50–100 条 gold set,刻意包含坏样本:流畅的错误、正确的改述、边界样本(Airbnb)。 ② 校准:judge 跑 gold set,目标一致率 ≥85%(腾讯/阿里口径);分歧样本由 SME 逐条裁决并写回 rubric——"专家有分歧先停下解决再自动化"(Airbnb);标注员负责按更新后的指南重标分歧批,报 Cohen's κ 监控一致性;预算允许时可用 GEPA 类方法自动搜索 judge prompt 修订。 ③ 路由:分层筛查——粗筛规则分流 → 精判层输出问题分类/现象/置信度/判定依据 → 六类条件路由人工(边界分/低置信/reason 含糊/多 judge 分歧/新版本抽样/规则-judge 冲突);线上每日抽 5% 去标识化流量跑 judge、标记样本进人工队列(Airbnb);医疗/资金/合规类场景 100% 人工复核(腾讯)。 ④ 反哺:人工终判的口径固化为新规则;分歧样本回流校准集;根因标签按"运营可配置/算法需优化/工程需修复/业务需定口径"归类(阿里);每周 SME 评审会看失败主题与路由率趋势(Airbnb 每周 PM 评审)。隐私红线贯穿全程:人工评审前去标识化、用途限定于安全与质量。

题 9(进阶):给定人工与 judge 的混淆矩阵,你如何量化人机一致性?为什么只看一致率会误事?

参考答案: 先算观察一致率 P_o(混淆矩阵对角线占比),再算 Cohen's κ = (P_o − P_e)/(1 − P_e),其中 P_e 是按双方各自的边际分布算出的"机遇一致率"——κ 扣除了"瞎猜也能对上"的部分,度量的是真实判别力。举例:100 条样本,对角线为 72/14,P_o = 86%,P_e = 0.80×0.78 + 0.20×0.22 ≈ 0.67,κ ≈ 0.58——一致率看似达到 85% 线,κ 却揭示一致多半来自"大多数样本本来就 pass"的基础率。pass/fail 判定的分布天然偏斜,一致率会系统性高估 judge 质量:上例中人工判 fail 的 22 条里 judge 只抓到 14 条,漏判率约 36%。这就是阿里把高风险样本漏判率单列为 judge 升级统计项的原因——合规/资损/隐私类样本漏一个的代价远超平均分波动。工程结论:一致率、κ、坏样本/高风险召回要并排报告;多标注员或非二值任务用 Krippendorff's α。

题 10(系统设计):为一个涉及资金操作的高风险 Agent(退款/赔付)设计人工评估的运营方案。

参考答案: 按四条线设计:① 进料线:赔付/资损/隐私/合规/投诉升级类样本无条件进人工队列,与自动评分结果无关——阿里的口径是"自动通过的也要定期人工复核";路由六条件中此类样本叠加"高风险"权重优先处理。② 裁决线:双人复核制(初审 + 复审),结论带依据、rubric 版本与会话 ID 留痕进审计日志;分歧按"标注员 → SME → 指定终判者"升级(Airbnb EDD 原则 4 要求明确唯一终判人);裁决结论写回业务口径与 rubric。③ 校准线:高风险场景全部作为对抗样本纳入 judge 金标校准集;judge 每次升级单独报告"高风险样本漏判率",该指标一票否决——平均一致率达标但高风险漏判恶化即阻断放量。④ 闭环线:确认的高风险 badcase 只增不减进回归集;根因标签绑定 owner(运营可配置/算法需优化/工程需修复/业务需定口径);稳定性按关键决策类口径——腾讯对关键决策类容忍阈值为 0%(N 次全过,一次失败都可能误判),发布门禁用连续成功率(pass^k)而非至少一次成功率。贯穿四线的原则:高风险场景自动化只做筛查、人做终判,且每次终判都要可审计、可复用。


五、易错点 · 反直觉点

  1. 误区:专家越多,评测越可靠。 真相:人力堆在日常打分上是负杠杆——成本分钟-小时级、扩展性差,而且专家被消耗在重复劳动上就没空做校准与诊断;腾讯的口径是专家时间 60%+ 必须花在"校准 LLM 评委"与"诊断异常"。记忆锚点:专家是校准砝码,不是流水线。
  2. 误区:分数低于阈值的样本送人工复核就够了。 真相:低分 ≠ 不确定——高置信的明确失败不需要人工;路由要看的是不确定性信号(边界分/低置信/reason 含糊/多 judge 分歧)、漂移信号(新版本抽样)与冲突信号(规则 vs judge),阿里明确"不由分数阈值单独决定"。记忆锚点:路由看的是"尺子可疑",不是"分数难看"。
  3. 误区:专家意见不一致就投票取多数,先推进进度。 真相:分歧通常是口径未定义的信号,取多数会把未定义的口径固化成系统性偏差;Airbnb 的纪律是先停下解决分歧再自动化,裁决结果要写回 rubric。记忆锚点:分歧不是噪声,是口径缺口。
  4. 误区:校准集里放满"标准好答案"就够了。 真相:gold set 必须含坏样本(Airbnb 十条要点之一)——没有"流畅的错误"测不出 judge 被流畅性迷惑,没有"正确的改述"测不出 judge 误罚同义改写(78%→88% 案例的病灶正在于此)。记忆锚点:没有坏样本的 gold set,校不出尺子的偏差。
  5. 误区:通过率 0% 说明模型太弱,100% 说明评测太简单。 真相:0% 或 100% 通常是任务定义或评分器坏了(腾讯六场景之三);0% pass^N 的调试技巧是先查任务定义,不是先怀疑能力。记忆锚点:全军覆没先查尺子,再查选手。
  6. 误区:judge 是强模型就能直接上岗,校准是走形式。 真相:未校准的 judge 制造误导性信心(Airbnb),"LLM Judge only useful if it agrees with human reviewers"(DoorDash);一致率不达 85% 上下就放量,等于拿一把没校准的尺子做发布决策。记忆锚点:先校尺,再量货。
  7. 误区:人工判定完、分数入库,这条样本就关闭了。 真相:人工结论必须反哺三处——口径固化为规则(下次同类不再耗人工)、分歧样本回流校准集修 judge prompt、结论反校准根因标签体系(阿里);判完不反哺,人力成本永远线性增长。记忆锚点:一次人工判定,要产出三份资产。
  8. 误区:把生产会话直接导给标注团队评审,效率高。 真相:生产流量送人工前必须去标识化,且用途限定于安全与质量(Airbnb 隐私注记)——未脱敏的人工评审流程在合规审查处直接出局。记忆锚点:不脱敏,不评审。
  9. 误区:judge/rubric 升级后,旧校准结论继续有效。 真相:rubric 演进、judge prompt/模型升级、失败模式变化,任一发生都要重新校准(DoorDash/Airbnb),且升级要固定产出三项统计:与人工一致性、高风险漏判率、边界稳定性(阿里)。记忆锚点:尺子一换,先重新校尺。
  10. 误区:一致率要追求 100%,85% 是妥协。 真相:人与人之间也做不到 100% 一致——校准目标的实质是"judge 与专家的分歧 ≤ 专家之间的分歧";盲目追 100% 会过拟合到个别专家的口味,或把 rubric 改成无法泛化的特例清单。记忆锚点:校准的天花板是 IAA,不是完美。

六、推荐资源

论文

  1. GEPA: Reflective Prompt Evolution Can Outperform Reinforcement Learning(arXiv 2507.19457,2025-07)——DoorDash 用于 judge 校准的反射式 prompt 优化器:采样运行 → 自然语言反思 → 变异 prompt → Pareto 前沿按切片保留候选;本章 2.3 的"自动化校准"即此工程化应用。
  2. Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena(arXiv 2306.05685,2023-06)——judge 与人类一致率(80%+)及 judge 偏差清单的奠基文献;理解"为什么 judge 需要人工校准"的历史起点。
  3. Agent-in-the-Loop: A Data Flywheel for Continuous Improvement in LLM-based Customer Support(Discord,EMNLP 2025 工业赛道,ACL Anthology 2025.emnlp-industry.135)——四类人工在线标注持续回流、再训练周期月级→周级的完整数据飞轮样本;人工评估反哺闭环(2.7)的学术侧对照。

工程博客

  1. Airbnb《Eval-driven development: Lessons from evaluating GenAI at scale》——人工评估四用途、20–100 样本起步、专家分歧纪律、校准五步法与 78%→88% 实战案例的原始出处。
  2. DoorDash《Building Ask DoorDash (Part 3): Evaluation》(2026-06-30)——"人工用在杠杆最大处"、GEPA 校准、"同一 rubric 既供人工校准又供 judge 规模化"的出处;配合同系列《A Simulation and Evaluation Flywheel to Develop LLM Chatbots at Scale》(2026-01)读:judge 用人工标注样本校准到与专家一致后才放量。
  3. 阿里技术《Agent 评测:方法论与体系设计》——人工评分路由(六类触发条件)、分层筛查三层架构、评分输出规范、judge 升级三项统计、根因标签四 owner 的出处,本章 2.5–2.7 的主力素材。
  4. 腾讯技术工程《AI Agent & Skill 测评方案及落地实践》——三类评分器对照表、人工六个必要场景、"专家时间 60%+"经验法则、0%/100% 异常诊断的出处。
  5. Anthropic《Demystifying evals for AI agents》(2026-01)——"起步只需 20–50 个真实用例"、打分三层(确定性代码检查 > 模型 rubric > 人工校准)的官方表述。

本特辑交叉引用

  • 第 E04 章 · 评分三层之一:程序化评分——规则层的检查清单与评分输出规范(本章路由信号的来源)。
  • 第 E05 章 · 评分三层之二:LLM-as-Judge 深入——rubric 工程与 judge 偏差全景(本章校准对象的构造细节)。
  • 第 E10 章 · 评测驱动开发(EDD)——"100 样本人工精读法"与 Airbnb 完整案例演练。
  • 第 E11 章 · Badcase 根因分析与优化闭环——人工结论反哺的根因标签体系("人审兜底"的下游)。
  • 第 E12 章 · 在线评估与数据飞轮——线上抽样送人工、离线-线上同一 judge 口径、反馈生产线。
  • 主手册第 8 章 · Agent 评估与可观测性——人机协同(HITL/HOTL)与 judge 校准的概览版。

动手 labs

Lab 本章对应内容 运行命令
labs/eval_lab05_judge_calibration.py 校准五步法:一致率/κ/分歧分析/复现 Airbnb 78%→88% cd evals-special/labs && python3 eval_lab05_judge_calibration.py
labs/eval_lab03_programmatic_scorers.py 分层筛查与路由:粗筛→精判的成本节省量化 cd evals-special/labs && python3 eval_lab03_programmatic_scorers.py
labs/eval_lab02_golden_dataset.py gold set 构造、入库标准与治理(含坏样本设计) cd evals-special/labs && python3 eval_lab02_golden_dataset.py
labs/eval_lab09_rca_pipeline.py 人工结论反哺的根因标签与"人审兜底"环节 cd evals-special/labs && python3 eval_lab09_rca_pipeline.py
第 7 章 / 共 15 章

轨迹与 Agent 级评估

📌 本章导航(6 节)

一句话导读:只看"最终答案对不对"的评估,会系统性放过 Agent 最危险的失败——结果碰巧对、路径已经错。本章讲透过程级评估的完整工程:为什么 outcome-only 有四个盲区、Airbnb 三层模型(step/trajectory/session)与阿里四层评判(Turn/Session/Trace/Outcome)如何分工、结构化 Trace 为什么是被测 Agent 的标准能力而非事后补救、DoorDash 的 Transcript Builder 如何把原始 trace 塑形为 judge 能用的证据切片、腾讯 LCS 序列比对怎么做归一化与扣分、评测如何镜像多智能体运行时架构,以及 2024–2026 前沿(PRM、progress rate、Agent-as-a-Judge、元评估)如何落到工程。学完本章,你能设计一套"结果 + 过程"双门槛的 Agent 级评估体系,并回答面试中最常被追问的那句:"你怎么知道 Agent 不是碰巧答对的?"


一、知识图谱

轨迹与 Agent 级评估(评什么形态:过程 > 单一结果)
│
├── 为什么只看最终答案不够
│   ├── 假阳性:结果对但路径错 / 带风险 ——「生产迟早暴露」(阿里)
│   ├── 一次请求 = 搜索 × 推理 × 外部动作 × 文本生成,每环节可独立失败(Airbnb)
│   ├── 三个致命缺陷:诊断盲区(20 步轨迹错在第 3 步无法定位)
│   │                奖励稀疏(终局标量无法归因)/ 捷径与欺骗(reward hacking)
│   └── 双向背离:过程对但结果败(环境抖动)⇄ 结果对但过程违规(跳过校验)
│
├── 分层评估模型
│   ├── Airbnb 三层:step(单工具调用/推理步)→ trajectory(路径合理高效)
│   │               → session(整体达成用户目标)
│   ├── 阿里四层:Turn(单轮)/ Session(整段会话)/ Trace(执行轨迹)/ Outcome(最终结果)
│   │   └── 「每轮都答得还行,但最终没解决问题,仍是失败」——不要只平均每轮分数
│   └── 每层失败 → 指向不同根因:单工具实现 / 规划编排 / 目标理解
│
├── Trace 基础设施(前提)
│   ├── 立场:Trace 是被测 Agent 的标准能力,不是事后补救(阿里/腾讯)
│   ├── 打点:OpenTelemetry;span 记录用户输入/模型输出/工具调用与返回/widgets(DoorDash)
│   ├── 存储:ClickHouse(DoorDash);span 层级 session→agent/task→llm_call→tool_call
│   ├── 结构化三要求:可解析 / 内容完整 / 跨版本格式稳定(腾讯)
│   └── 标准演进:OTel GenAI semconv 仍 Development;2025-08 agentic 提案;2025-12 Datadog 支持
│
├── 把 trace 变成可判证据(DoorDash Transcript Builder)
│   ├── 原始 trace 三大难判:工具返回巨大 / schema 脚手架噪声 / 证据散落多 span
│   ├── 三动作:重组分散 span · 删无信号 token · 裁超大载荷
│   └── 每条标准声明依赖证据,judge 只拿那一片(grounding=论断+工具输出;
│       多样性=推荐+原始请求;叙述=流式文本)→ 聚焦让判断更一致
│
├── 轨迹比对技术(腾讯 LCS 实现)
│   ├── 禁 exact match:路径多样,合法替代路径不该被判错
│   ├── 归一化五规则:时间戳占位 / 搜索忽略查询参数 / 写入只留路径
│   │               / 终端命令提取脚本名 / 连续读文件组内不校验顺序
│   ├── LCS 对齐 → 四类偏差:缺少 / 多余 / 不一致 / 顺序错,各扣 2 分上限 -10
│   └── 效率对比:耗时/token 以基线为基准每超 10% 扣 1;基线=人工确认过的执行快照
│
├── 评测镜像运行时架构(DoorDash 多智能体)
│   └── Orchestrator 评路由 / 护栏贯穿全流程评 / 领域 Agent 评任务能力
│
├── 前沿:过程奖励与信用分配(2023–2026)
│   ├── PRM800K → Math-Shepherd(MC rollout)→ OmegaPRM(二分 O(log n))
│   ├── GenRM(生成式批注验证)/ VinePPO(重采样无偏归因)/ PRIME(隐式奖励)
│   ├── Qwen Lessons:PRM 可被 hack、难度外推差 → 红队 + OOD 分层校准
│   └── Agent 侧:AgentBoard progress rate / τ-bench 终态 diff + pass^k
│       / Agent-as-a-Judge(带工具核验,时间 -97.72%/成本 -97.64%)/ AgentRewardBench(元评估,FPR>50%)
│
└── 落地原则:执行式验证为主、judge 为辅、人工抽检校准;
    评估器上线前先测 FPR/FNR;「结果正确 + 规则合规」双门槛

本章在特辑中的位置:评分三层(E04 程序化 / E05 Judge / E06 人工)回答"拿什么评",本章回答"评什么形态"——当被测对象从"一次输出"变成"一条轨迹"时,评估的输入(trace)、判据(三层 + 双门槛)、工具(对齐算法、Transcript Builder、PRM)全部要升级。与第 E08 章(对话与仿真评测)的分工:本章讲轨迹本身怎么评,E08 讲"轨迹从哪来"(模拟器 + fixtures);与第 E11 章的分工:本章的三层分数是 RCA 范围收敛的输入。


二、核心概念精讲

2.1 为什么只看最终答案不够:四个盲区与"假阳性"

阿里对这件事的表述最直接:"有些样本最终答案看似对,但执行路径已偏离或带风险——这类假阳性在生产迟早暴露。" 腾讯痛点表里也有同款一条:"过程易忽略——答案碰巧对但推理路径错,分不清'正确调用工具后回答'与'训练数据碰巧答对'"。Airbnb 则从请求结构给出根因:一次 Agent 请求可能同时包含搜索、推理、外部动作、文本生成,每个环节都可能独立失败,而最终文本把所有中间失败都"抹平"了。

先看一次请求的内部结构——Airbnb 所说"每个环节可独立失败"的解剖图:

一次客服 Agent 请求(五个环节,任何一个可独立失败)
用户:"帮我退掉昨天买的订单"
   │
   ├─ ① 意图识别    ── 可能把「退货」识别成「物流查询」
   ├─ ② 检索        ── 可能召回错误的退款政策文档
   ├─ ③ 推理与规划  ── 可能漏掉「先查订单状态」这一步
   ├─ ④ 工具调用    ── 可能把 order_id 参数传错、或压根没调用
   └─ ⑤ 回复生成    ── 可能编造「一定退款成功」的过度承诺
   │
   ▼
最终回复:"好的,已为您提交退款,请留意到账。"
   └── 只读这一句话,①~⑤ 的失败全部不可见

只看最终答案(outcome-only)的评估有四个盲区:

# 盲区 具体表现 后果
1 假阳性(结果对、路径错) 退款 Agent 跳过"查询订单状态"工具,凭上下文直接答"已为您退款",恰好这次订单确实可退 风险敞口持续存在;下一次遇到不可退订单就是资损事故
2 诊断盲区 一条 20 步的失败轨迹,错误可能发生在第 3 步,但终局只有一个 0/1 标量 失败无法归因,只能靠人肉读日志;迭代没有方向
3 捷径与欺骗 Agent 绕过规则、伪造输出、reward hacking——最终状态"看起来对"不代表过程正确 评测分被刷高,线上行为不可控
4 碰运气不可复现 "训练数据碰巧答对"与"正确调用工具后回答"在最终文本上无法区分 通过率虚高,换一批用例立刻打回原形

把阿里那个退款案例展开成 trace 视角,假阳性的结构一目了然:

期望轨迹:verify_identity → get_order_status → (可退?) → apply_refund → notify_user
实际轨迹:verify_identity → [get_order_status 缺失] → 直接生成「已退款」回复
outcome 评分:回复礼貌、格式正确、包含订单号 → 满分 ✗
trajectory 评分:关键校验工具未调用 → 硬门禁拦截 ✓

一个贯穿全章的真实案例(阿里 badcase 库):用户咨询"已发货的订单怎么退款",Agent 没有调用订单状态查询工具,直接按"未发货退款"流程回复并承诺退款成功——最终回复看起来礼貌、完整、格式正确,outcome 评分拿满分;但路径上关键校验工具未调用,且承诺了政策不允许的"一定退款成功"。这类样本在离线评测集里以"通过"存在,直到线上产生投诉才被回流(详见第 E11 章 · Badcase 根因分析与优化闭环)。阿里的结论:对这类 case 必须加过程型与风险型检查。

还要注意双向背离:过程全对但终局失败(环境抖动、最后一步失误)与终局成功但过程违规,是两个方向的反例。工业界(如客服 Agent)因此普遍采用"终态正确 + 规则合规双门槛",而不是二选一。学界的过程奖励模型(PRM)研究更关注前一个方向,这也是学术指标直接搬进生产会水土不服的原因之一。

动手验证:cd evals-special/labs && python3 eval_lab06_trajectory_eval.py。lab 构造了四类运行(完全正确 / 结果对但路径错 / 路径对但结果错 / 全错),断言 outcome-only 评分必然放过"结果对但路径错"的假阳性样本,而三层评估 + 硬门禁能把它拦下来。

2.2 三层评估模型:step / trajectory / session(Airbnb)与四层评判(阿里)

Airbnb 的 Agentic 评估框架把评估对象切成三层:

层 评估对象 回答的问题 典型判定手段 失败时指向的根因
Step-level 单次工具调用 / 单个推理步 这一步合法吗?参数对吗?是不是禁用动作? 参数 JSON Schema 校验、must-call / must-not-call 断言、禁用动作检查(程序化,见第 E04 章) 单工具实现问题、参数生成缺陷
Trajectory-level 整条路径 路径合理吗?高效吗?有没有绕路、重复、跳步、顺序颠倒? 与基线序列 LCS 对齐、无序关键调用集合比对、步骤数/token 预算检查 规划与编排问题、SOP 未被遵循
Session-level 整个交互 用户目标达成了吗?关键信息都覆盖了吗? 终态比对(数据库 diff)、目标 checklist、judge 对最终回复评分 目标理解问题、需求遗漏

三层各自独立失败,任何一层都不能代替另外两层:session 分高掩盖不了 trajectory 违规(假阳性),trajectory 完美也救不了 session 失败(白跑一趟)。这与 2.1 的双向背离一一对应。

阿里面向对话 Agent 给出同构但更细的四层:Turn(单轮)/ Session(整段会话)/ Trace(执行轨迹)/ Outcome(最终结果),并特别警告一个对话场景特有的陷阱:不要只平均每轮分数——"每轮都答得还行,但最终没解决问题,仍是失败"。举个例子:一段 8 轮的退款客服会话,每轮都礼貌响应、有问必答(turn 平均分 4+/5),但全程没有调用过一次退款工具,用户最后一句还是"钱还没到"——turn 均值很漂亮,outcome 层却是彻底失败。四层必须同时看,而不是取平均。四层与 Airbnb 三层的对应关系:

阿里四层 Airbnb 三层 特殊说明
Turn (step 的对话侧投影) 单轮回复的语气、澄清质量;平均分陷阱的源头
Trace step + trajectory 执行轨迹层:工具调用序列、计划、检索记录
Session session 整段会话是否推进了用户目标
Outcome session 的结果面 最终结果是否真正解决问题(工单闭环、退款成功)

多智能体系统下还有一个工程要点(Airbnb):Agent 通常在 root 下发 trace 和 span,评估侧可以通过树遍历重建 trace,校验 subagent 调用与工具使用——即轨迹结构本身(谁调用了谁、嵌套是否正确)也是评估对象。第 E08 章会展开多 Agent 场景的模拟器设计,主手册第 8 章则从 DAG 视角讨论了 handoff 评估,本章聚焦"轨迹怎么判分"。

2.3 Trace 先行:结构化 Trace 是被测 Agent 的标准能力

轨迹评估的输入是 trace。阿里与腾讯不约而同把这件事提到原则高度:"Trace 输出是被测 Agent 的标准能力,而非事后补救"(阿里);"设计阶段就把结构化 Trace 作为标准能力,而非事后补救"(腾讯)。理由很朴素:三层评估器全部消费 trace——step 层逐个 span 校验、trajectory 层抽取调用序列、session 层读取最终回复与终态;没有结构化 trace,过程评估整体不存在。

(1)span 里记什么。 DoorDash 的 Ask DoorDash 用 OpenTelemetry 打点,trace 存进内部 ClickHouse;span 记录四类内容:用户输入、模型输出、工具调用与返回、展示给用户的 widgets。阿里的要求更细:稳定记录工具名、入参、返回值、时间戳、耗时、错误;复杂 Agent 还要记录计划、检索、Guardrail 判定。腾讯把"内容完整"具体到"每步工具名/入参/返回/时间戳,理想含思维链与决策依据"。

(2)结构化三要求(腾讯):

要求 含义 违反时的代价
可解析 结构化格式(JSONL/JSON),而非自由文本日志 "有日志无结构"只能写解析器——成本高、易碎,格式一变全线崩
内容完整 每步工具名/入参/返回/时间戳,理想含思维链与决策依据 缺入参无法判参数正确性,缺返回无法判 groundedness
跨版本格式稳定 schema 不因 Agent 升级而漂移 历史 trace 与历史分数全部不可比,趋势图断档

被测系统不满足时的三档对策(腾讯):有日志无结构 → 写解析器(下策);仅最终输出 → 只能做结果评测(中策);可改造 → 推动被测系统增加 Trace 输出(推荐)。

满足三要求的最小 trace 长这样(字段对应:腾讯"每步工具名/入参/返回/时间戳" + DoorDash 四类 span 内容):

{
  "session_id": "sess_20260805_0001",
  "agent_version": "refund-agent-v1.8",
  "spans": [
    {"span_id": "s1", "type": "user_message",
     "content": "帮我退掉订单 #1234", "ts": "10:00:00.000"},
    {"span_id": "s2", "parent": "s1", "type": "tool_call",
     "name": "get_order_status", "params": {"order_id": "1234"},
     "ts": "10:00:01.210", "duration_ms": 180},
    {"span_id": "s3", "parent": "s2", "type": "tool_result",
     "result": {"status": "shipped", "refundable": false}, "ts": "10:00:01.390"},
    {"span_id": "s4", "parent": "s1", "type": "llm_call", "model": "model-x-v2",
     "input_tokens": 1840, "output_tokens": 96, "duration_ms": 920},
    {"span_id": "s5", "parent": "s1", "type": "assistant_message",
     "content": "该订单已发货,暂不支持直接退款……", "ts": "10:00:02.400"}
  ]
}

注意两点:agent_version 这类元数据是跨版本可比性的前提(分数差异归因);多智能体场景再加 parent_agent/subagent 调用边,Airbnb 正是靠树遍历重建 trace 并校验 subagent 调用。span 层级的推荐设计是 session → agent/task → llm_call → tool_call,为 OTel agentic conventions 留位置。

(3)标准化进展。 行业侧的收敛方向是 OpenTelemetry GenAI semantic conventions(gen_ai.* 属性命名空间)。按时间线(据调研整理):2024 年各家私有 schema 混战(Traceloop OpenLLMetry、Arize OpenInference 等)→ 2025-01 OpenLLMetry 语义约定并入 OTel → 2025-03 OTel 官方博客发布 AI agent 可观测性标准路线图 → 2025-08 提出 agentic systems 语义约定提案(agent/task/chain/tool 层级 span 属性) → 2025-12 Datadog 等厂商宣布原生支持 OTel GenAI semconv(v1.37+)。注意:截至 2026 年中,GenAI 语义约定仍处于 Development(开发中) 稳定性;部分 agent/tool 属性(如 gen_ai.agent.id)已进入属性 registry,但完整的 agentic span 约定仍在提案推进中、命名可能变(与主手册第 8 章口径一致)——工程上的务实做法是第一天就按 gen_ai.* 属性打点、同时保留私有字段兼容层,span 层级按 session → agent/task → llm_call → tool_call 设计,为 agentic conventions 留位置。核心属性速查:

属性 含义 对轨迹评估的用途
gen_ai.system provider 区分多供应商混部的分数归因
gen_ai.request.model / gen_ai.response.model 请求/实际模型 模型迁移时分数可比性(见 DoorDash 模型迁移案例,第 E15 章)
gen_ai.usage.input_tokens / output_tokens token 用量 trajectory 层效率预算(token 超标扣分)的数据源
gen_ai.operation.name chat / embeddings / agent 等 span 类型识别,驱动 trace 解析器

(4)trace 的复利。 trace schema 稳定之后会产生三重回报:生产 trace 是免费的评测集来源(脱敏后可直接转回放用例)、失败聚类有了统一字段(详见第 E12 章 · 在线评估与数据飞轮)、自动诊断有了输入(2.8 节的 TRAIL/AgentDebug 都以 trace 为输入)。阿里把评测执行环境隔离也列为配套要求——多用例共享状态会导致分数不可复现,这与 trace 完整性同属"评估前置条件"。

2.4 Transcript Builder:把原始 Trace 塑形为"证据切片"(DoorDash)

有了 trace 不等于能判分。DoorDash 的原话:原始 trace 完整但难判,具体三难:

  1. 工具返回可能巨大——一次餐厅搜索 API 返回上百条记录,judge 的上下文窗口装不下,装得下也会被淹没;
  2. schema 脚手架与无信号字段多——内部协议字段、调试标记占了大量 token,对判定毫无贡献;
  3. 证据散落多个 span/turn——判断"推荐是否有据"需要把第 2 轮的论断和第 5 轮的工具返回拼在一起。

解法是 Transcript Builder:一组 Python 脚本,做三个动作——重组分散的 span、删除无质量信号的 token、裁剪超大载荷,产出紧凑视图。关键设计在下一步:每条 rubric 标准声明自己依赖的证据,builder 只把那一片交给 judge。原文给出三个实例:

rubric 标准 judge 拿到的证据切片
grounding 检查(论断是否有据) Agent 的论断 + 背后的工具输出
多样性检查(推荐是否真实差异) 推荐列表 + 用户原始请求
叙述检查(是否泄露内部过程) Agent 工作时流式输出的文本

塑形前后对比(示意,字段取自 DoorDash 原文描述):

【judge 前:原始 trace 片段】
tool_result(search_restaurants):
  {meta: {request_id:"...", schema_v:"3.1", debug:{...数百字...}},
   results: [{name:"A", price:..., rating:..., eta:..., promotions:[...],
              tracking:{...}}, ... 共 137 条 ...]}      ← 数万 token,大量无信号字段
assistant(span #12): "A 川菜馆离您很近,30 分钟可达"      ← 待核验的论断
...(中间隔 7 个 turn 的其他 span)...

【judge 后:grounding 证据切片】
assertion: "A 川菜馆离您很近,30 分钟可达"
evidence:  search_restaurants.results[0] → {name:"A 川菜馆", distance_km:0.8, eta_min:30}
verdict: ____   rationale: ____

效果是"聚焦证据让判断更一致"——这与第 E05 章的 judge 校准逻辑同构:给 judge 的无关上下文越多,偏差与方差越大。DoorDash 把它列为四条 Lessons Learned 的第一条:"Judge 需要'为问题塑形'的 transcript 视图——删无关、只留标准依赖的证据。"

工程上可以这样理解:Transcript Builder 是"评测侧的 ETL"。它把一份完整的原始 trace(存 ClickHouse 的那份)物化成 N 个按标准定制的视图;原始 trace 保留用于人工复核与 RCA,视图只服务自动评分。这带来一个附带好处——judge 误判时,人审可以回到原始 trace 查证,评分与证据链永远可追溯。实现时的两个注意点:裁剪规则要版本化(裁过头会把关键证据切掉,属于"评测系统自己产生的 bug",DoorDash Lesson 4 明确说被标记失败中有真实一部分是 harness 自身故障);每条标准的证据声明应与 rubric 一起 review,二者是同一个契约的两半。

2.5 轨迹比对与 LCS 序列对齐:腾讯实现

trajectory-level 的核心动作是"把这条轨迹和预期路径比一比"。最直觉的做法是 exact match(完全一致才通过),但它是轨迹评估的头号反模式:同一任务存在多条合法路径(先查订单还是先验身份?),exact match 会把大量正确行为判错,评估集退化成"背答案"。可用的比对粒度由严到宽:

比对方式 判定逻辑 适用 缺点
Exact match 序列逐项全等 几乎不适用 合法变通路径全部误杀
LCS 对齐 + 归一化 最长公共子序列求公共骨架,偏差分类扣分 有标准 SOP、步骤顺序重要的任务(腾讯 TPerf) 需要维护基线快照
无序关键调用集合 只查关键工具调没调、参数对不对,不管顺序 路径自由度高的任务 抓不住顺序依赖(先鉴权后操作)
偏序约束 只断言先后关系(A 必须在 B 前) 有安全依赖但路径自由的任务 约束要逐条人工设计
LLM/Agent 评审 judge 读轨迹给 rubric 分 无法穷举规则的开放任务 需校准,先过元评估(见 2.8)

腾讯 TPerf(AI 性能分析 Agent)给出目前公开细节最完整的 LCS 实现。完整流水线分四步:

第一步:归一化。 对齐之前先把"不影响对错的差异"抹掉,否则同一行为每次运行都会被判"不一致"。五条规则:

归一化规则 抹掉的差异 不抹会怎样
时间戳占位 每次运行的绝对时间不同 每一步都不匹配
搜索类工具忽略查询参数 同一检索意图的措辞差异 合理改写被判参数错
写入操作只留路径 文件内容的合理差异 产物比对退化为 diff 全文
终端命令提取脚本名 命令参数顺序/细节差异 等价执行被判不一致
连续读文件组内不校验顺序 并行读多个文件的次序 并发调度差异被误罚

第二步:LCS 对齐。 对归一化后的基线序列与 trial 序列求最长公共子序列(LCS),LCS 即两者的"公共骨架",代表被正确执行的部分。

第三步:偏差分类扣分。 没进入 LCS 的 span 分成四类:不一致 / 多余 / 缺少 / 顺序错,各扣 2 分,本维度上限 -10。"缺少"里最严重的子类是"缺少关键校验步骤"——在综合判定中它不应只扣 2 分,而应触发硬门禁(见 2.8 与 lab06)。

第四步:效率对比。 过程质量不只看"走对没有",还看"走贵没有":耗时以 300 秒为基准,每超 10% 扣 1 分;token 以基线为基准每超 10% 扣 1 分,上限 -10。这与腾讯五维指标中"效率与成本"一脉相承——"pass@1 高但 token 花 10 倍的方案生产上不可接受"。

用一个最小例子走一遍对齐(lab06 中的场景):

基线 SOP:[verify_identity, get_order_status, apply_refund, notify_user]

Trial A:[verify_identity, apply_refund, get_order_status, notify_user]
  LCS 公共骨架(长度 3):[verify_identity, get_order_status, notify_user]
  偏差分类:apply_refund 与 get_order_status 顺序错(-2)
  ——违反「先查状态、再办退款」的 SOP,但两步都在 → 扣分即可

Trial B:[verify_identity, apply_refund, notify_user]
  LCS 公共骨架(长度 3):[verify_identity, apply_refund, notify_user]
  偏差分类:get_order_status 缺少
  ——缺少的是关键校验工具 → 不走扣分,直接触发硬门禁判失败(假阳性)

对应的判定骨架(示意):

def trajectory_score(trial_spans, baseline_spans):
    t = [normalize(s) for s in trial_spans]     # 五规则归一化
    b = [normalize(s) for s in baseline_spans]
    lcs = longest_common_subsequence(b, t)      # 公共骨架
    for span in classify_unmatched(b, t, lcs):  # 缺少/多余/不一致/顺序错
        if span.kind == "missing" and span.critical:
            return HARD_GATE_FAIL               # 关键校验缺失:一票否决
        deduct(2, cap=-10)
    deduct_efficiency(duration_vs=300, token_vs=baseline, per_10pct=1, cap=-10)
    return max(0, 100 + total_deductions)       # ≥80 达标(腾讯口径)

配套的基线快照机制(腾讯):用例设计只定义 prompt 与检查规则 → 执行 1 次 → 人工审核过程与结果 → 不可接受则修后重跑 → 可接受则该次快照成为基线(含 CoT、工具调用序列、中间产物、完整 trace、最终响应)。基线更新时机只有三个:Agent/Skill 逻辑变更、模型版本升级、用例本身修改。TPerf 实战规模:9 大场景分组 30+ 用例(CPU 瓶颈 6 / 网卡 5 / 磁盘 4 / 磁盘 IO 2 / 内存 1 / TCP 队列 3 / Nginx 1 / 配置问题 1 / 正常场景 5),支持 7 模型参数化对比,单用例约 3000 秒,全量 30+ × 7 模型约 3–5 小时;基线配置随代码仓库 Git 版本化,执行结果每次重新生成归档,且支持"重新评分"(评分逻辑调整后无需重跑 Agent)。

动手验证:lab06 实现了归一化 + LCS 对齐 + 四类扣分的完整可运行版本,并断言"假阳性样本 outcome 分高但 trajectory 分低 → 综合判定失败"。运行:cd evals-special/labs && python3 eval_lab06_trajectory_eval.py。

2.6 评测镜像运行时架构:多智能体系统怎么切评估责任(DoorDash)

当被测系统本身是多智能体架构,评估体系应该与运行时架构同形,否则失败无法归因到 owner。DoorDash Ask DoorDash 的运行时:用户消息 → Orchestrator(路由层)→ 分发到领域 Agent(如 Restaurant Discovery Agent、Grocery Shopping Agent)→ 领域 Agent 直接处理或交还 Orchestrator。评测按同一结构切分:

运行时组件 评测对象 评估什么 rubric 归属
Orchestrator 路由层 路由决策 消息是否被分发给正确的领域 Agent;该转不转 / 转错人 路由专项评测
贯穿全流程 护栏(Guardrail) 全体 Agent 共同遵守的标准,如"回复简洁、不向用户叙述思维过程""不呈现可证伪虚假信息" Guardrail 类 rubric(全 Agent 通用)
领域 Agent 任务能力 该领域的能力标准,如餐厅发现的"约束满足(配送时间/预算/饮食限制)""结果多样性(真实差异而非近似重复)";杂货购物的"购物执行(用户明确修改请求被执行)""商品相关性" Capability 类 rubric(按领域)

这个同形设计回答了多智能体评估最容易扯皮的问题:"端到端分数掉了,是谁的锅?"——路由错误记 Orchestrator,领域任务失败记领域 Agent,护栏违规则跨 Agent 追。DoorDash 的 rubric 工程还有两个与轨迹评估直接相关的细节(rubric 工程本身详见第 E05 章):

  • 每条标准是 binary check,汇总为会话级总分——二值判定比连续打分稳定,轨迹级证据交给 judge 时尤其如此;
  • checklist 式场景 rubric:把标准下沉到场景级清单,例如"两人份 ≤$60 素食 taco 购物清单"场景,清单逐项验证"每件商品都是素食 taco 原料、小计 ≤$60"。这类具体清单比宽泛通用标准方差更低,小样本也能给出可用信号,支撑更快迭代。

另一个连接点:Eligibility 适用性前置——judge 先判该标准是否适用本会话,不适用则跳过(例如食谱流程不因缺少复购步骤被扣分)。这防止"用 A 场景的轨迹标准去罚 B 场景的合法路径",是轨迹评估中路径多样性问题的 rubric 侧解法。

这套"trace 基础设施 + 证据切片 + 镜像架构"的组合拳带来的业务结果(DoorDash 原文数字):从平均每天仅 1 条员工反馈,到每天 2,000 个自动评分会话;全国上线前 agent 质量分 +8 分、错误率近乎减半;全量回归从手工 6+ 小时压缩到约 20 分钟——过程级评估不是成本中心,而是让发布敢踩油门的依据。

2.7 前沿一:过程奖励模型(PRM)与信用分配

评估视角的"给步骤打分",在训练视角叫过程奖励 / 信用分配(credit assignment)——同一套信号,评测用它归因,RL 用它训练。2023–2026 这条线的演进值得每个做 Agent 评估的工程师了解,因为 PRM 正在成为轨迹评估的候选评分器。

PRM vs ORM 的形式化:ORM(outcome reward model)对完整解给一个分数;PRM(process reward model)对每个步骤给分数,整解分数通常取各步对数似然加和 score(y) = Σ_i log r_i。同一套步骤分数有四个用途,评测工程师至少会碰到前三个:

用途 形态 例子
推理时选择 best-of-N 重排序(选 argmax score) PRM800K:best-of-1250 把 MATH 从 52.9% 抬到 78.2%
推理时搜索 束搜索 / 树搜索的节点估值 MCTS + PRM(rStar-Math)
训练时奖励 RL 的稠密奖励,缓解终局奖励稀疏 Math-Shepherd 逐步 PPO、StepAgent、SPA-RL
纯评测 分数报告与失败诊断 步骤分数定位"模型卡在哪一步"

标注成本的三次下降(这是 PRM 工程化的主线):

阶段 论文 方法 关键数字
人工标注 Let's Verify Step by Step(PRM800K,arXiv 2305.20050,2023) 80 万条人工步骤标注(correct/incorrect/neutral 三标签)训练 PRM GPT-4 直接解 MATH 52.9%;PRM best-of-1250 达 78.2%(ORM 约 72%);步骤级标签达到同等性能所需样本量约低 100 倍
蒙特卡洛自动标注 Math-Shepherd(arXiv 2312.08935,2023) 对某步之后的续写做多次 rollout,"该步之后能走到正确答案的比例"作为软标签 Mistral-7B GSM8K 77.9%→84.1%(逐步 RL),加验证 89.1%;MATH 28.6%→33.0%,加验证 43.5%
二分搜索 OmegaPRM(arXiv 2406.06592,2024) 二分定位第一个错误步骤,单条轨迹标注成本 O(n)→O(log n) 无人工干预 MATH rollout 正确率相对 SFT 基线 +24%;标注成本较朴素蒙特卡洛降约 100 倍

OmegaPRM 对评测平台的启示超出标注本身:给轨迹打分不必逐步全量打分,先粗粒度二分定位可疑区间再细查——这与调试长轨迹时"先看中间步骤对不对"的人工策略同构。

两个不需要步骤标签的路线:

  • PRIME(arXiv 2412.01981,2024):token 级价值头 + 隐式奖励,从结果奖励反推每 token 的过程价值,完全不需要步骤标注;对评测的启示是"只有终局真值(如单元测试通过与否)时,仍可通过价值估计获得步骤级归因"。
  • VinePPO(arXiv 2410.01679,2024):在轨迹中间状态重采样 K 条续写,用续写实际回报构造无偏的步骤优势估计。工程含义值得单独记住:"从某步出发的成功率"本身就是该步质量的无偏评估——不训练任何模型也能回答"这一步到底值多少分",可直接用作离线轨迹归因工具(数学基准上相对 GRPO/PPO 最高约 +4 个百分点)。

生成式验证器:GenRM(Generative Verifiers,arXiv 2408.15240,2024)把验证做成生成任务——先生成对每一步的自然语言批注(critique),再输出 verdict。它桥接了 PRM 与 LLM-as-a-Judge 两个世界:批注式验证提供可解释的打分依据,天然接入 judge 工程栈,是当前步骤级 rubric 评估最常用的打分形式(详见第 E05 章)。

PRM 的失败学(必读):阿里 Qwen 团队的《The Lessons of Developing Process Reward Models in Mathematical Reasoning》(arXiv 2501.07301,2025)系统披露四个结论:① 步骤级标签确实比轨迹级标签更高效;② PRM 的分数可以被 hack——best-of-N 选择中模型会生成恰好骗过 PRM 的解(PRM800K 尤其明显);③ PRM 在难度外推与分布漂移下性能显著退化;④ PRM 与 ORM 组合使用效果更好。对应工程清单:任何验证器上线前做对抗性审计(hacking 红队)、按难度分层校准、报告中区分 in-distribution 与 OOD 的可信度。rStar-Math(arXiv 2501.04519,2025)进一步指出验证器必须"跟着被测系统一起进化":它让 PRM 与策略通过 MCTS 共同自进化(Qwen2.5-Math-7B 在 AIME24 达 53.3%,超过 o1-preview 约 8.7 个百分点;MATH 从基线 58.8% 提升到约 90%——注意 58.8% 是 rStar-Math 之前的基线分,不是最终成绩)。评测工程上的对应物:被测 Agent 升级后,旧验证器的分数不可直接比较,需要重新校准或共同迭代。

综合 Qwen Lessons 与 rStar-Math,把 PRM 当评测器/选择器使用时的工程清单:

  1. 标注:优先蒙特卡洛或二分自动标注(成本可控),人工标注只用于校准集;
  2. 分布:验证器训练分布要覆盖目标难度,OOD 场景分层报告准确率;
  3. 红队:上线前做 reward hacking 对抗审计——专门生成"骗验证器"的样本看它上不上当;
  4. 组合:PRM 与 ORM 组合使用效果更好(Qwen Lessons 结论四);
  5. 共迭代:被测策略升级后重训/重校准验证器,记录两者的配对兼容性。

信用分配分类学(依据 2026 年综述《From Reasoning to Agentic》,arXiv 2604.09459)可作为面试答题框架:按粒度(token 级 / 步骤级 / 片段级 / 轨迹级)、按信号来源(人工标注 / 模型标注 / 自动估计如 MC rollout 与重采样 / 规则式如单元测试与状态 diff)、按用途(训练时奖励 / 推理时选择 / 纯评测报告)。

2.8 前沿二:Agent 轨迹的专属评估方法与元评估

PRM 线源自数学推理;Agent 轨迹评估有自己的四个代表工作,各自贡献了一个可迁移的工程范式:

(1)AgentBoard(arXiv 2401.13178,2024)——progress rate,让失败可诊断。 为每个任务定义子目标集合,用归一化加权距离衡量轨迹"走了多远",把 0/1 成功率拆成连续的进展曲线。数据点:即便最强模型总体成功率也仅约 40% 出头;progress rate 与 success rate 的结合揭示了不同模型在规划、探索、利用子能力上的分化。工程迁移:为核心任务定义子目标/检查点,报告 progress rate 而不只是成功率——它直接决定你能不能回答"模型卡在哪一步"。

(2)τ-bench(arXiv 2406.12045,2024)——执行式验证 + pass^k。 评估不靠看对话文本,而是比对对话结束时数据库状态与目标状态是否一致——纯执行式(execution-based)验证,抗"看起来对"的文本欺骗。关键数字:GPT-4o 级模型成功率 <50%,零售域 pass^8 <25%(pass^k 的统计细节见第 E02 章 · 评估指标体系与第 E09 章 · 评估的统计学基础)。它定义的黄金标准组合是:状态比对(而非文本判断)+ 多次重复(可靠性)+ 规则合规性检查。同属执行式验证的还有 Terminal-Bench(arXiv 2601.11868,2026):80 个高难度 CLI 长程任务,每个配 pytest 风格功能测试 + oracle 参考解,最强模型 + agent 组合成功率约 35%。执行式验证的共同模式:可执行的真值判定程序 + 沙箱;优点客观可复现,代价是每个任务都要写判定程序。

(3)Agent-as-a-Judge(arXiv 2410.10934,2024)——评估者要有"手脚"。 与 LLM-as-a-Judge 的本质区别:评估者是会执行工具的 Agent——拿到被测 Agent 的完整代码库/产物后,可以运行代码、做静态分析、逐步对照分层需求打分。配套 DevAI 基准:55 个真实自动化 AI 开发任务、365 条分层用户需求。关键数字(论文摘要口径):与人工评估同等可靠,相比三位人类专家评估节省 97.72% 的时间、97.64% 的成本,且评估质量显著优于纯文本判读的 LLM-as-Judge。它是当前对"开放式产物(代码库、报告)"做过程级评估的主流范式;97% 优势的前提是 rubric 质量与 Judge 的工具权限,且为场景特定报告值、不宜外推为普适结论,引用时应一并说明。

(4)AgentRewardBench(arXiv 2504.08942,2025)——评估器本身必须被评估。 这是本方向最重要的"元评估"工作:收集 197 条 Web Agent 轨迹(含成功与人工确认的失败案例),系统测试各类自动评估器识别"轨迹真正成功"的能力。核心发现令人清醒:多数评估器的 false positive 率极高——多个常用评估器在失败轨迹上的误报率超过 50%,纯 LLM 判别尤其不可靠;结合代码/执行检查与分步核对的方案明显更好。落地要求:任何轨迹评估器(尤其 LLM judge)上线前,先在已知成败的轨迹集上测 FPR/FNR;优先选择有执行式依据的评估器;把评估器准确率作为评测基础设施的一级指标。

把四者串起来,得到轨迹评估器的选型优先级(与第 E04 章"确定性优先"一脉相承):

规则/执行式验证(终态 diff、单测、schema、must-call 断言)
        ↓ 覆盖不到的语义判断
Agent-as-a-Judge / 带证据切片的 LLM judge(须过元评估:已知成败集测 FPR/FNR)
        ↓ 高风险 / 低置信 / 评估器分歧
人工抽检(校准 judge、审"结果对但轨迹可疑"样本,见第 E06 章)

trace 级自动诊断的现状:TRAIL(arXiv 2505.08638,2025)提出覆盖子代理/工具调用/任务推理等维度的 27 类错误分类学,发布 148 条人工标注 agent trace;即便最强模型,"给定完整 trace 定位根因"的准确率也仅约 40–60%。AgentDebug(arXiv 2509.25370,2025)把失败归因到 6 个模块(工具使用、上下文/记忆管理、规划、验证等)并做"诊断→修复→复跑"闭环,失败恢复率提升约 10% 量级。SentinelAgent(arXiv 2505.24201,2025)则把视角从"事后诊断"推向"运行时监控":将 agent 间交互建模为图结构,由专职监督 agent 结合图拓扑与运行时指标做异常检测与归因——离线评测保证出厂质量,运行时异常检测保证存量质量,二者互补(在线侧详见第 E12 章)。结论:trace 质量与 span 粒度决定自动诊断上限;LLM 诊断结果应作为"待人工确认的假设"呈现,而非自动修复。

综合判定:加权平均 vs 硬门禁。 三层分数如何汇总成一个判定?lab06 给出的答案是"加权 + 一票否决"双轨:常规偏差(顺序错、多余步骤、效率超标)用扣分制(腾讯 80 分达标线);但禁用动作命中、关键校验缺失、最终目标未达成这三类失败不允许被其他层的高分"平均"掉——跳过身份校验不能靠"语气好"补回来。门禁的数量要克制,否则误杀率上升,评估体系会退回"没人信"的状态(门禁设计的完整讨论见第 E10 章 · 评测驱动开发)。

本节收束:轨迹评估落地清单(把 2.3–2.8 压缩成八条可执行动作):

  1. 结构化轨迹日志先行——没有满足三要求的 trace,后面全部免谈;
  2. 评估器分层——规则/执行式验证为主,Agent/LLM judge 为辅,人工抽检校准;
  3. 评估器先过元评估——在已知成败的轨迹集上测 FPR/FNR,再谈上线;
  4. judge 只拿证据切片——Transcript Builder 塑形,每条标准声明依赖证据;
  5. 轨迹比对禁 exact match——归一化 + LCS / 无序集合 / 偏序约束三选一;
  6. 长程任务报 progress rate——子目标分解让失败可诊断,而不只是 0/1;
  7. 可靠性多次试验——pass@1 + pass^k(k≥4),固定温度与用户模拟协议;
  8. 把评估器当资产管理——版本化、定期元评估、记录验证器与被测模型的配对兼容性。

三、面试高频考点

# 考点 分级 一句话考察意图
1 outcome-only 评估的盲区与"假阳性" ⭐⭐⭐ 能不能举出"结果对但路径错"的具体案例并说清四盲区(假阳性/诊断盲区/捷径/碰运气)
2 三层评估模型 step/trajectory/session 分工 ⭐⭐⭐ 每层评什么、用什么判、失败指向什么根因,层间为何不可替代
3 Trace 是被测 Agent 的标准能力(三要求) ⭐⭐⭐ 可解析/内容完整/跨版本稳定;被测系统没有 trace 时的三档对策
4 Transcript Builder 与证据切片 ⭐⭐⭐ 为什么要给 judge"塑形视图";每条标准声明依赖证据的工程含义
5 轨迹比对为什么禁 exact match + LCS/归一化 ⭐⭐ 路径多样性;归一化五规则与四类偏差扣分;归一化过度的风险
6 执行式验证(终态 diff / 测试套件) ⭐⭐ τ-bench 数据库状态比对与 pass^k;抗文本欺骗的原理与代价
7 Agent-as-a-Judge vs LLM-as-a-Judge ⭐⭐ 差在"评估者有没有手脚";DevAI 时间 -97.72%/成本 -97.64% 的前提条件
8 PRM vs ORM 与自动标注路线 ⭐⭐ 步骤级监督为什么样本效率高 100 倍;MC rollout 与二分标注的成本逻辑
9 PRM 的 hack 性与分布漂移 ⭐⭐⭐ Qwen Lessons 四结论;验证器红队、OOD 分层、随被测系统共同迭代
10 progress rate / 子目标分解 ⭐⭐ 把 0/1 成功率拆成进展曲线,回答"模型卡在哪"
11 评测镜像运行时架构(多 Agent) ⭐⭐ 路由/护栏/领域能力各在哪层评;端到端掉分如何归因到 owner
12 评估器的元评估(AgentRewardBench) ⭐⭐⭐ 纯阅读式轨迹 judge 误报率 >50%;上线前用已知成败集测 FPR/FNR
13 信用分配方法谱系 ⭐ 粒度×信号来源×用途三维分类;VinePPO 重采样可当离线归因工具
14 trace 级自动诊断现状 ⭐ TRAIL 27 类错误、定位准确率仅 40–60%,人工兜底不可省

四、经典面试题与参考答案

题 1(基础):为什么评估 Agent 不能只看最终答案?请举一个具体例子。

参考答案: 四个盲区:① 假阳性——结果对但路径错/带风险,如退款 Agent 跳过订单状态查询直接承诺退款成功,这次恰好可退所以"答对了",但风险敞口一直在,阿里明确这类假阳性"在生产迟早暴露";② 诊断盲区——20 步轨迹失败,错误可能在第 3 步,终局只有一个 0/1 标量,无法定位;③ 捷径与欺骗——最终状态"看起来对"可能来自绕过规则或 reward hacking;④ 碰运气——"训练数据碰巧答对"与"正确调用工具后回答"在最终文本上无法区分,通过率不可复现。此外还有双向背离:过程全对也可能因环境抖动而终局失败,所以工业界用"终态正确 + 规则合规"双门槛,而不是单看任一侧。

题 2(基础):说说轨迹评估的三层模型,每层评什么、怎么评、失败说明什么?

参考答案: Airbnb 三层:step-level 评单工具调用/推理步——参数 JSON Schema 校验、must-call/must-not-call 断言、禁用动作检查,失败指向单工具实现或参数生成问题;trajectory-level 评整条路径是否合理高效——与基线做 LCS 对齐、无序关键调用集合比对、步数/token 预算检查,失败指向规划与编排问题(绕路、重复、跳步、顺序颠倒);session-level 评整体是否达成用户目标——终态比对、目标 checklist,失败指向目标理解问题。三层独立失败、不可替代:session 分高掩盖不了 trajectory 违规(假阳性),trajectory 完美救不了 session 失败。阿里对话 Agent 版本是四层:Turn/Session/Trace/Outcome,特别警告"不要只平均每轮分数"——每轮都答得还行但最终没解决问题仍是失败。

题 3(基础→进阶):什么是结构化 Trace 的三个要求?接手的被测 Agent 没有 Trace 输出怎么办?

参考答案: 三要求(腾讯):① 可解析——JSONL/JSON 结构化格式而非自由文本;② 内容完整——每步工具名/入参/返回/时间戳/耗时/错误,理想含思维链与决策依据;DoorDash 的 span 记录用户输入、模型输出、工具调用与返回、展示给用户的 widgets;③ 跨版本格式稳定——schema 不随版本漂移,否则历史分数不可比。没有 trace 时三档对策:有日志无结构 → 写解析器(成本高易碎,下策);只有最终输出 → 只能做结果评测(中策);可改造 → 推动被测系统增加 trace 输出(推荐)。立场要鲜明:trace 是被测 Agent 的标准能力而非事后补救(阿里/腾讯共识)。标准化方向是 OTel GenAI semconv(gen_ai.* 属性),截至 2026 年仍处 Development 状态,agentic 层级 2025-08 才有提案,应"先按标准打点 + 保留私有字段兼容层"。

题 4(进阶):DoorDash 的 Transcript Builder 解决什么问题?如果让你设计,怎么做?

参考答案: 问题:原始 trace 完整但难判——工具返回可能巨大(超出/淹没 judge 上下文)、schema 脚手架与无信号字段多、证据散落多个 span/turn。设计分两步:第一步是三个清洗动作——重组分散的 span、删无质量信号的 token、裁剪超大载荷,产出紧凑视图(DoorDash 用一组 Python 脚本实现,原始 trace 仍存 ClickHouse 供人审与 RCA);第二步是证据切片——每条 rubric 标准声明自己依赖的证据,builder 只把那一片交给 judge:grounding 检查拿 agent 论断 + 背后工具输出,多样性检查拿推荐列表 + 原始请求,叙述检查拿流式输出文本。收益:聚焦证据让 judge 判断更一致、上下文成本更低。注意点:裁剪规则要版本化(裁过头是 harness 自身 bug,DoorDash 承认被标记失败中有真实一部分来自评测系统自己);证据声明与 rubric 是同一契约,要一起 review。

题 5(进阶):两条工具调用轨迹怎么做比对?为什么不能 exact match?归一化的作用和风险是什么?

参考答案: 不能 exact match,因为同一任务有多条合法路径,全等比对会把合法变通判错,评估集退化成背答案。腾讯 TPerf 的 LCS 方案四步:① 归一化——时间戳占位、搜索类工具忽略查询参数、写入只留路径、终端命令提取脚本名、连续读文件组内不校验顺序;② 求 LCS 公共骨架;③ 非 LCS 部分分类为不一致/多余/缺少/顺序错,各扣 2 分、上限 -10;④ 效率对比——耗时以 300 秒为基准每超 10% 扣 1,token 以基线为基准每超 10% 扣 1、上限 -10。归一化的作用是抹掉"不影响对错的差异",否则同一行为每次运行都被判不一致;风险是归一化过度——若把金额、订单号这类关键参数也忽略掉,参数错误会被静默放过,等于把假阳性重新放进来。路径自由度更高的任务可退到无序关键调用集合或偏序约束(只断言"先鉴权后操作"这类依赖)。基线来自"执行 1 次 + 人工确认"的快照机制,只在逻辑变更/模型升级/用例修改时更新。

题 6(进阶):PRM 和 ORM 有什么区别?没有步骤级标注数据时,还有哪些办法拿到步骤级信号?

参考答案: ORM 对完整解打一个分,PRM 对每个步骤打分、整解分数通常取各步对数似然加和。PRM800K(arXiv 2305.20050,2023)证明步骤级标签信息密度约高 100 倍(GPT-4 直接解 MATH 52.9%,PRM best-of-1250 达 78.2%)。没有步骤标注时有四条路线:① 蒙特卡洛标注(Math-Shepherd,arXiv 2312.08935)——从某步多次 rollout,"走到正确答案的比例"作软标签;② 二分搜索(OmegaPRM,arXiv 2406.06592)——二分定位第一个错误步骤,标注成本 O(n)→O(log n),降约 100 倍;③ 隐式奖励(PRIME,arXiv 2412.01981)——token 级价值头从结果奖励反推过程价值,只有单元测试真值也能用;④ 中间状态重采样(VinePPO,arXiv 2410.01679)——从某步重采样 K 条续写看成功率,不训练模型即可做离线步骤归因。必须补一句失败学(Qwen Lessons,arXiv 2501.07301):PRM 分数可被 hack、难度外推下退化,直接当评测器要先做红队与 OOD 分层校准。

题 7(进阶):Agent-as-a-Judge 和 LLM-as-a-Judge 的本质区别是什么?它能直接信任吗?

参考答案: 本质区别:评估者是否有环境交互能力。LLM-as-a-Judge 是"阅读式"——读 transcript 打分;Agent-as-a-Judge(arXiv 2410.10934,2024)让 Judge Agent 带工具核验——运行代码、静态分析、逐条对照分层需求,能核验而非仅阅读。在 DevAI 基准(55 个真实 AI 开发任务、365 条分层用户需求)上,它与人工评估同等可靠,相比三位人类专家节省 97.72% 时间、97.64% 成本(场景特定值),评估质量显著优于纯文本判读。但不能直接信任,两个理由:① AgentRewardBench(arXiv 2504.08942,2025)用 197 条 Web Agent 轨迹测出多数自动评估器在失败轨迹上的误报率超过 50%,结合执行检查与分步核对的方案才明显更好——所以任何轨迹评估器上线前先在已知成败的轨迹集上测 FPR/FNR;② 97% 的时间/成本优势有前提——rubric 质量与 Judge 的工具权限,开放式产物评估尤其依赖分层 rubric 写得好不好。

题 8(进阶):什么是"评估器的元评估"?你的轨迹评估方案上线前要做哪些验证?

参考答案: 元评估 = 评估"评估器本身"。动机是 AgentRewardBench 的实证:自动轨迹评估器把明显失败的轨迹判为成功的比例普遍超过 50%,且评估器之间差异巨大——不测元指标就上线,等于把质量门禁交给一个未知的分类器。上线前验证清单:① 构造已知成败的轨迹集(成功 + 人工确认的失败,含"结果对但过程错"的假阳性样本),测评估器的 FPR/FNR——假阳性识别能力是轨迹评估器的核心能力;② 与人工标注对齐,一致率达到团队口径(Airbnb high 80s~90s,阿里/腾讯约 85%)后才进自动化(详见第 E05 章校准流程);③ 偏差检查(位置/冗长/同源偏好,见第 E05 章);④ 稳定性检查(同轨迹重复评分方差);⑤ 持续运营——judge 模型/prompt/rubric 任一变更触发重校准,记录评估器与被测模型的配对兼容性(被测 Agent 升级后旧评估器分数不可比,rStar-Math 的教训)。

题 9(系统设计):为一个多领域对话 Agent(客服 + 购物助手,Orchestrator 路由到各领域 Agent)设计完整的轨迹与 Agent 级评估体系。

参考答案: 分六层回答。 ① Trace 先行:被测系统按 OTel 打点,span 记录用户输入/模型输出/工具调用与返回/widgets(DoorDash 口径),层级 session→agent/task→llm_call→tool_call;满足可解析、内容完整、跨版本格式稳定三要求;trace 存 ClickHouse 类列式存储。 ② 评测镜像运行时架构(DoorDash):Orchestrator 评路由准确率(该转不转/转错人);护栏 rubric 贯穿全流程评(不泄露内部过程、不呈现可证伪虚假信息,全体 Agent 通用);每个领域 Agent 评任务能力(客服评工单闭环与政策合规,购物评约束满足与多样性),失败可归因到 owner。 ③ 三层评分:step 层用程序化断言(参数 schema、must-call/must-not-call、禁用动作);trajectory 层用归一化 + LCS 对齐关键 SOP(缺少关键校验触发硬门禁,其余按腾讯口径各扣 2、上限 -10)+ 效率预算(步数/token/耗时);session 层用执行式验证——终态数据库 diff(τ-bench 范式)+ 目标 checklist,不靠判文本。 ④ Judge 层:语义类标准(groundedness、叙述质量)用 LLM judge,前置 Transcript Builder:每条标准声明证据依赖,judge 只拿切片;judge 校准到 ≥85% 一致率,rubric 写成 binary check + eligibility 前置。 ⑤ 元评估与门禁:所有自动评估器先在已知成败轨迹集测 FPR/FNR;综合判定 = 加权扣分 + 一票否决(禁用动作/关键校验缺失/目标未达成);多 trial 报 pass@1 与 pass^k(无人值守口径看 pass^k)。 ⑥ 闭环:线上 trace 抽样回流(每日去标识化 5% 流量,Airbnb 口径),"结果对但轨迹可疑"样本人工抽检后入回归集;被测 Agent 升级时评估器同步重校准。仿真侧(模拟器 + fixtures 生成轨迹)见第 E08 章,失败归因流水线见第 E11 章。

题 10(进阶):一条 20 步的轨迹最终失败了,你有哪些办法定位"是哪一步坏的"?

参考答案: 四条路线,成本与保真度各不同。① 中间状态重采样(VinePPO,arXiv 2410.01679 的思路):从可疑步骤出发重采样 K 条续写,续写的成功率就是该步质量的无偏估计——不训练模型即可用于离线归因;② 先粗后细二分定位(OmegaPRM 的工程启示):不必逐步全量打分,先验证轨迹中点状态是否还在正确路径上,再对可疑半区递归二分,O(log n) 成本锁定可疑区间;③ 成功/失败轨迹 diff:同一任务的成功 trial 与失败 trial 做序列对齐,找第一个分叉点(工具参数不同?检索结果不同?规划选择不同?)——前提是 trace schema 跨版本稳定、试验条件可复现;④ 评估器辅助归因:让带工具的 judge(Agent-as-a-Judge 形态)逐步核验并给出批注,适合无法重放的环境,但要先过元评估。所有路线的共同前提是完整结构化 trace(2.3 节)与可重放环境;定位结论应落成结构化归因字段,喂给 RCA 的范围收敛(第 E11 章),而不是停在口头结论。


五、易错点 · 反直觉点

  1. 轨迹 exact match:把"调用顺序不同但正确"的解判错,评估集退化成背答案,还扼杀了更优路径的发现。→ 真相:用 LCS 对齐 / 无序关键调用集合 / 偏序约束,只锁关键依赖,保留路径自由度。→ 记忆锚点:锁关键步骤,不锁全路径。

  2. 把"结果对"当"行为对":最终文本会抹平一切中间失败,假阳性样本在离线评测里以"通过"存在。→ 真相:结果对但路径错的样本比结果错更危险——偶发正确不可复现、风险敞口持续存在、失败还无法归因;必须"终态正确 + 规则合规"双门槛。→ 记忆锚点:结果判 pass,轨迹判安全。

  3. 把原始 trace 整个喂给 judge:上下文被工具返回与脚手架噪声淹没,判断方差大、成本高。→ 真相:DoorDash 的教训是 judge 需要"为问题塑形"的视图——每条标准声明证据依赖,只给那一片。→ 记忆锚点:judge 只看它需要的那页。

  4. 归一化过度:时间戳、查询参数该抹,但把金额、订单号也抹掉,参数错误就被静默放过。→ 真相:归一化只抹"不影响对错的差异";抹错一个关键字段 = 亲手造一个假阳性。→ 记忆锚点:归一化抹噪声,不抹证据。

  5. 加权平均一切:用"总分 = 各层加权"做判定,跳过关键校验可以用语气分补回来。→ 真相:禁用动作命中、关键校验缺失、目标未达成必须一票否决(硬门禁),扣分制解决不了安全问题。→ 记忆锚点:安全问题不进平均分。

  6. 拿 PRM 直接当评测器,不做红队:Qwen Lessons(arXiv 2501.07301)证明 PRM 分数可被 hack——best-of-N 会选出恰好骗过 PRM 的解,难度外推时打分系统性失准。→ 真相:验证器上线前做 hacking 红队 + 难度分层校准,报告区分 in-dist 与 OOD 可信度。→ 记忆锚点:验证器也怕被刷分。

  7. 纯阅读式 LLM judge 直接评轨迹:AgentRewardBench 实测多数自动评估器在失败轨迹上误报率 >50%,"读起来像成功"与"真的成功"是两回事。→ 真相:优先执行式依据(终态 diff、测试、断言),judge 只做补充,且先在已知成败集上测 FPR/FNR。→ 记忆锚点:先验评估器,再让它评。

  8. Trace 事后补:上线后才想起加日志,靠脆弱解析器从自由文本里抠结构化信息。→ 真相:trace 是被测 Agent 的标准能力(阿里/腾讯共识);三要求(可解析/内容完整/跨版本稳定)在设计阶段定,事后补的成本是重造一遍。→ 记忆锚点:没有 trace,就没有过程评估。

  9. 被测 Agent 升级后直接对比旧评估器分数:验证器在旧策略分布上训练/校准,评估新策略时系统性失准。→ 真相:rStar-Math 的结论是验证器必须与被测系统共同进化;策略升级 → 评估器重校准,否则分数差异归因不了。→ 记忆锚点:尺子也要跟着版本走。

  10. 只平均每轮分数评对话 Agent:每轮都"答得还行",平均分挺好看,但问题最终没解决。→ 真相:阿里四层评判要求同时看 Turn/Session/Trace/Outcome,session/outcome 层失败一票压过 turn 层均值。→ 记忆锚点:平均分会骗人,闭环才算数。


六、推荐资源

论文(全部来自本特辑 _research/03-trajectory-eval.md 与 _research/10-infra-observability.md,arXiv ID 已核实)

  1. Let's Verify Step by Step(PRM800K)— arXiv 2305.20050(2023):过程监督的奠基,步骤级标签信息密度约高 100 倍。
  2. Math-Shepherd — arXiv 2312.08935(2023):蒙特卡洛完成率自动标注,"步骤质量 = 后续成功率"范式的确立。
  3. OmegaPRM — arXiv 2406.06592(2024):二分搜索把过程标注成本降到 O(log n)。
  4. Generative Verifiers(GenRM)— arXiv 2408.15240(2024):批注式生成验证,PRM 与 LLM-as-a-Judge 两个世界的桥。
  5. VinePPO — arXiv 2410.01679(2024):中间状态重采样的无偏步骤归因,可直接当离线轨迹归因工具。
  6. PRIME — arXiv 2412.01981(2024):无步骤标签的隐式过程奖励。
  7. The Lessons of Developing Process Reward Models(Qwen)— arXiv 2501.07301(2025):PRM 失败学,hack 与 OOD 问题的第一手报告。
  8. rStar-Math — arXiv 2501.04519(2025):验证器与策略共同自进化。
  9. AgentBoard — arXiv 2401.13178(2024):progress rate 与子目标分解。
  10. τ-bench — arXiv 2406.12045(2024):终态数据库 diff + pass^k,tool-agent 评测的黄金标准。
  11. Agent-as-a-Judge — arXiv 2410.10934(2024):带工具核验的过程级评估,DevAI 基准。
  12. AgentRewardBench — arXiv 2504.08942(2025):轨迹评估器的元评估,FPR >50% 的警钟。
  13. Terminal-Bench — arXiv 2601.11868(2026):执行式验证在 CLI 长程任务上的规模化实践。
  14. TRAIL — arXiv 2505.08638(2025):27 类 agent trace 错误分类学与自动定位。
  15. AgentDebug — arXiv 2509.25370(2025):六模块失败归因与"诊断→修复→复跑"闭环。
  16. 延伸阅读:信用分配综述《From Reasoning to Agentic》arXiv 2604.09459(2026);PRM 综述 arXiv 2510.08049(2025);StepAgent arXiv 2411.03817(2024);SPA-RL arXiv 2505.20732(2025);AgentTrace 结构化日志框架 arXiv 2602.10133(2026)。

工程博客(四家工业实践一手来源,数字以 _research/00-industry-practice.md 为准)

  • Airbnb《Eval-driven development: Lessons from evaluating GenAI at scale》——三层 Agentic 评估(step/trajectory/session)与 root trace 树遍历的出处。
  • DoorDash《Building Ask DoorDash (Part 3): Evaluation》(2026-06)——Transcript Builder、评测镜像运行时架构、OTel + ClickHouse 的出处;同系列 Part 1/2 讲架构与 fixtures(与第 E08 章配套阅读)。
  • 阿里技术《Agent 评测:方法论与体系设计》——Turn/Session/Trace/Outcome 四层评判、"trace 是标准能力"立场、假阳性案例的出处。
  • 腾讯技术工程《AI Agent & Skill 测评方案及落地实践》——LCS 对齐、归一化五规则、基线快照、TPerf 实战数字的出处。
  • OpenTelemetry GenAI Semantic Conventions(open-telemetry/semantic-conventions-genai,Development 状态;agentic 提案 2025-08)— https://opentelemetry.io/docs/specs/semconv/gen-ai/

动手实验(labs)

lab 内容 运行命令
eval_lab06_trajectory_eval.py 三层评估 + LCS 对齐 + 假阳性捕获(本章配套实验) cd evals-special/labs && python3 eval_lab06_trajectory_eval.py
eval_lab03_programmatic_scorers.py step 层断言与分层筛查流水线 cd evals-special/labs && python3 eval_lab03_programmatic_scorers.py
eval_lab05_judge_calibration.py 轨迹 judge 的校准闭环(一致率/kappa) cd evals-special/labs && python3 eval_lab05_judge_calibration.py
eval_lab07_simulator_fixtures.py 轨迹从哪来:模拟器 + fixtures 生成可复现轨迹 cd evals-special/labs && python3 eval_lab07_simulator_fixtures.py

相关章节

  • 第 E04 章 · 评分三层之一:程序化评分——step 层断言的完整清单与扣分制细节。
  • 第 E05 章 · LLM-as-Judge 深入——judge 偏差、rubric 工程与校准流程(Transcript Builder 的下游)。
  • 第 E06 章 · 人工评估与评分路由——"结果对但轨迹可疑"样本的人审兜底。
  • 第 E08 章 · 对话 Agent 与仿真评测——Conversation Simulator 与 fixtures 如何批量生产轨迹。
  • 第 E09 章 · 评估的统计学基础——pass^k 的估计与置信区间。
  • 第 E11 章 · Badcase 根因分析与优化闭环——三层分数如何喂给 RCA 的范围收敛。
  • 第 E13 章 · Benchmark 全景与前沿争议——τ-bench/GAIA/Terminal-Bench 等外部基准的全景对照。
  • 主手册第 8 章 · Agent 评估与可观测性——入门浓缩版(本章为其过程评估部分的深挖)。
第 8 章 / 共 15 章

对话 Agent 与仿真评测

📌 本章导航(6 节)

一句话导读:对话 Agent 的质量无法用"一问一答"的静态数据集衡量——用户会追问、改主意、发脾气、等你引导他操作。 本章解决"没有真实用户参与时,如何端到端、可复现、低成本地评测多轮对话 Agent": Conversation Simulator(LLM 扮演用户)+ Fixtures(冻结外部世界)+ checklist 式 rubric + 全量 sweep 的成本工程。 学完你能得到:对话评测五大难点与四层判分框架、DoorDash 会话模拟器与 fixtures 的完整设计细节、 τ-bench/τ²-bench 学术范式与 pass^k 可靠性数字、模拟器保真度的验证方法,以及仿真评测的边界与 offline-online gap 治理。


一、知识图谱

对话 Agent 与仿真评测
├─ 难点:对话评测为什么特殊(2.1)
│   ├─ 五大难点:上下文累积 / 目标切换 / 情绪回应 / 人工接管 / 多轮引导
│   ├─ 核心判据:"每轮都答得还行,但没解决问题仍是失败"(阿里)
│   └─ 四层判分:Turn(单轮)/ Session(整段会话)/ Trace(执行轨迹)/ Outcome(最终结果)
├─ 演员:Conversation Simulator(2.2)
│   ├─ scenario = 开场请求 + 用户目标 + 反应策略(DoorDash)
│   ├─ persona 来源:真实工单抽取 / 隐式画像挖掘(arxiv 2502.18968)/ 真实日志语料
│   ├─ 行为真实性:动态判断 解决? 有进展? 缺信息? 绕圈?;升级像真人(逐步升级而非秒转人工)
│   └─ 非合作模拟:会不耐烦、跑题、改主意(ChatChecker, arxiv 2507.16792)
├─ 舞台:Fixtures 冻结外部状态(2.3)
│   ├─ 录制工具返回替代实时调用:菜单/库存/测试账号不再漂移
│   ├─ reorder_history_v1 实例(DoorDash 复购场景)
│   ├─ 附带收益:可构造欺诈、大额退款等真实里难遇的难例
│   └─ 教训:"环境必须受控,否则分数测量的是噪声"(DoorDash)
├─ 范式:从 τ-bench 到工业流水线(2.4)
│   ├─ τ-bench(arxiv 2406.12045):模拟器 + 工具 + DB 终态哈希 + pass^k
│   ├─ τ²-bench(arxiv 2506.07982):双控——用户侧也能动手,引导比代办难
│   └─ DoorDash:同一 rubric + 同一 judge 贯穿离线线上;GEPA 校准裁判
├─ 判据:checklist 式场景 rubric(2.5)
│   ├─ 素食 taco ≤$60 案例(DoorDash):低方差信号,小样本也能迭代
│   └─ eligibility 适用性前置:不适用的标准跳过而非扣分
├─ 成本:全量 sweep 的工程账(2.6)
│   ├─ 50 场景 × 8 trials = 400 对话;人工 6h+ → 模拟器约 20min
│   └─ 成果:2,000 会话/天自动评分、上线前质量分 +8、错误率近乎减半
└─ 边界:仿真 ≠ 真实(2.7)
    ├─ 模拟器自身要被评测:目标一致性、幻觉、同源偏差(DAUS, arxiv 2402.13374)
    ├─ offline-online gap:强离线成绩只是部署可靠性的弱指标(arxiv 2510.22143)
    └─ 治理:保真度抽检 + 同一 rubric 同一 judge + shadow/canary 第二道闸
你的问题 本章落点
对话评测和单轮评测差在哪 2.1
为什么不能把每轮分数平均一下 2.1(四层判分)
模拟用户怎么搭、scenario 怎么写 2.2
外部 API 数据天天变,评测怎么可复现 2.3(fixtures)
欺诈、大额退款这种罕见场景怎么测 2.3(fixtures 构造难例)
τ-bench / pass^k 是什么、数字多少 2.4
rubric 怎么写才稳定 2.5(checklist + eligibility)
全量回归要多少钱多少时间 2.6
模拟出来的结论能信吗 2.7(保真度与 offline-online gap)
judge 怎么校准 交叉第 E5 章 · LLM-as-Judge 深入
轨迹与终态怎么评 交叉第 E7 章 · 轨迹与 Agent 级评估
多次 trial 的统计学口径 交叉第 E9 章 · 评估的统计学基础
仿真在 EDD 闭环中的位置 交叉第 E10 章 · 评测驱动开发(EDD)
线上验证与回流 交叉第 E12 章 · 在线评估与数据飞轮

二、核心概念精讲

2.1 对话评测的五个特殊难点:为什么不能"每轮打分取平均"

单轮问答评测的范式是"输入 → 输出 → 对照参考答案"。对话 Agent 把这个范式打碎了—— 阿里技术在《Agent 评测:方法论与体系设计》中把对话 Agent 的特殊难点归纳为五类, 并给出一条总纲式判据:不要只平均每轮分数——每轮都"答得还行"但最终没解决问题,仍是失败。

# 难点 典型表现 对评测的要求
1 上下文累积 关键信息散落在第 2、5、9 轮;agent 后文覆盖前文("上下文被覆盖"是阿里 RCA 中的常见根因) 必须会话级评测;单轮 judge 看不到跨轮信息是否被正确继承
2 目标切换 用户中途改主意:"先不退了,帮我换成换货";一个会话包含多个子目标 场景库要含目标切换用例;按最终达成的目标判分,而非第一个目标
3 情绪回应 用户愤怒、焦虑时,"答案正确但语气冰冷"会直接升级为投诉 体验维度(同理心、语气)单独成 rubric,属 P2 但决定产品生死(腾讯五维之一)
4 人工接管 该转人工时不转(硬扛)、不该转时乱转(甩锅);转接时上下文丢失 升级决策本身是评测对象:转接时机、转接时的信息交接质量
5 多轮引导 agent 需要指挥用户完成动作(点链接、查设置、拍照上传),而不只是自己执行 τ²-bench 证明"引导用户操作比直接操作难得多"(见 2.4)

四层判分框架(阿里):对话 Agent 要同时看四个层面,任何一层单独成立都不够:

层 评什么 典型检查
Turn(单轮) 单条回复的质量 语气、格式、不泄露、不编造
Session(整段会话) 整个交互是否连贯推进 是否绕圈、是否重复追问、上下文是否一致
Trace(执行轨迹) 对话之下的工具调用与推理 工具选对了吗、参数对吗、跳过校验了吗(详见第 E7 章)
Outcome(最终结果) 用户的问题到底解决没有 退款是否真的发起、订单是否真的改成功

四层的关系是:Outcome 是最终裁决,Turn/Session/Trace 是归因与护栏。 一个会话可以每轮 Turn 分都很高(礼貌、流畅、格式正确),但 Outcome 是失败的—— 用户绕了八轮还是没退成款。反过来,Outcome 成功也可能掩盖 Trace 层的风险 (跳过了订单状态校验恰好没出事,即"假阳性",详见第 E7 章)。 工程口径:门禁判 Outcome 与关键 Trace 断言,Turn/Session 分用于诊断与体验迭代,绝不互相替代。

这套四层与 Airbnb 的 step/trajectory/session 三层(第 E7 章)、 腾讯的"触发→核心逻辑→产物质量→异常容错"四场景用例组织(第 E3 章)互为表里: 对话评测的特殊性在于,Session 层的"推进质量"无法静态判分,必须让一个会动态反应的用户把会话跑完—— 这就引出了本章的主体:仿真评测。

2.2 Conversation Simulator:让 LLM 扮演用户

(1)为什么必须"按需生成会话"。 DoorDash 在 Ask DoorDash 评测 harness 的五大挑战中, 把对话评测的困境表述得最尖锐:

挑战 设计要求(DoorDash 原文表)
开放式目标(一个用户目标有多种可接受结果) 每个目标表达成 rubric:具体到每次能同样判,宽泛到容纳所有合法路径
执行不可见(judge 需要看到对话之下的工具调用) 把 trace 重建为"按标准定制的视图",judge 只看该标准需要的证据
无法安全彩排(不能拿真用户试变更;历史会话不能对改过的 agent 重放) 按需生成会话:模拟用户驱动 agent 跑场景,外围数据固定(fixtures),同场景每次一致
规模化判断(是否帮到用户需要人类级判断,但人工不可扩展) 校准过的 LLM judge 顶替人类评审
双环境(开发与生产质量可能背离) 真实会话与模拟会话用同一 rubric + 同一 judge

注意第三条里的关键洞察:历史会话不能对改过的 agent 重放——agent 变了,面对同一句话的回应就变了, 对话路径随之完全不同,"重放"测的已不是同一个交互。所以正确姿势不是回放录像,而是 让一个 LLM 扮演用户,按场景设定与 agent 现场对戏,每次生成一条新会话。

(2)模拟器的解剖:scenario 三要素。 DoorDash 的 Conversation Simulator 让 LLM 扮演购物者, 一个 scenario(场景)定义三件事:开场请求、用户目标、对提问/结果的反应方式。 场景是数据而不是代码——sweep 要跑几十上百个场景,场景必须可序列化、可版本管理、可由非工程师编写。 一个结构化完整的场景配置实例(字段组织参照 DoorDash 公开描述与本特辑 lab 约定):

evalId: grocery-reorder-001
sessionInput:                      # 会话的环境输入(渠道、用户档案等)
  channel: chat
  userLocale: en-US
conversationScenario:
  opening: "Reorder my usuals"     # 开场请求:模拟器的第一句话
  userGoal: >
    完成常购清单复购;确认配送时间;不接受用含花生商品替换
  persona:                         # 从真实工单抽取:脾气 + 情境叙事 + 期望结果
    temper: "耐心有限,但讲道理"
    contextStory: "每周日晚固定复购的常客,这周赶时间"
    expectedOutcome: "订单确认 + 明确配送窗口"
  reactionPolicy:                  # 反应策略:模拟器行为的"性格"
    whenAskedClarification: "挤牙膏式补充:一次只说一条自己知道的信息"
    whenNoProgressTwice: "要求升级/投诉——像真人一样给过机会才发火"
    whenResultWrong: "反驳并给出自己的依据,不轻易接受"
fixtures:                          # 冻结外部状态(见 2.3)
  get_reorder_items: reorder_history_v1
rubric: [reorder-checklist-v2, guardrail-communication, trust-honesty]
trials: 8                          # 每场景重复运行次数(支撑 pass^k,见 2.6)

(3)persona 从哪来:四条进料线。

来源 做法 出处
真实工单抽取 persona 携带脾气、情境叙事、期望结果,会反驳、补充细节、逐步升级而非一上来就转人工 DoorDash 仿真评测飞轮
隐式画像挖掘 从真实人机交互记录反推未明说的特征(性格、表达习惯、目标倾向),驱动的模拟器在个性化、真实性、多轮一致性上优于直接 prompt arxiv 2502.18968(2025)
真实日志语料 WildChat(100 万条 ChatGPT 交互,arxiv 2405.01470,2024)、LMSYS-Chat-1M(arxiv 2309.11998,2023)提供真实用户表达分布 构建模拟器/评测集的原料
规模化合成 以 persona 网格批量合成(腾讯参与的 10 亿 persona 工作,arxiv 2406.20094,2024);PersonaBOT 用 RAG 增强 persona 的准确性(arxiv 2505.17156,2025) 扩大场景覆盖

注意方向上的呼应:真实日志 → 隐式画像 → 模拟器 → 回归测试,这本身就是一条数据飞轮 (详见第 E12 章)——模拟器的 persona 不必全靠手写模板,可以从生产对话中"挖掘"。

(4)行为真实性:模拟器要做动态判断,而不是念台词。 一个合格的模拟用户在会话中持续回答四个问题: 是否已解决?是否有进展?是否需要更多信息?是否在绕圈? 并据此决定配合、追问还是升级。 DoorDash 的要求是升级行为像真人:给过几次机会、agent 反复答得差才投诉, 会反驳、会补充细节、会逐步升级,而不是一上来就转人工。 本特辑 labs/eval_lab07_simulator_fixtures.py 用一个最小状态机实现了这种"真人耐心": 未解决但有进展 → 继续配合;被反问 → 补充信息;连续 2 次无进展 → 升级投诉 (cd evals-special/labs && python3 eval_lab07_simulator_fixtures.py)。

(5)合作型模拟的系统性高估与非合作模拟。 如果模拟用户总是礼貌、信息完备、轻易满意, 它会把 agent 的能力系统性高估。ChatChecker(arxiv 2507.16792,2025)把"找茬式测试"工程化: persona 驱动的非合作用户模拟器——用户会不耐烦、跑题、表达模糊、中途改主意—— 配 Breakdown Detector(检测对话崩坏点,定位失败轮次,服务回归归因)与 Dialogue Rater(对系统质量打分)三件套。 工程推论:场景库必须包含"难缠用户"切片(易怒、模糊、改主意、多目标), 否则你在一个礼貌的假用户身上测出了一个礼貌的假高分。 同理,lab07 的 checklist 还验证了一件反直觉的事:编造商品的 agent 可以让"用户"满意收尾—— 模拟用户的满意不等于任务正确,结果判定必须独立于对话氛围(见 2.5)。

2.3 Fixtures:冻结外部世界,否则分数测量的是噪声

(1)问题:实时外部状态让评测不可复现。 对话 Agent 的背后是一圈活着的外部系统: 商品目录每天在变、门店库存实时波动、测试账号状态漂移。如果评测时真的调用这些接口, 同一条用例每次测的其实是不同的题——今天通过明天失败的差异,可能全部来自环境而不是 agent。 DoorDash 的 Lesson Learned 第二条原话是:"环境必须受控,否则分数测量的是噪声。"

(2)解法:录制工具返回,回放替代实时调用。 fixtures 的做法是: 把工具的真实返回录制成固定 payload,评测运行时拦截工具调用、原样回放。 DoorDash 复购场景的实例:开场请求 "Reorder my usuals",工具 get_reorder_items 固定返回录制的 reorder_history_v1——一份 Albertsons 的历史订单 (Meadow Gold 全脂牛奶 ×2、Oroweat 全麦面包、牛油果、Ben & Jerry's 冰淇淋……)。 于是每次运行 agent 都看到同一份订单 → 预期结果可预测 → judge 可以对照同一商品集评分。 把这份 fixture 展开成结构化 JSON 大致如下(商品清单忠实于原文,字段结构为示意):

{
  "fixture_id": "reorder_history_v1",
  "recorded_from": "生产会话录制并脱敏",
  "merchant": "Albertsons",
  "items": [
    {"name": "Meadow Gold Whole Milk", "qty": 2},
    {"name": "Oroweat Whole Wheat Bread", "qty": 1},
    {"name": "Avocado", "qty": 3},
    {"name": "Ben & Jerry's Ice Cream", "qty": 1}
  ]
}

(3)fixtures 的三重价值与对照。

方案 可复现性 能测什么 风险
实时调用生产/测试 API ❌ 数据随时间漂移 当下真实分布 分数方差混入环境噪声;可能产生真实副作用
重放历史会话 ⚠️ 只有一侧可控 旧 agent 的行为 agent 变更后对话路径完全不同,重放失效(2.2)
fixture + 模拟器按需生成 ✅ 外部状态冻结 任意场景含罕见难例 保真度需要持续校验(2.7)

第三重价值常被忽略:fixture 让"真实里很难遇到的场景"变成可批量测试的用例—— DoorDash 用 mock 后端模拟订单/退款/时间戳来复现欺诈、大额退款等边角案例。 这类场景在真实流量里占比极低(正是第 E3 章说的幸存者偏差),却恰恰是资损与合规的高风险区。

(4)fixture 的治理。 fixtures 不是写完就完:

  1. 版本化:reorder_history_v1 的命名暗示了版本演进;场景配置与 fixture 一起进仓库、带 provenance(EDDOps 对评测资产的通用要求,见第 E10 章)。
  2. 防 mock 漂移:录制的返回要与生产 API 定期对账——上游 schema 变了、字段语义变了而 fixture 没更新,评测全绿、上线即炸(主手册第 8 章 · Agent 评估与可观测性)。
  3. 环境隔离:评测执行环境要隔离,避免多用例共享状态导致分数不可复现(阿里);每条用例从干净状态启动。
  4. 脱敏合规:fixture 源自真实数据时必须去标识化、用途限定(Airbnb 隐私注记,见第 E3 章)。

动手:labs/eval_lab07_simulator_fixtures.py 专门设置了对照组——同一 agent、同样采样随机性下, fixture 组 N 次评分一致,而"漂移的伪实时数据"组方差显著膨胀,亲眼验证 "环境不受控时分数测量的是噪声"。运行:cd evals-special/labs && python3 eval_lab07_simulator_fixtures.py

2.4 标准范式:从 τ-bench 到 DoorDash 全流水线

(1)τ-bench:对话 Agent 仿真评测的模板。 学术侧的范式源头是 Sierra 的 τ-bench(arxiv 2406.12045,2024):LLM 用户模拟器与 agent 多轮对话, agent 需遵守领域政策(retail/airline 域的企业规则)并调用 API 工具, 最终以数据库终态哈希做可验证判定(而非只看对话文本),并用 pass^k 刻画"单次通过率在多次独立试验下的一致性"。这套"模拟器 + 可验证终态 + 重试验可靠性"设计 成为后续几乎所有对话 Agent 仿真评测的模板,也被 DoorDash 等工业实践直接借用。

τ-bench 最具冲击力的数字(论文摘要转述,量级可信、精确值以原文为准):

指标 retail 域 airline 域 含义
pass^1(单次成功率) ~61% ~35% "能做对一次"
pass^8(8 次全对) ~25% ~16% "稳定做对"

口径提示:上表为论文摘要数字;Sierra 官方榜单(taubench.com)后续报告的 GPT-4o 更高——retail 60.4%、airline ≈42%。本手册凡引 τ-bench GPT-4o 成绩,论文口径记 ~35%(airline)、榜单口径记 ~42%,两者并存,切勿混用(另见本章末数字附注与第 E2 章)。

GPT-4o 从 pass^1 到 pass^8 腰斩再腰斩,说明 "能做对一次"与"稳定做对"之间差距巨大—— 对话每多一轮、任务每多一步,误差都在复合。这也是为什么生产级对话 Agent 的发布门槛 应当使用 pass^k(低 k)而非 pass@1(指标定义与无偏估计见第 E2 章,统计口径见第 E9 章)。

(2)τ²-bench:双控与"多轮引导"难点。 τ²-bench(arxiv 2506.07982,2025)把范式升级为 dual-control(双控):模拟用户不再只是说话,也能自己执行工具动作(点击邮件链接、改路由器设置), agent 必须通过对话引导用户完成动作,并处理联合行动中的信息不对称;新增 telecom 域, 任务涉及跨系统排障、指导非专家用户。评测显示:即使最强模型,在双控设定下的成功率也远低于 τ-bench 单控设定——引导用户操作比直接操作难得多。 这为 2.1 的第五个难点(多轮引导)提供了定量注脚:客服/支持类 agent 的真实瓶颈是"指挥用户", 仿真评测若让用户侧没有行为能力,会系统性高估 agent。

(3)DoorDash 的全流水线:评测镜像运行时架构。 DoorDash 是多 agent 架构: 用户消息 → Orchestrator → 路由到领域 Agent(如 Restaurant Discovery Agent)→ 领域 Agent 直接处理或交还 Orchestrator。评测与之同形:路由在 Orchestrator 评;护栏贯穿全流程评; 任务能力在每个领域 Agent 评(组织方式详见第 E7 章)。对话仿真评测在这条流水线上的位置:

场景库(scenario + persona + fixture)
  → Conversation Simulator 生成模拟用户消息
  → 被测 agent 全流程运行(工具调用被 fixture 拦截回放)
  → OpenTelemetry trace 落 ClickHouse → Transcript Builder 按标准切证据片
  → 校准过的 LLM judge 逐条标准二元判定(verdict + rationale)
  → 汇总为会话级分数 → 全量 sweep 报告(按场景 × trial)

两个贯穿性约定:① 离线与线上用同一 rubric + 同一校准 judge——这是 DoorDash Lesson Learned 第三条: 离线结果只有能带到线上才有意义;若离线线上各自调 judge,两边分数会以难调和的方式背离 (详见第 E12 章)。② judge 校准用 GEPA(arxiv 2507.19457,2025): 迭代提出 judge prompt 修订,只保留在留出集上提升与人工标注一致率的版本 (GEPA 机制与"eval 作为优化目标"见第 E10 章;judge 校准全流程见第 E5 章)。

(4)generator-verifier gap:为什么 judge 模式可行。 DoorDash 仿真评测飞轮依赖一个经验事实: 判定比生成容易——LLM 裁判读全对话 + 工具调用 + 政策后给二元判定 + 理由, 比让模型从零生成完美服务要可靠得多;裁判再用人工标注样本校准到与专家一致后才上量。 这正是"LLM-as-a-Judge"在对话场景成立的前提(judge 的偏差与校准见第 E5 章)。

2.5 场景级 checklist rubric:低方差信号

仿真评测把"跑会话"变成了自动化,但"判会话"仍然是方差的主要来源。 DoorDash 的答案是把开放式目标翻译成场景级 checklist 式 rubric。

(1)实例:素食 taco 购物清单。 DoorDash 杂货购物场景的 rubric 例子: "两人份 ≤$60 素食 taco 购物清单"——judge 逐项验证:每件商品都是素食 taco 原料; 小计 ≤$60。对比两条路线:

维度 宽泛通用标准("购物清单是否合理") checklist 式场景标准
判定一致性 低——"合理"人各有解 高——每项非真即假、可附证据
方差 高,需要大样本才看得出差异 低,小样本也有用,支撑更快迭代
可归因性 只知道"不好" 知道是哪一项坏了(超预算?混入荤食?编造商品?)
适用面 任何会话 绑定具体场景,场景库要自己长出来

这与第 E5 章的通用结论一致:judge 做二值判断比打连续分可靠; DoorDash 的每条标准都是 binary check,汇总为会话级总分。

(2)eligibility 适用性前置。 checklist 有一个隐蔽杀手:不适用的标准误伤会话。 DoorDash 的设计是 judge 先判该标准是否适用本会话,不适用则跳过—— 例如食谱流程不因缺少复购步骤被扣分。适用性判断与标准判定分开, 避免"标准越多、误伤越多",也让 rubric 可以跨场景复用。

(3)与四层判分的对应。 checklist 主要落在 Outcome/Session 层; Guardrail 类标准(如"回复简洁、不向用户叙述思维过程""不呈现可证伪虚假信息") 面向全体 agent 贯穿全流程。lab07 的极简 checklist——目标商品在清单里 / 总价≤预算 / 无编造商品——足以抓住超预算与编造商品两类失败,即使"用户"在对话里表示满意。

2.6 全量 sweep 的成本账与实验设计

(1)一笔明账(DoorDash 原文数字)。 仿真评测的经济性是它成为 CI 门禁的前提:

项目 数字
全量 sweep 规模 50 场景 × 8 trials = 400 次对话
人工本地聊 约 1 分钟/次 → 6+ 小时
模拟器并行跑 约 20 分钟
飞轮吞吐 5 分钟内跑 200+ 场模拟对话
门禁纪律 一次触发跑完全流程,任何变更必须通过全部 50+ 个 eval 才能上线

两个数量级的时间差,正是"回归集只增不减"(第 E10 章)在经济上成立的前提。 DoorDash 报告的整套成果数字:质量信号从平均 1 条/天员工反馈 → 2,000 个/天自动评分会话; 全国上线前 agent 质量分 +8 分、错误率近乎减半,达到生产发布标准; 11 轮迭代中第 3 轮曾回落——回归是常态,门禁的价值正是抓住它; 模拟环境幻觉率下降约 90%;离线提升与线上真实流量表现一致。 这套 harness 还支撑了底座模型迁移(Claude Sonnet 4.6 → Gemini 3.5 Flash): 先被离线评测拦下(分数大跌),定位为兼容性差距而非能力差距,小修后 延迟降 35%、质量无损(案例全程见第 E15 章)。

(2)为什么是 8 trials。 每场景重复 N 次不是浪费,而是可靠性测量本身: N 次独立运行支撑 pass^k 估计(τ-bench 口径报 pass^1 与 pass^8), 并吸收模型采样与模拟器行为的方差。实验设计要点:

  • 固定模拟器与 seed:模拟用户的模型版本、温度固定,随机种子受控——模拟器是非确定性来源之一,其变异要么固定、要么用多 trial 吸收(统计处理见第 E9 章);
  • trial 间环境重置:fixture 保证外部状态一致,每条 trial 从干净状态启动;
  • 报告统计口径:通过率带置信区间(Wilson/bootstrap),版本对比用配对检验—— 400 次对话的样本量下,多大的分差才算"真变好"是统计问题而非感觉问题(第 E9 章)。

(3)分层预算。 E2E 对话仿真位于评测金字塔顶层(单元 grader → 轨迹/结构测试 → E2E 模拟, arxiv 2601.18827,2026),是最贵的一层。落地节奏通常是:PR 触发 smoke 场景子集(少量场景 × 少 trial)

  • 每日/每次模型变更跑全量 sweep + 高风险切片(欺诈、退款、人工接管)常设。 OpenAI 托管 Evals 平台的下线(2026 宣布)也提示:评测资产(场景 + fixture + rubric) 要用开放格式托管在自家仓库,与运行平台解耦(第 E10 章)。

2.7 模拟器的保真度与仿真评测的边界

仿真评测最大的风险不是技术故障,而是在假用户身上测出假结论。三个层次的清醒:

(1)模拟器 ≠ 真实用户。 模拟器与被测 agent 常用同族模型(同源偏差),可能互相"太好懂"; 合作型模拟高估、非合作型又可能过于刁钻;学界尚无公认的"模拟器保真度"标准指标。 DAUS(arxiv 2402.13374,2024,Amazon)直面了这个问题:未经微调的通用 LLM 当用户模拟器 不可靠——会偏离用户目标、幻觉出不存在的对话事实;DAUS 用领域数据微调 + 受控解码, 显著提升目标一致性(goal compliance)并抑制幻觉行为,使模拟对话更接近真实分布。 工程结论:用户模拟器本身需要被"评测与校准"——模拟器质量直接决定下游 agent 评测效度; 领域微调/对齐模拟器是工业级仿真评测流水线的常见投资。

(2)保真度抽检的常规动作。 没有单一指标能裁决保真度,工业界的务实做法是一组抽检:

动作 检查什么 失效信号
真实对话小样本对照 模拟会话与真实会话在轮次分布、升级率、失败模式上是否同构 模拟器"太乖"或"太刁"
换模拟器模型敏感性分析 换另一个模型当用户,版本对比结论是否翻转 结论翻转 → 测的是"应付某模拟器的技巧"
persona 来自真实日志 隐式画像(2502.18968)/真实工单抽取是否持续更新 校准集过时,分布漂移
offline-online 相关性回测 离线模拟涨幅是否在线上兑现 系统性不兑现 → 重建场景库

(3)offline-online gap:离线是必要不充分。 学术侧的实证很直接: 真实客服对话基准研究(arxiv 2510.22143,2025)明确指出,由于部署环境的分布漂移与交互复杂性, 强 offline 基准成绩只是部署可靠性的弱指标。另一侧,Discord 的 AITL 数据飞轮 (EMNLP'25 工业赛道,ACL Anthology 2025.emnlp-industry.135)把 offline 与 online 评测设置之间的一致性当作专门对象来量化。 DoorDash 能报告"离线提升与线上一致",前提是同一 rubric + 同一校准 judge 两边跑。 完整治理链路:离线门禁 → shadow → canary → A/B → 线上抽样评测, 阿里给了最硬的联动规则:离线提升但线上关键信号(转人工率、重复追问率、投诉率、满意度、 任务完成率、工单闭环率)恶化 → 触发回滚或降级(发布联动详见第 E12 章)。

(4)仿真评测系统自己也会坏。 DoorDash Lesson Learned 第四条: 评测系统自己也产生 bug 报告——被标记的失败中有真实一部分是 harness 自身故障 (judge 误报、trace 缺口),需要与业务 bug 并行修复。 所以成熟的仿真流水线都保留一条"harness 健康度"指标:A/A 噪声基线、 judge 与人工抽检的一致率漂移、fixture 失效率。评测系统本身也要被评测(主手册第 8 章同此观点)。


三、面试高频考点

# 考点 分级 一句话考察意图
1 对话评测五大难点与四层判分 ⭐⭐⭐ 能否说出"每轮都答得还行但没解决仍是失败",Turn/Session/Trace/Outcome 如何分工
2 Conversation Simulator 的 scenario 构成 ⭐⭐⭐ 开场请求 + 用户目标 + 反应策略;persona 从真实工单/日志挖掘而非凭空手写
3 Fixtures 与环境受控 ⭐⭐⭐ "环境必须受控,否则分数测量的是噪声";录制回放 vs 实时调用 vs 历史重放
4 τ-bench 范式与 pass^k ⭐⭐⭐ 模拟器 + 终态哈希 + 重试验可靠性;GPT-4o retail pass^1 ~61% → pass^8 ~25%
5 模拟器保真度与同源偏差 ⭐⭐⭐ DAUS 的目标一致性问题;保真度抽检清单;"换模拟器结论是否翻转"
6 checklist 式 rubric 与低方差信号 ⭐⭐ 素食 taco ≤$60 案例;为什么二值清单比宽泛标准更稳、小样本更有用
7 非合作模拟 ⭐⭐ ChatChecker:合作型模拟系统性高估;场景库要有"难缠用户"切片
8 双控与多轮引导(τ²-bench) ⭐⭐ 引导用户操作比直接操作难得多;用户侧也要有行为能力
9 全量 sweep 的成本与实验设计 ⭐⭐ 50×8=400 对话、6h+→20min;8 trials 支撑 pass^k;固定模拟器与 seed
10 离线-线上一致性 ⭐⭐ 同一 rubric + 同一校准 judge;arxiv 2510.22143"弱指标";阿里回滚规则
11 人工接管/升级行为的评测 ⭐⭐ 转接时机与信息交接本身是评测对象;升级要像真人(给过机会才投诉)
12 罕见难例的构造 ⭐ fixtures 构造欺诈/大额退款;幸存者偏差的对冲

四、经典面试题与参考答案

题 1(基础):评测对话 Agent 和评测单轮问答有什么本质区别?为什么不能把每轮分数取平均当会话成功率?

参考答案: 单轮评测是"输入→输出→对照参考",对话评测面对五个特殊难点(阿里归纳): ① 上下文累积——关键信息跨轮分布、可能被后文覆盖;② 目标切换——用户中途改主意,一个会话多个子目标; ③ 情绪回应——答案对但语气差会升级为投诉;④ 人工接管——转接时机与交接质量本身要评; ⑤ 多轮引导——指挥用户操作比自己执行更难(τ²-bench 定量证明)。 不能平均的原因:每轮都"答得还行"但最终没解决问题仍是失败——Turn 层的礼貌流畅无法推出 Outcome 层的任务达成,用户绕八轮没退成款,平均每轮 4 分没有任何意义。 正确做法是四层分开看:Outcome 做最终裁决与门禁,Turn/Session/Trace 做归因与体验迭代,互不替代。

题 2(基础):什么是 fixtures?为什么仿真评测环境必须冻结外部状态?

参考答案: fixtures 是把工具的真实返回录制成固定 payload,评测运行时拦截调用、原样回放。 原因:对话 Agent 背后的目录、库存、账号状态都在实时漂移,若评测时实时调用, 同一条用例每次测的是不同的题——分差可能全部来自环境而非 agent。 DoorDash 的教训原话是"环境必须受控,否则分数测量的是噪声"。 实例:复购场景开场 "Reorder my usuals",get_reorder_items 固定返回录制的 reorder_history_v1(Albertsons 订单:Meadow Gold 全脂牛奶 ×2、Oroweat 全麦面包、 牛油果、Ben & Jerry's 冰淇淋),每次运行看到相同订单,预期结果可预测,judge 可对照同一商品集评分。 附带收益:fixtures 还能构造欺诈、大额退款等真实流量里罕见的难例,对冲幸存者偏差。 治理三件事:fixture 版本化、定期与生产 API 对账防 mock 漂移、用例间环境隔离。

题 3(进阶):请设计一个用户模拟器的 scenario 结构。怎样让模拟用户的行为"像真人"而不是"念台词"?

参考答案: scenario 三要素(DoorDash 定义):开场请求(模拟器的第一句话)、用户目标(含期望结果)、 反应策略(对提问/结果的反应方式)。persona 建议携带脾气、情境叙事、期望结果, 从真实工单抽取,或用隐式画像方法从真实日志反推(arxiv 2502.18968)。 行为真实性靠动态判断而非脚本:模拟器每轮回答四个问题——是否已解决、是否有进展、 是否需要更多信息、是否在绕圈——据此选择配合、补充、追问或升级。 升级行为要像真人:给过几次机会、反复答差才投诉,会反驳、逐步升级而非一上来就转人工(DoorDash)。 还要刻意包含非合作切片:用户不耐烦、跑题、表达模糊、中途改主意(ChatChecker,arxiv 2507.16792), 因为合作型模拟会系统性高估 agent。配置应是数据不是代码——可序列化、可版本管理、非工程师可写。

题 4(进阶):τ-bench 的评测范式由哪些组件构成?它的 pass^k 数字说明了什么?

参考答案: 四个组件:① LLM 用户模拟器与 agent 多轮对话;② agent 需遵守领域政策(retail/airline 业务规则) 并调用 API 工具;③ 以数据库终态哈希做可验证判定,而非只看对话文本——抗话术干扰; ④ 用 pass^k 刻画可靠性:单次通过率在多次独立试验下的一致性。 数字(论文摘要转述):GPT-4o retail 域 pass^1 ≈60%(官方榜单 60.4%)、airline 域 ≈42%, 而 pass^8 跌至约 25% / 16%——"能做对一次"与"稳定做对"差距巨大, 因为对话每多一轮、误差复合一次。工程推论:生产级对话 Agent 应以 pass^k(低 k)作发布门槛, pass@1 只作能力上限参照;τ²-bench(arxiv 2506.07982)进一步把用户侧升级为能动手的"双控", 最强模型双控成功率也远低于单控——引导用户操作比直接操作难得多。

题 5(进阶):为什么 checklist 式 rubric 比宽泛标准更适合仿真评测?请举一个设计实例,并说明 eligibility 前置的作用。

参考答案: 宽泛标准("购物清单是否合理")人各有解,judge 判定方差高,需要大样本才看得出差异; checklist 把开放式目标拆成非真即假、可附证据的检查项,判定一致性高、方差低, 小样本也有用,支撑更快迭代,且失败时能定位到具体坏项。 实例(DoorDash 杂货场景):"两人份 ≤$60 素食 taco 购物清单"——逐项验证每件商品都是素食 taco 原料、 小计 ≤$60。每条标准都是 binary check,汇总为会话级总分。 eligibility 前置:judge 先判该标准是否适用本会话,不适用则跳过——食谱流程不因缺复购步骤被扣分。 没有这一步,标准越多误伤越多;有了它,rubric 才能跨场景复用。 延伸:判定要独立于对话氛围——编造商品的 agent 可能让模拟用户满意收尾, 所以结果检查必须查事实(商品真实性、价格),不能只问"用户是否满意"。

题 6(进阶):用户模拟器本身也是 LLM。你如何验证它的可靠性,防止"在假用户身上测出假结论"?

参考答案: 先承认已知缺陷:DAUS(arxiv 2402.13374,Amazon)证明未经微调的通用 LLM 模拟器会偏离用户目标、 幻觉出不存在的对话事实;模拟器与被测 agent 同族时存在同源偏差,互相"太好懂"; 学界尚无公认的保真度标准指标。验证手段分四层: ① 模拟器自身指标:目标一致性(是否守住 persona 目标)、幻觉率(是否编造不存在的事实), 必要时领域微调 + 受控解码(DAUS 路线); ② 真实对话对照抽检:模拟会话与真实会话在轮次分布、升级率、失败模式上是否同构; ③ 敏感性分析:换一个模拟器模型重跑,若版本对比结论翻转,说明测的是"应付特定模拟器的技巧"; ④ offline-online 相关性回测:离线模拟涨幅是否在线上兑现,系统性不兑现就重建场景库。 组织上把模拟器当资产管理:persona 从真实日志持续挖掘更新(隐式画像/数据飞轮), 合作/非合作/模糊/易怒等切片齐全,定期保真度抽检。

题 7(系统设计):为一个外卖/零售客服对话 Agent 设计端到端仿真评测体系。

参考答案: 按"场景库—演员—舞台—判官—门禁—回流"六层设计: ① 场景库:scenario = 开场请求 + 用户目标 + 反应策略,persona 从真实工单抽取 (脾气、情境叙事、期望结果),覆盖复购、退款、投诉、目标切换、难缠用户等切片; 每条场景带 provenance 与 slice 标签,场景即数据、可版本管理。 ② 模拟器:LLM 扮演用户,动态判断解决/进展/缺信息/绕圈,升级像真人(给过机会才投诉); 含非合作切片;固定模型版本与 seed。 ③ fixtures:录制工具返回冻结目录/库存/订单状态;专门构造欺诈、大额退款难例; fixture 版本化并定期与生产对账;用例间环境隔离。 ④ 判分:场景级 checklist rubric(binary check + eligibility 前置)+ 终态校验(订单/退款状态); judge 逐条标准独立评分、输入为 transcript 证据切片 + 工具调用 + 政策,输出 verdict + rationale; judge 用人工标注校准(GEPA 打磨,一致率达标才进门禁);评测镜像运行时架构——路由、护栏、领域能力分开评。 ⑤ 门禁与实验设计:全量 sweep = 场景 × 8 trials(支撑 pass^k 与方差吸收), PR 跑 smoke 子集、每日与模型变更跑全量;通过率带置信区间,版本对比用配对检验。 ⑥ 回流:线上失败与 harness 自身故障(judge 误报、trace 缺口)分两条线修复; 同一 rubric + 同一 judge 跑线上抽样,离线升线上降触发回滚;失败场景回流为新 scenario。 成本锚点(DoorDash):50 场景 × 8 trials = 400 对话,人工 6h+ → 模拟器约 20min; 上线前质量分 +8、错误率近乎减半、2,000 会话/天自动评分。

题 8(系统设计/开放):你的对话 Agent 仿真评测全绿,但上线后转人工率与投诉率没降。给出你的排查框架与治理方案。

参考答案: 先定位差距来源,五个候选: ① 模拟器失真:合作型用户过多、persona 过时、模拟器与被测模型同源互相迎合—— 做真实对话对照抽检与换模拟器敏感性分析; ② rubric 与真实痛点错位:仿真测的是任务完成,投诉来自语气、等待、解释缺失、 结果对了但没告知(把线上投诉做归因分类,反查评测盲区); ③ 环境保真度不足:fixture 与生产漂移、线上才有的真实数据形态(超长订单、多语言)没覆盖—— fixture 对账 + 用线上真实会话补场景; ④ offline-online 口径分裂:离线线上两套 judge 或两套 rubric——统一为同一 rubric + 同一校准 judge (DoorDash 原则三:各自调 judge 分数会难调和地背离); ⑤ 分布漂移:评测集停留在旧分布——对比线上抽样与场景库分布做覆盖度审计。 理论锚点:arxiv 2510.22143 明确强 offline 成绩只是部署可靠性的弱指标; 阿里联动规则最硬:离线提升但线上关键信号恶化 → 回滚或降级。 治理上把仿真定位成"必要不充分":离线门禁之外保留 shadow/canary 第二道闸, 线上抽样用同一 rubric 持续评分,offline-online 相关性定期回测,不兑现即重建场景库。


五、易错点 · 反直觉点

  1. 把每轮分数平均当会话成功率:每轮都礼貌流畅,用户绕八轮没解决问题仍是失败。 → 真相:Outcome 层才是最终裁决,Turn 分只做诊断。→ 记忆锚点:平均分会奖励"礼貌地不作为"。
  2. 用历史会话重放测新版本:以为录像回放最真实,实际 agent 一变更,对话路径完全不同,重放测的不是同一个交互。 → 真相:DoorDash 的结论是"按需生成会话",模拟器驱动 agent 现场跑场景。→ 记忆锚点:重放测的是旧 agent 的过去,不是新 agent 的未来。
  3. 评测时实时调用外部 API:目录在变、库存在变、账号在漂移,同一条用例每次测的是不同的题。 → 真相:fixtures 冻结外部状态,分数差异才能归因于 agent。→ 记忆锚点:环境不受控时,分数测量的是噪声。
  4. 模拟用户太合作:礼貌、信息完备、轻易满意的模拟器,把 agent 测出礼貌的假高分。 → 真相:合作型模拟系统性高估;场景库必须有不耐烦、跑题、改主意的非合作切片(ChatChecker)。→ 记忆锚点:假用户不会投诉,假分数不会说谎——只会骗你。
  5. 模拟器与被测 agent 同源:同族模型互相"太好懂",评测变成自家人对暗号。 → 真相:同源偏差需靠换模拟器敏感性分析与真实对话抽检对冲;模拟器质量直接决定评测效度(DAUS)。→ 记忆锚点:裁判、模拟器、被测者,三角关系越独立越可信。
  6. fixture 写完不维护:上游 schema 变了、字段语义变了,fixture 还停在旧世界,评测全绿、上线即炸。 → 真相:fixture 要版本化、定期与生产 API 对账(mock drift 治理)。→ 记忆锚点:冻结的是状态,不是维护责任。
  7. 只报 pass@1 不报 trial 设计:单次成功率 61% 听起来不错,τ-bench 里 GPT-4o 的 pass^8 只有约 25%。 → 真相:对话/客服类生产场景必须报 pass^k 与试验次数,能力上限与可靠性分开报告。→ 记忆锚点:能做对一次 ≠ 稳定做对。
  8. 只看"用户是否满意"判成功:编造商品的 agent 可以让模拟用户满意收尾。 → 真相:结果判定要独立于对话氛围——查事实(商品真实性、价格、终态),满意度只是 P2 观察项。→ 记忆锚点:满意可以被话术制造,终态不会撒谎。
  9. 把仿真当终点:离线模拟全绿就直接全量上线。 → 真相:强 offline 成绩只是部署可靠性的弱指标(arxiv 2510.22143);仿真之后还有 shadow/canary 与线上同 rubric 抽检,离线升线上降要敢回滚。→ 记忆锚点:仿真是排练场,不是公演。
  10. 忽略 harness 自身故障:失败列表里全是"agent 的错"。 → 真相:被标记失败中有真实一部分是评测系统自己的 bug(judge 误报、trace 缺口),要并行修复(DoorDash Lesson 4)。→ 记忆锚点:秤不准时,先修秤再称象。

六、推荐资源

核心论文(arxiv ID 均来自本特辑 _research/06-edd-simulation.md 调研,已核实)

  1. τ-bench(Sierra,2024):对话 Agent 仿真评测的范式源头——LLM 用户模拟器 + 政策遵守 + DB 终态哈希 + pass^k。 https://arxiv.org/abs/2406.12045
  2. τ²-bench(Sierra,2025):双控环境,用户侧也能执行工具动作;"引导比代办难"的定量证据。 https://arxiv.org/abs/2506.07982
  3. DAUS: Reliable LLM-based User Simulator for Task-Oriented Dialogue Systems(Amazon,2024): 模拟器自身的可靠性问题——目标一致性与幻觉,领域微调 + 受控解码。 https://arxiv.org/abs/2402.13374
  4. Know You First and Be You Better: Modeling Human-Like User Simulators via Implicit Profiles(2025): 从真实日志挖掘隐式用户画像驱动模拟器。 https://arxiv.org/abs/2502.18968
  5. ChatChecker: Dialogue System Testing Through Non-cooperative User Simulation(2025): 非合作模拟 + Breakdown Detector + Dialogue Rater。 https://arxiv.org/abs/2507.16792
  6. Benchmarking and Learning Real-World Customer Service Dialogue(2025): offline-online gap 实证——强离线基准只是部署可靠性的弱指标。 https://arxiv.org/abs/2510.22143
  7. Gromada et al., Evaluating Conversational Agents with Persona-driven User Simulations (EMNLP 2025 工业赛道,销售 bot 案例;无 arxiv 版本):persona 切片 × 业务 KPI(转化、升级率)的评测组织方式。 https://aclanthology.org/2025.emnlp-industry.16/
  8. Agent-in-the-Loop(Discord,EMNLP 2025 工业赛道):数据飞轮与 offline-online 一致性的量化样本。 https://aclanthology.org/2025.emnlp-industry.135/
  9. 延伸阅读:PersonaBOT(RAG 增强 persona 模拟器,https://arxiv.org/abs/2505.17156); WildChat 1M 真实交互日志(https://arxiv.org/abs/2405.01470); LMSYS-Chat-1M(https://arxiv.org/abs/2309.11998); Generative Agents(LLM 模拟人类行为的奠基,https://arxiv.org/abs/2304.03442); 10 亿 persona 规模化合成(Tencent 参与,https://arxiv.org/abs/2406.20094); From Simulation to Strategy(模拟器→策略规划闭环,https://arxiv.org/abs/2510.08621)。

工业博客与文档

  • DoorDash《Building Ask DoorDash (Part 3): Evaluation》(2026-06-30):五大挑战表、 Conversation Simulator、fixtures、checklist rubric、GEPA 校准——本章 DoorDash 细节的第一来源。
  • DoorDash《A Simulation and Evaluation Flywheel to Develop LLM Chatbots at Scale》(2026-01-26): 模拟器 persona 从真实工单抽取、mock 后端构造欺诈难例、200+ 对话/5 分钟、幻觉率降约 90%。
  • Anthropic《Demystifying evals for AI agents》(2026-01):起步 20–50 个真实用例、pass@k/pass^k、 capability/regression 双套件(与第 E10 章对读)。

动手 labs

  • labs/eval_lab07_simulator_fixtures.py(本章配套):状态机驱动的模拟用户 + fixtures 拦截回放 + 漂移对照组方差实验 + checklist rubric。运行:cd evals-special/labs && python3 eval_lab07_simulator_fixtures.py
  • labs/eval_lab06_trajectory_eval.py:轨迹三层评估与"结果对但路径错"的假阳性捕获(配合 2.1 四层判分)。
  • labs/eval_lab08_statistics_ci.py:多 trial 通过率如何报置信区间与显著性(配合 2.6 实验设计)。

章节交叉

  • 第 E5 章 · LLM-as-Judge 深入:judge 的偏差、校准与 GEPA 全流程。
  • 第 E7 章 · 轨迹与 Agent 级评估:Transcript Builder 证据切片、评测镜像运行时架构。
  • 第 E9 章 · 评估的统计学基础:pass^k 的估计、样本量与版本对比显著性。
  • 第 E10 章 · 评测驱动开发(EDD):仿真评测在 EDD 闭环中的位置与失败回流。
  • 第 E12 章 · 在线评估与数据飞轮:离线-线上一把尺子、发布联动与回流。
  • 第 E15 章 · 工业实践案例研究:DoorDash 案例全文(含 reasoning leakage 与模型迁移两案)。
  • 主手册第 8 章 · Agent 评估与可观测性:评估环境与可复现性的通识基础(本章是其深挖)。
第 9 章 / 共 15 章

评估的统计学基础

📌 本章导航(6 节)

一句话导读:「v2 通过率 85%,比 v1 的 82% 高,可以发布」——这句话缺了三个限定词:85% 的误差范围有多大、3 个点的差距能否与噪声区分、多大的差距才值得一次发布。本章把评测分数装进统计学的骨架:单个分数用 Wilson 区间与 bootstrap 给出误差条;评测规模用样本量公式在跑之前算清楚;版本对比用配对设计与最小可感知变化(MPP)判定真伪;pass@k/pass^k 用无偏估计量与重复实验设计报数;竞技场排名用 Bradley-Terry、tie 建模与风格控制回归。学完本章,你能现场手算 CI 与样本量,能回答一切「这个分数可信吗」类的面试题——这也是评测岗笔试计算题的全部题源。


一、知识图谱

评估的统计学基础
│
├─ 1. 基本立场:评测 = 小样本统计推断
│   ├─ 分数是统计量(随机变量),不是真值
│   └─ 五大方差来源:采样 / temperature=0 非确定性 / prompt 措辞 / judge / 题目抽样
│
├─ 2. 区间估计(给单个分数装误差条)
│   ├─ 二项比例:Wald 区间的两个致命伤 → Wilson score interval(默认)
│   ├─ Bootstrap:任意统计量的无公式误差条(重抽样单元 = 评测单元)
│   └─ 覆盖率:评判 CI 好坏的唯一硬指标
│
├─ 3. 样本量与功效(评测之前定规模)
│   ├─ 估精度:n ≥ z²p(1−p)/ε²(±2pp ⇒ ~2400 题;±1pp ⇒ ~9600 题)
│   ├─ 比版本:n ∝ 1/δ²(检出 5pp ≈ 1000 条/组;3pp ≈ 2800 条/组)
│   ├─ 先导法:ReliableEval 矩方法反解 n(2505.22169)
│   └─ 为什么 100 条 golden set 只是起点不是终点
│
├─ 4. 版本对比(差异是真是假)
│   ├─ 配对设计:同一题集 + McNemar / 配对 bootstrap
│   ├─ 直接 bootstrap「分差」,不要肉眼比两个 CI 是否重叠
│   └─ 阿里门禁三件套:置信区间 + 显著性 + 最小可感知变化(MPP)
│
├─ 5. pass@k / pass^k 的统计学
│   ├─ 无偏估计量 1 − C(n−c,k)/C(n,k)(HumanEval,2107.03374)
│   ├─ 小 n 方差爆炸与 Beta 后验替代(2510.04265)
│   ├─ pass^k:iid 假设下 ≈ p^k;τ-bench 实测 60%→25% 不可外推(2406.12045)
│   └─ 重复设计:N=3/5/8/10 取舍;repetitions ≥3 是底线
│
├─ 6. 竞技场方法论(成对比较的统计学)
│   ├─ Bradley-Terry MLE vs 增量 Elo:顺序无关性是切换的根本原因
│   ├─ Tie 建模:丢弃/半分都有偏 → Davidson / factored tie(2412.18407)
│   ├─ Bootstrap CI(典型宽 5–15 Elo)与分差检验
│   ├─ 风格控制回归(2404.04475 / Arena style control / Arena-Hard 2406.11939)
│   └─ 脆弱性:丢票敏感(2508.11847)与投票操纵(2501.17858)
│
├─ 7. 噪声与可复现
│   ├─ temperature=0 + seed 仍非确定(2410.03492)
│   ├─ 重复 3–5 次 + 聚合,排名翻转率显著下降(2509.24086)
│   └─ judge 报告规范:偏差校正 + CI(2511.21140);judge 样本效率下界(2410.13341)
│
└─ 8. 面试计算工具箱(第四节题源)
    └─ 算 CI / 反解样本量 / 配对检验 / pass^k 外推 / Elo-BT 换算

30 秒抓住主线:评测是用几十到几千道题的样本,推断模型在全体任务分布上的表现——这是一个统计推断问题,不是算术问题。于是有三个必须回答的问题:① 单个分数的误差多大(2.2–2.3);② 多少样本才够(2.4);③ 两个分数的差异是真是假(2.5)。在此之上,pass@k/pass^k 有自己的估计陷阱(2.6),竞技场排名自成一套配对比较统计学(2.7),而一切结论的前提是控制住噪声来源(2.8)。2024 年之前业界普遍把跑分当成确定性点估计;2024 年起,置信区间、重复实验、显著性检验成为严肃评测报告的标配——这条演进主线贯穿本章所有论文引用。


二、核心概念精讲

2.1 评测是小样本统计推断:点估计、区间估计与五大方差来源

LLM 评测的本质:用几十到几千道题的样本,去推断模型在「全体可能任务分布」上的能力,并据此排序、做 A/B 决策。样本有限,所以任何评测分数都是一个统计量(随机变量)而不是真值——换一批题、换一次运行、换一个 judge,分数都会变。2024–2026 评测统计学的主线,就是「从点估计走向分布推断」。

一个分数至少由五个随机源共同塑造(汇总自 2410.03492、2509.24086、2505.22169 的方差来源分析):

# 方差来源 机理 控制手段
1 采样随机性 temperature>0 时输出本身是抽样 固定温度并记录;多次 trial 取均值
2 temperature=0 的非确定性 批处理效应、底层 kernel、量化的非确定性——即使固定种子,输出仍可能不同 重复实验;固定并记录推理栈版本
3 prompt 措辞敏感性 语义等价的改写可改变结果,即使最强模型也显著存在 随机化评测/prompt 扰动检验(2505.22169)
4 judge 的随机性与版本漂移 judge 自身有噪声,升级后偏差参数会变 judge 版本锁定;人工校准集定期重估
5 题目集的抽样方差 golden set 只是任务分布的一个样本 报告 CI;扩容时按 1/δ² 规划

推论一:没有误差条的分数在评审中应当被质疑——这是全章最低成本、最高收益的纪律。 推论二:发布评测结论前,把上表过一遍,至少固定并记录其中可控项(种子、温度、judge 版本、题目集快照)。

动手:用固定种子做 1000 次模拟实验,亲眼验证「声称 95% 的区间是否真的覆盖真值约 95%」—— cd evals-special/labs && python3 eval_lab08_statistics_ci.py

2.2 通过率的置信区间:Wald 的陷阱与 Wilson score interval

通过率 p̂ = X/n(n 条用例中 X 条通过)是最基础的评测指标,也是二项比例。它的标准误约为 √(p(1−p)/n)——n=100、p≈0.83 时约 3.7 个点,95% 区间约 ±7.4 个点。这就是「100 条评测集上 2–3 个点的差异看不出任何东西」的数学根源。

最朴素的区间是 Wald 区间:p̂ ± z·√(p̂(1−p̂)/n)(95% 时 z=1.96)。公式好记,但有两个致命伤:

  1. 端点越界:n=20、全部失败(p̂=0)时,Wald 给出区间 [0, 0]——声称「真实通过率精确等于 0」,荒谬;真实上界按「三三法则」约为 3/n ≈ 15%。p̂=1 时同理给出 [1, 1]。
  2. 覆盖率不足:小样本或极端比例下,声称 95% 的 Wald 区间实际覆盖率远低于 95%,是「假安全感」。

Wilson score interval(得分区间)是报告二项比例的默认选择:

z = 1.96(95% 置信水平)

              p̂ + z²/(2n)  ±  z·√( p̂(1−p̂)/n + z²/(4n²) )
Wilson 上下限 = ────────────────────────────────────────────
                       1 + z²/n

三个直觉帮你记住它:

  • 它是「反转得分检验」的产物:把所有「与观测 p̂ 不矛盾的 p₀」收集起来就是区间,构造方式天然比 Wald 的「以 p̂ 为中心对称外扩」更合理;
  • 它做了收缩:区间中心不是 p̂,而是 p̂ 向 1/2 的加权平均(权重 z²/n),n 越小收缩越强——这正是小样本需要的保守;
  • 端点永远落在 [0,1] 内,且小样本下覆盖率接近名义水平。

同一数据两种区间的对比:

场景 Wald 区间 Wilson 区间 评注
n=100,85 通过 [78.0%, 92.0%] [76.7%, 90.7%] 中样本下差异不大,Wilson 略宽且略向 1/2 收缩
n=20,0 通过 [0, 0](越界/荒谬) [0, 16.1%] 「全挂」≠ 真通过率为 0,上界仍有 16%
n=20,20 通过 [100%, 100%] [83.9%, 100%] 「全过」也不等于完美
n=30,p̂=0.5 ±17.9pp ±18pp 量级 30 题竞赛集的分辨率只有 ~±18pp

覆盖率(coverage)是评判 CI 好坏的唯一硬指标:重复做实验,区间盖住真值的频率。95% 是声明,覆盖率模拟才是验证(lab08 用固定种子模拟 1000 次,断言 Wilson 覆盖率落在 [0.92, 0.98])。

2.3 Bootstrap:任意统计量的无公式误差条

Wilson 只解决「单个比例」。评测里还有中位数延迟、pass^k、BT 分数、胜率差……这些没有好用的闭式区间,通用解法是 bootstrap:

重复 B 次(B = 500 ~ 1000):
    从原始评测单元中【有放回】重抽样出同规模样本
    在重抽样集上重算统计量(准确率 / BT 分数 / 两模型分差 / ……)
取 B 个统计量的 2.5% 与 97.5% 分位数 → 95% CI

三个使用要点,全是面试追问点:

要点 说明 反例
重抽样单元 = 评测单元 成对比较按「对局」抽,分类评测按「题目」抽,多轮任务按「会话」抽 把一道多轮对话题拆成轮次独立重抽 → 低估方差、CI 假窄
比较两模型,bootstrap「分差」 对同一重抽样同时算两模型分数取差,直接看差值 CI 是否盖住 0 各自算 CI 再肉眼比是否重叠 → 保守且口径错误(见易错点 2)
B 不能太小 B<200 时分位数本身有 Monte Carlo 误差 B=50 的 CI 每次跑都不同,报告不可复现

bootstrap vs 公式法怎么选:二项比例优先 Wilson(稳定、无模拟误差、可复现);任何非比例统计量、或分布假设不放心时用 bootstrap;两者都不可行(样本极少、强依赖结构)再考虑 Beta 后验等贝叶斯方法(2510.04265、2504.21303)。bootstrap 也是配对比较显著性检验的方法学源头之一(NLP 经典的配对 bootstrap 检验,Koehn 2004)。

2.4 样本量计算:多少题才够

评测集规模不该拍脑袋,它由「你要多高的分辨率」反解出来。分两类问题。

问题一:估计单个通过率,要 ±ε 的精度需要多少题?

n ≥ z² · p(1−p) / ε²        (z=1.96 对应 95%;p 未知时取最坏情况 p=0.5)

速查表(95% 置信水平):

目标半宽 ε p=0.5(最坏情况) p=0.8
±5pp ~385 ~246
±3pp ~1,068 ~683
±2pp ~2,400 ~1,537
±1pp ~9,600 ~6,147

(±2pp 需 ~2400 题、±1pp 需 ~9600 题与调研素材一致。)这解释了两个业界现象:① 把精度做细极其昂贵——从 ±2pp 到 ±1pp 样本量翻两番(n ∝ 1/ε²);② 30 题的竞赛集(如 AIME 类)半宽约 ±18pp,在统计上根本无法区分前沿模型——业界经验法则是 ~1000 题起步才有基本功效。

问题二:比较两个版本,要检出 δ 的差异需要多少题?

双比例比较(双侧 α=0.05,功效 1−β=0.8,z_β=0.84):

每组 n ≈ (z_{α/2} + z_β)² · 2·p̄(1−p̄) / δ²     (p̄ = (p₁+p₂)/2;加连续性修正再上浮 10–20%)

基线 80% 时的速查表(与第 E2 章门禁口径一致):

想检出的差异 δ 每组所需样本量(约)
10pp 250
5pp 1,000
3pp 2,800
1pp ~25,000

1/δ² 定律是评测经济学的第一性原理:想检出的差异减半,评测预算翻两番。「感觉够了」通常远不够——区分两个真实胜率只差 1% 的模型,需要数千次成对比较。

为什么 100 条 golden set 是行业常见起点(阿里 50–200 条、Airbnb 50–100 条)?四个理由:

  1. 精度匹配门禁语义:n=100 时通过率 CI 半宽约 ±8pp,足以区分「82% vs 90% 门槛」这类大差距——门禁要的是拦截明显劣化,不是测微差;
  2. 迭代速度:100 条在分钟级跑完,支撑「一次一变量」的高频迭代(第 E10 章);
  3. 人工可审:Airbnb 的「100 样本人工精读法」要求专家读得完每一条输出与 trace;
  4. 成本可控:agent 级评测单条成本高,100 条 × N 次重复才在预算内。

但要清楚它的边界:n=100 只能检出 ~8pp 以上的差异;需要分辨 3pp 就得扩到 ~2800 条(配对设计可显著更少),或接受「小提升不值得发布」的 MPP 设定(2.5)。起点与终点之间,用样本量公式显式做预算。

先导法(把拍脑袋变成实验+公式):ReliableEval(2505.22169,EMNLP 2025 Findings)针对「评测对 prompt 措辞高度敏感」提出随机化评测——对一个题目生成大量语义保持的 prompt 扰动,把评测对象从单点 prompt 扩展为 prompt 分布;再用矩方法从先导样本估计分数方差 σ̂²,反解所需样本数:

n ≥ ( z_{α/2} · σ̂ / ε )²

落地姿势:先用 10% 预算跑先导集估方差,再决定全量规模。该框架在 GPT-4o、Claude-3.7-Sonnet 等 5 个前沿模型上验证:即使最强模型也存在显著 prompt 敏感性;对高方差任务(开放生成、多轮 agent)尤其必要。

2.5 版本对比的显著性:配对设计与阿里门禁三件套

「v1 82%,v2 85%,v2 更好?」——先看设计,再看检验。

配对设计优于独立设计,原因是评测里最大的噪声源是题目难度差异,而不是模型差异:

设计 做法 噪声结构 检出力
独立设计 v1、v2 各抽一批题分别跑 题目难度差异 + 模型差异混在一起 低:差异被题目噪声淹没
配对设计 两版本跑同一批题,逐题对比 题目难度被「自己当自己的对照」钉死,只剩同题上的版本差异 高:检出同一 δ 所需样本量显著更小

配对数据的标准检验是 McNemar 检验:把每题的两版本判定整理成 2×2 表,只看不一致的题——A 对 B 错(b 题)与 A 错 B 对(c 题):

χ² = (|b − c| − 1)² / (b + c)      (df=1;χ² ≥ 3.84 即 α=0.05 显著)

直觉:两版本都做对/都做错的题对「谁更好」毫无信息量;全部信息集中在不一致的题上。等价地,也可以对「逐题分差」做配对 bootstrap,取差值 CI 看是否盖住 0。不要用两独立比例的 z 检验——那是独立设计的工具,用在配对数据上既浪费信息又可能错。

手算示例(面试计算题常见形态):n=100 配对,两版本都做对 70 题、A 对 B 错 8 题、A 错 B 对 14 题、都做错 8 题。裸通过率 A=78%、B=84%,「B 高 6 个点」;但 McNemar 只看翻转:χ²=(|8−14|−1)²/(8+14)=25/22≈1.14 < 3.84,不显著——6pp 的裸差距里,不一致样本太少、方向性不够强,证据不足以支持「B 更好」。这个例子说明配对检验的判据是翻转样本的数量与方向比,而不是裸分差。

阿里门禁三件套。阿里对版本对比的统计口径要求(原文表述):

「门禁不只看差了多少,还要看差异是否超过统计噪声。」

落到纸面是三件事缺一不可:

  1. 置信区间:关键指标报告区间(比例用 Wilson,其余用 bootstrap),不报 CI 的点估计视为噪声;
  2. 显著性判断:与基线做配对检验,差异要能被证明不是抽样波动;
  3. 最小可感知变化(MPP):提前定义「提升多少才值得发布」。统计上能检出 0.5pp,不等于 0.5pp 值得一次发布风险——MPP 把「值不值」从统计问题还原为业务决策。

工作示例(lab08 完整复现了这个实验):

口径 v1=82%、v2=85%、n=100 同样 3pp、n=2000
单版本 CI(约) ±7.4pp,两区间大幅重叠 ±1.6pp
结论 不可判:差异远小于统计噪声 可判:差异超过噪声

同一个 3pp,样本量 20 倍之差,结论从「不能发布」变成「可以发布」。这就是门禁统计口径的意义:不是卡流程,而是把「信不信这个差异」变成可计算的量。

两个补充纪律:① 门禁同时看多个指标时,先指定一个主指标,其余按层级决策——m 个指标各自按 95% 单独判定,至少一项误报的概率是 1−0.95^m,会随指标数膨胀;② 显著性是「有没有差异」,MPP 是「值不值得」,两者都过才放行(见易错点 3)。

2.6 pass@k 与 pass^k 的统计学:估计、方差与重复实验设计

pass@k 的无偏估计量(HumanEval,2107.03374,OpenAI 2021):每题采样 n 个解、c 个通过,则

pass@k = 1 − C(n−c, k) / C(n, k)

它是「从 n 个解里无放回抽 k 个、至少一个通过」的组合概率,避免了「先抽 k 个再看是否通过」的点估计偏差。例:n=10、c=3 时,pass@1 = 0.3(与 c/n 一致),但 pass@2 = 1 − C(7,2)/C(10,2) = 53.3%——明显高于朴素的「30% × 2」。

pass@k 点估计的统计缺陷(2510.04265 的系统批判):

  • 每题样本数 n 常常很小(许多新 benchmark n=1~20),n<20 时 pass@k 点估计方差极大;
  • 不同 n、不同题目难度混合下的 pass@1 完全不可比——横向对比必须统一 n;
  • 替代方案:把每题通过率 p 视为随机变量,用 Beta 后验(如 Beta(c+1, n−c+1))刻画并聚合时传播不确定性,输出能力的后验分布而非单点分数;低样本设置下排序稳定性显著更好。
  • 务实共识:保留 pass@k 但必须附带 n 与 CI(bootstrap 或 Beta 近似),或同时报告低方差的平均通过率 avg@k。

pass^k:鲁棒性指标。pass^k = 同一任务独立运行 k 次全部成功的比例(τ-bench 2406.12045 系统提出,2024)。若各次尝试独立同分布、单任务成功率 p,则 pass^k ≈ p^k——衰减速度远超直觉:

p \ k 1 3 5 8
0.95 95% 85.7% 77.4% 66.3%
0.90 90% 72.9% 59.0% 43.0%
0.80 80% 51.2% 32.8% 16.8%

但不能拿 (平均 pass@1)^k 外推 pass^k。τ-bench 的实测数字(论文摘要转述口径):GPT-4o 在 retail 域 pass^1 ≈60%(官方榜单 60.4%),而 pass^8 ≈25%(摘要 <25%)——若按 iid 外推,0.60^8 ≈ 1.7%,与实测差出一个量级。原因有二:① 任务难度异质(部分任务几乎每次都对、部分几乎每次都错,pass^k 由「稳定会做的题」决定);② 各次尝试正相关(同类错误反复出现)。反过来,若系统存在上下文污染、残留状态、下游限流等破坏独立性的因素,实测 pass^k 也可能更差。结论:pass^k 必须实测,不能外推;报告时同时给 pass@1 与 pass^k,两者的差距就是系统方差的直接度量。工程惯例 k 取 4–8,τ-bench 的 k=8 成为行业标杆。

重复实验设计:N=3/5/8/10 怎么取舍

N 典型用途 代价与收益
3 最低可行重复:筛选候选变更、CI 冒烟 性价比拐点:3–5 次重复 + 均值/中位数聚合能显著降低排名翻转率(2509.24086)
5 腾讯评分规则的一致性口径(「N 次全达标取均值,建议 N=5」) 兼顾成本与稳定性,适合日常门禁
8 τ-bench pass^8 口径;DoorDash 全量 sweep = 50 场景 × 8 trials = 400 次对话(人工约 6 小时+,模拟器约 20 分钟) 可靠性发布指标的标准选择
10+ 高风险发布评估、对外论文级结论 边际收益递减,仅在方差估计本身要很准时用

两条依据:其一,单次运行的排名翻转概率不可忽略——在典型 benchmark 规模下,3–5 次重复 + 聚合能显著降低翻转率(2509.24086),这与 2410.03492、2504.07086 相互印证:重复次数是评测预算里性价比最高的一项,比重跑新 benchmark 便宜得多,却能直接消除排名噪声;其二,对 agent 这类高方差任务,预算应分配给「重复次数 + prompt 扰动」,而不是只堆新题目。内部评测平台的合理默认:num_repeats ≥ 3,报告均值 ± 区间。

动手:模拟 N 任务 × K 次重复的 agent 结果矩阵,亲眼看 pass@k 与 pass^k 随 K 分道扬镳—— cd evals-special/labs && python3 eval_lab01_metric_system.py

2.7 竞技场方法论:Bradley-Terry、tie 建模、bootstrap CI 与风格控制

Chatbot Arena 把偏好评测从「固定 benchmark」变成「众包配对比较」,也随之引入一整组统计问题:多少投票才够?分差多少算真?平局怎么办?风格偏好算不算偏差?这套方法论由四篇工作奠基(2403.04132、2412.18407、2406.11939、2404.04475)。

Bradley-Terry vs Elo。对每场对局 (i, j),BT 模型把胜率建模为潜在强度之比:

P(i 胜 j) = γᵢ / (γᵢ + γⱼ),γ > 0

用全部对局做极大似然估计(通常加先验/锚点约束防漂移),再换算到 Elo 尺度:Elo_i = 400·log10(γᵢ/γ_anchor) + Elo_anchor。而 Elo 是在线增量更新:Elo_i ← Elo_i + K·(outcome − expected),期望胜率 = 1/(1+10^(−ΔR/400))。两者是同一概率模型的两种算法:

维度 增量 Elo Bradley-Terry MLE
计算方式 序贯增量,每场更新 离线联合极大似然
结果依赖 依赖对局顺序、初始分、K 因子 顺序无关
统计推断 难以给出联合 CI / 假设检验 可做 bootstrap CI、协方差与渐近正态推断
适用 实时展示 正式排名与比较(LMSYS、Arena-Hard、leaderbot 的选择)

这就是 2024 年各家排行榜从 Elo 切换到 BT 的根本原因:Elo 只是 BT 的一种粗糙在线近似。Chatbot Arena(2403.04132,ICML 2024)论文发表时已有 240K+ 投票、90K+ 用户、50+ 模型,其最终方案就是 BT 评分 + bootstrap 置信区间(对投票数据有放回重抽样、重新拟合 BT、取分位数得 95% CI),BT 分数的 bootstrap CI 通常宽 5–15 Elo 分——媒体常把 2–5 分的差距宣称为「超越」,而这样的差距经常落在 CI 重叠区内。

Tie 不能丢。Arena 投票中约一成以上是平局,标准 BT 不支持 tie,三种处理方式的对比:

做法 问题
丢弃 tie 浪费 ~10% 数据,且平局若非随机出现会引入偏差
各记半分(half-win) 简单但没有概率模型支撑
tie 扩展模型:Rao-Kupper(带优势阈值)、Davidson(P(tie) ∝ 2ν√(γᵢγⱼ)) 有统计基础
factored tie model + 协方差估计(2412.18407) 显式建模「平局倾向」,并给出排名参数的协方差结构与渐近正态性——模型间分差可做正式假设检验,而不只是看 CI 是否重叠;开源实现 leaderbot

2412.18407 是竞技场方法论从工程实践到统计学的正式化。自建竞技场/内部偏好评测平台时,这是最值得直接抄的作业:BT MLE 替代增量 Elo;显式建模 tie;相邻排名的分差必须经联合协方差检验才能宣称显著。

排名有多脆弱?两项攻击性研究给出警告:

研究 发现 工程对策
丢票敏感性(2508.11847) 仅丢弃一小撮成对比较样本,顶部排名就可能改变——根源是顶部模型真实差距小 + 比较图稀疏(模型对交战不均) 均衡比较图:对头部模型对主动加权采样(active pairing)
投票操纵(2501.17858) 用影响函数识别「翻转哪些投票对排名影响最大」,少量操纵票即可实质性提升排名 投票审计、异常检测、对高影响力投票复核;排名指标不应成为唯一优化目标

风格控制回归(style control)。LLM judge 系统性偏好更长的回答,导致「把模型调啰嗦」就能刷分(verbosity hacking)。Length-Controlled AlpacaEval(2404.04475)的解法是回归去偏:

偏好 vote ~ β₀ + β₁·model + β₂·length + β₃·markdown + …

用逻辑回归拟合偏好后,把所有回答的长度等风格变量固定在参考值(如全体均值)时计算期望胜率(G-computation / 回归调整思想),得到 length-controlled win rate。效果:与 Chatbot Arena 的 Spearman 相关性从 0.94 提升到 0.98;verbosity 操纵带来的胜率增益从约 12% 压缩到约 3%。Chatbot Arena 随后引入 style control(多元逻辑回归控制长度、markdown 格式等混淆变量,见 LMSYS 2024-08 博客),并同时发布 overall 与 style-controlled 两个榜单——这等于承认「风格偏好是偏差还是真实用户偏好」取决于你要回答什么问题(学界争议,见 2.8 与第 E13 章)。Arena-Hard(2406.11939,ICML 2025)的 v2 同样引入 style control,其完整配方是「竞技场分布蒸馏 + 强 judge 成对比较 + BT 分数」:从 Arena 真实投票与 WildChat 中聚类蒸馏出 500 道高区分度题目(Arena-Hard-Auto),用强模型 judge 对候选模型 vs 基座模型做成对比较,再用 BT 把胜率升级成可比较的分数——与 Chatbot Arena 人类排名相关性 98.6%,区分度约为 MT-Bench 的 3 倍,成本 <$20。这是「离线自动评测对齐在线竞技场」的模板,其「固定一个参考模型、报告 BT 分数而非裸胜率」的做法被大量内部 eval 系统模仿。

工程结论:任何怀疑输出表面特征(长度、格式、emoji、代码块数量)与质量混淆的 judge 评测,都应做混淆变量回归检查——方法只是一个逻辑回归,却能把抗操纵性提升一个量级。

动手:纯标准库实现 BT 极大似然 + Elo + bootstrap 分差 CI + 风格控制,看朴素 BT 如何「把长当强」、修正后如何恢复真实排序—— cd evals-special/labs && python3 eval_lab11_arena_bradley_terry.py

2.8 噪声与可复现:方差清单、重复实验与 judge 报告规范

「temperature=0 + 固定 seed 所以结果确定」是常见误解。图灵研究所的实证研究(2410.03492)核心结论:即使 temperature=0 + 固定随机种子,模型输出仍可能不确定——批处理效应、底层 kernel、量化的非确定性都会让单次跑分不可复现。该工作还系统研究了重复次数、benchmark 规模、温度对分数均值与预测区间的影响,并提出低成本的分数不确定性量化方法(子集重抽样/重复实验的稀疏设计),让「给分数加误差条」不再昂贵。

可复现性控制清单(方差来源 → 动作):

方差来源 控制动作 报告要求
采样随机性 固定温度并写入配置 报告温度与 trial 数
推理栈非确定性 固定并记录推理引擎/批处理配置;重复 ≥3 次 报告重复次数与聚合方式(均值/中位数)
prompt 措辞 关键结论做 prompt 扰动检验(2505.22169 随机化评测) 报告扰动敏感性
judge 漂移 judge 版本锁定;升级后用人工校准集重估偏差 报告 judge 版本号
题目抽样 golden set 快照化、只增不减(第 E3 / E10 章) 报告数据集版本

重复实验的量化依据(2509.24086,与 2410.03492、2504.07086 互证):典型 benchmark 规模下,单次运行的排名翻转概率不可忽略;3–5 次重复 + 均值/中位数聚合能显著降低翻转率。延伸阅读中,2504.07086 主张 bootstrap 多次运行取均值来评估推理模型的进步;2512.07795 提出「Run Noise」指标专门分离重复运行的随机性;2502.05234 分析温度与多次采样聚合的方差权衡。争议的本质是成本:重复 3 次意味着 3 倍推理预算,对动辄数千美元的 agent 评测尤甚——但对比「基于单次运行做出错误发布决策」的代价,这通常是最便宜的一笔保险。

judge 评测的统计报告规范(详见第 E5 章,此处给统计学骨架):

观测 judge 分数 = 真实分数 + judge 偏差(bias) + judge 噪声(variance)

How to Correctly Report LLM-as-a-Judge Evaluations(2511.21140)指出:直接报告 judge 原始准确率/胜率会混入偏差与噪声,不同 judge 的分数不可直接比较;应使用偏差校正估计量——用一个小规模人工标注校准集(几百条)估计 judge 的混淆结构/偏差,对被评模型的真实胜率做校正,并构造 CI。judge 升级/换型后偏差参数需重估;多 judge 面板的收益取决于 judge 间错误相关性(相关错误不随面板规模下降)。同时记住理论下界(2410.13341,ICLR 2025):在前沿任务上 judge 评测的误差随样本量下降存在理论极限,靠 judge 做评测最多相当于「把人类标注数据翻倍」的收益量级——judge 适合扩大覆盖,不能替代高质量人工校准集;前沿模型的评测必须保留人工锚点(第 E6 章)。阿里口径与此一致:judge 与人工复核一致率约 85%(参考值)后才进日常自动化,且每次 judge 升级固定产出「与人工一致性 / 高风险漏判率 / 边界样本稳定性」三项统计。

报告纪律汇总(评测报告的最小检查表):

  1. 一切分数带 CI:二项比例用 Wilson;成对胜率/排名用 bootstrap(按评测单元重抽样,B≥500);
  2. 版本比较用配对设计(McNemar 或配对 bootstrap),不用两个独立点估计的肉眼对比;
  3. pass@k 必须报 n,统一各模型的采样预算;题目少时用 Beta 后验区间;
  4. 重复 ≥3 次,报告均值 ± 区间;temperature=0 + seed 也要重复;
  5. 样本量在评测前用公式/先导实验规划,而不是跑完再看;
  6. 竞技场式排名用 BT MLE + tie 模型 + 均衡比较图 + style control;
  7. judge 分数报告偏差校正后的值与 CI,附 judge 版本与校准集状态;
  8. CI 重叠的排名视为统计上不可区分,向业务方给「不可区分组」而非精确名次。

面试计算速查表(第四节计算题的公式都在这里):

问题 公式
通过率 CI Wilson:(p̂ + z²/2n ± z√(p̂(1−p̂)/n + z²/4n²)) / (1 + z²/n)
估计精度所需样本 n ≥ z²·p(1−p)/ε²
两版本比较样本 每组 n ≈ (z_{α/2}+z_β)²·2p̄(1−p̄)/δ²
先导法反解样本 n ≥ (z_{α/2}·σ̂/ε)²(ReliableEval 2505.22169)
配对检验 McNemar:χ² = (\ b−c\ −1)²/(b+c)
pass@k 无偏估计 1 − C(n−c, k)/C(n, k)(2107.03374)
pass^k(iid) ≈ p^k(不可用平均值外推,须实测)
BT→Elo Elo_i = 400·log10(γᵢ/γ_anchor) + Elo_anchor

三、面试高频考点

# 考点 分级 一句话考察意图
1 通过率的置信区间:Wald 的缺陷与 Wilson 区间 ⭐ 知不知道「分数要带误差条」,能否说出 Wilson 为什么端点不越界
2 样本量公式 n ≥ z²p(1−p)/ε² 与 1/δ² 定律 ⭐⭐ 能否现场反解「要 ±2pp 精度需要多少题」,是否理解评测成本与分辨率的平方关系
3 配对设计与 McNemar 检验 ⭐⭐ 是否知道两版本对比必须同题集、只看判定不一致的样本
4 阿里门禁三件套:CI + 显著性 + 最小可感知变化(MPP) ⭐⭐⭐ 是否理解「差异要超过统计噪声」且「统计显著 ≠ 值得发布」
5 bootstrap 的正确用法:按评测单元重抽样、bootstrap 分差而非比 CI 重叠 ⭐⭐ 会不会用 bootstrap 给任意指标加误差条,知不知道常见误用
6 pass@k 无偏估计量与「必须报 n」 ⭐⭐ 能否写出 1−C(n−c,k)/C(n,k),是否知道不同 n 的 pass@k 不可比
7 pass^k 的 iid 假设与「不可从 pass@1 外推」 ⭐⭐ 能否用 τ-bench 60%→25% 说明实测必要性,能否说出独立性被破坏的机制
8 Bradley-Terry vs Elo:为什么业界切换 ⭐⭐ 知不知道 Elo 顺序依赖、BT 是联合 MLE,能否写出 P(i≻j)=γᵢ/(γᵢ+γⱼ)
9 Tie 的处理与 factored tie model ⭐⭐⭐ 是否理解丢 tie/半分各有偏差,知道 2412.18407 的协方差检验
10 temperature=0 仍非确定、重复 ≥3 次 ⭐ 是否知道批处理/kernel 非确定性,能否说出重复次数是性价比最高的预算项
11 风格控制回归(LC-AlpacaEval、Arena style control) ⭐⭐ 能否解释 verbosity hacking 与回归去偏原理,能否报出 0.94→0.98
12 judge 偏差校正与样本效率下界 ⭐⭐⭐ 是否理解「观测=真实+偏差+噪声」,知道 judge 不能无限替代人工标注(2410.13341)
13 竞技场排名的脆弱性:丢票敏感与投票操纵 ⭐⭐⭐ 有没有「排名是激励面、会被攻击」的意识,知不知道比较图均衡

四、经典面试题与参考答案

题 1(基础):什么是置信区间?为什么评测通过率推荐 Wilson 区间而不是 p̂±1.96·SE?

参考答案: 通过率 p̂=X/n 是从有限评测集算出的统计量,会随抽样波动;置信区间给出「真实通过率大概率落在的范围」——95% CI 的含义是:重复做实验,约 95% 的区间会盖住真值。朴素的 Wald 区间 p̂±1.96·√(p̂(1−p̂)/n) 有两个致命伤:① 端点越界——n=20 全失败时给出 [0,0],声称真通过率精确为 0,而其实际上界按三三法则约 3/n≈15%;② 小样本/极端比例下实际覆盖率远低于名义 95%,制造假安全感。Wilson 区间是得分检验的反转:中心把 p̂ 向 1/2 收缩(权重 z²/n,n 越小收缩越强),端点永远落在 [0,1],小样本覆盖率接近名义水平。所以报告二项比例一律用 Wilson;只有大样本、p̂ 远离 0/1 时两者才近似一致。

题 2(基础 · 计算):Golden set 100 条,通过 85 条。给出通过率的 95% Wilson 置信区间,并解释它对版本对比意味着什么。

参考答案: 代公式:z²=3.84,中心 =(0.85+0.0192)/(1.0384)≈0.837,半宽 =1.96·√(0.001275+0.000096)/1.0384≈0.070,得 [76.7%, 90.7%](Wald 会给出 [78.0%, 92.0%],略窄且位置偏高)。含义有三:① 真实通过率可能低至 ~77%——点估计 85% 附近 ±8 个点都与数据相容;② 若发布门槛是 90%,区间上端刚触线、下端差很远,不能宣称达标,需要扩样本或改进系统;③ 若另一版本跑出 82%,其 CI 约 [73.3%, 88.3%],两区间大幅重叠——3 个点的差距在 n=100 下不可判,要做配对检验或直接扩到千级样本。这道题的口算关键:n=100、p≈0.8 时标准误约 4 个点,95% 半宽约 8 个点,记住这个量级就能快速应对一切变体。

题 3(基础):temperature=0 且固定了随机种子,评测结果就完全可复现了吗?为什么仍要多次重复?

参考答案: 不是。随机源至少有三层:① 采样随机性(temperature>0)——这一层确实被 temperature=0 消除;② 推理栈的非确定性——批处理效应、底层 kernel、量化数值误差会让同样的输入在不同 batch 组成/并发顺序下得到不同输出,图灵研究所的实证(2410.03492)确认即使 temperature=0+固定种子,单次跑分仍可能不可复现;③ 评测环境层——工具返回漂移、上下文组装差异(第 E8 章 fixtures 解决的就是这个)。所以重复实验不可省:2509.24086 显示典型 benchmark 规模下单次运行的排名翻转概率不可忽略,3–5 次重复 + 均值/中位数聚合能显著降低翻转率。工程默认:固定并记录种子与推理栈版本、num_repeats≥3、报告均值 ± 区间——重复次数是评测预算里性价比最高的一项。

题 4(进阶 · 计算):基线通过率 80%,想检出新版 prompt 的 5pp 提升(α=0.05 双侧,功效 0.8)。需要多大的评测集?如果预算只够 300 条,怎么办?

参考答案: 双比例样本量公式:每组 n ≈ (z_{α/2}+z_β)²·2p̄(1−p̄)/δ²,其中 p̄=(0.80+0.85)/2=0.825,(1.96+0.84)²≈7.85,得 n≈7.85×2×0.825×0.175/0.0025≈907,加连续性修正约 1000 条/版本(与第 E2 章门禁口径的速查表一致)。预算只有 300 条时四个选项:① 配对设计——两版本跑同一批 300 题,用 McNemar 检验,题目难度被钉死后检出力显著提高,300 条在差异较大(如 ≥8pp)时可用;② 提高 MPP——把「值得发布的门槛」从 5pp 放宽到 ~10pp(n≈250 即可检出),接受小提升不上线;③ 先导法(ReliableEval 2505.22169)——先用 ~30 条先导集估方差,确认真实方差比二项假设小再定规模;④ 诚实地向业务方报告:300 条的分辨率就是 ±5pp 量级,小于此的差异「测不出来」而不是「没有」。核心态度:样本量是评测前算出来的,不是跑完后后悔出来的。

题 5(进阶):评测报告显示 v1 82%、v2 85%(n=100),PM 说「提升了 3 个点,发布吧」。你怎么回应?

参考答案: 三步。第一步,定量拒绝:n=100、p≈0.83 时标准误约 3.7pp,95% CI 半宽约 ±7.4pp,两版本区间大幅重叠——3pp 完全在统计噪声内,当前数据不支持「v2 更好」。第二步,给正确方法:让 v1、v2 跑同一批 100 题做配对比较,用 McNemar 检验只看判定翻转的题;若翻转样本中 v2 赢的显著多于 v1 输的才算有信号。第三步,给决策框架(阿里门禁三件套):即使统计显著,还要过最小可感知变化(MPP)——如果业务上 3pp 不值得一次发布风险,就事先把 MPP 定为 5pp;要可靠检出 3pp 需约 2800 条/组(配对可更少),把「扩评测集到千级」或「接受小提升不发布」两个成本显式摆出来。一句话:门禁不只看差了多少,还要看差异是否超过统计噪声(阿里),这个案例的答案是「现在不能发,数据不够」。

题 6(进阶):pass@k 和 pass^k 有什么区别?为什么 pass^k 不能用 (pass@1)^k 外推?τ-bench 的数字说明了什么?

参考答案: pass@k = k 次尝试至少一次成功,度量能力上限;pass^k = k 次全部成功,度量生产可靠性——用户不会接受「多试几次总有一次成」,支付/退款类场景必须看后者。pass@k 要报无偏估计量 1−C(n−c,k)/C(n,k)(HumanEval,2107.03374),并附每题采样数 n——n<20 时点估计方差极大,不同 n 的结果不可比(2510.04265)。pass^k 在「独立同分布」假设下 ≈ p^k(p=0.9、k=8 时只剩 43%),但真实系统不能用平均值外推:τ-bench(2406.12045)实测 GPT-4o retail 域 pass^1≈60%、pass^8≈25%,而 0.60^8≈1.7%——差一个量级,因为任务难度异质(会做的题每次都做对)且各次尝试相关。反方向上,上下文污染、残留状态、限流也会破坏独立性。所以 pass^k 必须实测:工程惯例 k 取 4–8,重复 N 的取舍是 3 次起步筛选、5 次日常门禁(腾讯口径)、8 次发布级可靠性(τ-bench / DoorDash sweep 口径)。

题 7(进阶):为什么 Chatbot Arena 用 Bradley-Terry 而不是 Elo?平局(tie)应该怎么处理?相邻两名分差 4 分能宣称「超越」吗?

参考答案: 两者是同一概率模型 P(i≻j)=γᵢ/(γᵢ+γⱼ) 的两种算法:Elo 是在线增量近似,结果依赖对局顺序、初始分与 K 因子,只适合实时展示;BT 是全部对局的联合极大似然,顺序无关,且能做统计推断——这是 LMSYS 从增量 Elo 切到 BT+bootstrap CI 的根本原因(2403.04132,ICML 2024)。Tie 不能丢也不能简单记半分:Arena 投票中约一成以上是平局,丢弃浪费数据且若非随机会引入偏差,半分无概率模型支撑;正确做法是用 tie 扩展模型(Davidson:P(tie)∝2ν√(γᵢγⱼ);或 2412.18407 的 factored tie model,还给排名参数估计协方差,支持正式假设检验;开源 leaderbot)。4 分的分差:Arena 的 BT bootstrap CI 通常宽 5–15 Elo,4 分大概率落在重叠区——CI 重叠的相邻排名应视为统计上不可区分,对外应报告「不可区分组」;2508.11847 还显示丢弃一小撮对局就可能翻转顶部排名,所以结论要同时看 CI 与比较图覆盖是否均衡。

题 8(进阶):自动评测器被「长答案」刷分了——模型输出越来越啰嗦,分数水涨船高。如何诊断与治理?

参考答案: 这是 verbosity hacking,本质是 judge 的长度偏好被当成了质量信号。诊断:① 画「judge 分数 vs 输出长度」散点/分桶图,看相关性;② 抽样人工复核长答案,确认长度增益是否对应真实质量;③ 对比同一批回答在长度截断前后的胜率变化。治理的标准解法是风格控制回归(Length-Controlled AlpacaEval,2404.04475):用逻辑回归拟合 偏好 ~ β₀+β₁·model+β₂·length+β₃·markdown+…,然后把长度固定在参考值(如全体均值)计算期望胜率——即 length-controlled win rate(G-computation 思想)。效果量化:AlpacaEval 与 Chatbot Arena 的 Spearman 相关性从 0.94 升到 0.98,verbosity 操纵的胜率增益从 ~12% 压到 ~3%。工程上:任何 judge 指标都应做混淆变量回归检查(长度、格式、emoji、代码块),至少并行发布风格控制后的口径;Arena-Hard v2(2406.11939)也把 style control 作为标配与 Arena 的 style-controlled 排名对齐。注意争议面:风格偏好也可能是真实用户体验的一部分,所以 LMSYS 同时发布 overall 与 style-controlled 两榜——指标必须声明自己的语义。

题 9(系统设计):为一个客服 agent 设计一套统计上严谨的评测与发布门禁。现有 100 条 golden set、一个 LLM judge、每次全量评测预算有限。

参考答案: 分五层设计。① 估计与报数:通过率一律 Wilson CI;非比例指标(延迟分位数、成本)用 bootstrap(B≥500,按会话重抽样);judge 分数先经人工校准集做偏差校正再报(2511.21140),judge 与人工一致率达到公司口径(如阿里 ~85%)才进自动化。② 重复设计:每条用例跑 N 次——日常迭代 N=3~5(成本与翻转率折中),发布评估 N=8(τ-bench/DoorDash 口径);报告 pass@1 与 pass^k 双指标,pass^k 实测不外推;不可逆操作(退款)类场景 pass^k + P0 风险样本 0 失败。③ 样本量规划:100 条的分辨率是 ±8pp,只够门禁拦截大退化;要检出 5pp 的版本差异,用配对设计(同题集 + McNemar)把需求压低,或扩集到 ~1000 条(1/δ² 定律:3pp 需 ~2800 条/组);扩集前先跑 10% 先导集估方差(ReliableEval 矩方法)。④ 门禁决策规则(阿里三件套):P0 硬约束(风险样本 0 失败)先过 → P1 统计比较:配对检验显著 + 差异 CI 不盖 0 + 超过事先定义的 MPP → 放行;多指标时指定主指标防多重比较膨胀。⑤ 运营纪律:judge 版本锁定、升级重校准;golden set 快照化只增不减;重复次数、种子、数据集版本全部写入报告;离线门禁通过后仍要线上灰度联动(第 E12 章)。预算有限时的优先级:重复次数 > 配对设计 > 扩题数——重复是性价比最高的一项(2509.24086)。


五、易错点 · 反直觉点

  1. 误区:temperature=0 + 固定 seed,跑分就完全确定了。 真相:批处理效应、底层 kernel、量化的非确定性仍在,单次跑分照样不可复现(2410.03492 实证)。记忆锚点:固定种子≠固定输出,重复实验是最后一道防线。
  2. 误区:两个模型的 CI 不重叠才算显著,重叠就是不显著。 真相:比较两个独立 CI 的重叠是既保守又口径错误的近似;正确做法是配对设计后直接 bootstrap「分差」看是否盖住 0,或用 2412.18407 的联合协方差检验。记忆锚点:判分差自己的 CI,别拿两个区间比重叠。
  3. 误区:统计显著 = 值得发布。 真相:样本够大时 0.3pp 的差异也能显著,但可能完全不值得一次发布风险;阿里门禁要求显著性与最小可感知变化(MPP)同时满足。记忆锚点:显著性回答「有没有差」,MPP 回答「值不值得」。
  4. 误区:平局(tie)可以丢弃或各记半分。 真相:Arena 投票中 tie 占一成以上,丢弃浪费数据且非随机缺失时引入偏差,半分没有概率模型支撑;应使用 Davidson/Rao-Kupper 或 factored tie 模型(2412.18407)。记忆锚点:每十票就有一票平局,丢 tie 等于篡改数据。
  5. 误区:pass@k 直接跨模型、跨 benchmark 比较。 真相:pass@k 的方差强烈依赖每题采样数 n,n<20 时点估计基本不可信,不同 n 的结果完全不可比(2510.04265);必须统一 n 并附 CI。记忆锚点:不带 n 的 pass@k 是裸奔的分数。
  6. 误区:30 题的竞赛集能区分前沿模型。 真相:n=30、p=0.5 时 95% CI 半宽约 ±18pp,这个分辨率下两个模型的分数差异几乎都在噪声内;业界经验是 ~1000 题起步才有基本功效。记忆锚点:30 题的尺子,刻度是 ±18 个点。
  7. 误区:pass^k ≈ (平均 pass@1)^k,可以外推。 真相:任务难度异质 + 尝试间相关让实测 pass^k 与 iid 外推差出一个量级——τ-bench 实测 61%→25%(k=8),而 0.61^8≈2%。pass^k 必须实测。记忆锚点:p^k 是物理课的公式,pass^k 是实验课的测量。
  8. 误区:增量 Elo 是模型的最终实力分。 真相:增量 Elo 依赖对局顺序、初始分与 K 因子,只是 BT 的粗糙在线近似;正式排名用 BT 联合 MLE + bootstrap CI,这也是 LMSYS 切换的原因(2403.04132)。记忆锚点:Elo 看顺序,BT 看全局。
  9. 误区:judge 的原始分数可以跨模型、跨版本直接比较。 真相:观测 judge 分数 = 真实分数 + 偏差 + 噪声,不同 judge 口径不同;必须用人工校准集估计偏差、报告校正后的分数与 CI(2511.21140),judge 升级后偏差参数重估。记忆锚点:judge 分数是仪表读数,先校准仪表再读数。
  10. 误区:跑一次就够了,重复实验是浪费预算。 真相:单次运行的排名翻转概率不可忽略,3–5 次重复 + 聚合能显著降低翻转率(2509.24086);重复比重建新题集便宜得多。记忆锚点:重复 3 次,是最便宜的严谨。

六、推荐资源

核心论文(全部来自 _research/04-statistics.md 已核实清单):

arxiv 标题 时间 本章用到
2403.04132 Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference(ICML 2024) 2024-03 BT+bootstrap CI 成为行业标配;240K+ 投票、CI 宽 5–15 Elo
2412.18407 A Statistical Framework for Ranking LLM-Based Chatbots 2024-12 factored tie model、协方差与假设检验、leaderbot
2406.11939 From Crowdsourced Data to High-Quality Benchmarks: Arena-Hard and BenchBuilder Pipeline(ICML 2025) 2024-06 BT-from-win-rates、style control、98.6% 相关性、成本 <$20
2404.04475 Length-Controlled AlpacaEval: A Simple Way to Debias Automatic Evaluators 2024-04 回归式长度去偏;0.94→0.98、verbosity 增益 12%→3%
2410.03492 Towards Reproducible LLM Evaluation: Quantifying Uncertainty in LLM Benchmark Scores 2024-10 temperature=0 非确定性;低成本不确定性量化
2505.22169 ReliableEval: A Recipe for Stochastic LLM Evaluation via Method of Moments(EMNLP 2025 Findings) 2025-05 矩方法反解样本量;随机化评测
2410.13341 Limits to Scalable Evaluation at the Frontier: LLM as Judge Won't Beat Twice the Data(ICLR 2025) 2024-10 judge 样本效率理论下界
2511.21140 How to Correctly Report LLM-as-a-Judge Evaluations 2025-11 偏差校正估计量 + CI 的报告规范
2510.04265 Don't Pass@k: A Bayesian Framework for Large Language Model Evaluation 2025-10 pass@k 统计缺陷与 Beta 后验替代
2509.24086 Do Repetitions Matter? Strengthening Reliability in LLM Evaluations 2025-09 重复 3–5 次显著降低排名翻转率
2508.11847 Dropping Just a Handful of Preferences Can Change Top LLM Rankings 2025-08 BT 排名的丢票敏感性;比较图均衡
2501.17858 Improving Your Model Ranking on Chatbot Arena by Vote Rigging 2025-01 影响函数投票操纵与防御

背景奠基:HumanEval 与 pass@k 无偏估计量(2107.03374,OpenAI,2021);Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena(2306.05685,NeurIPS 2023,GPT-4 judge 与人类一致性 80%+,接近人类间 ~81%);Bradley & Terry (1952)、Elo (1978)、Koehn (2004) 配对 bootstrap 显著性检验(经典文献);τ-bench 与 pass^k(2406.12045,Sierra,2024)。

延伸阅读(素材已交叉确认):WildBench(2406.04770,2024,WB-Reward/WB-Penalty + 不确定性报告);A Sober Look at Progress in Language Model Reasoning(2504.07086,2025,主张 bootstrap 多次运行取均值);Optimizing Temperature for Language Models with Multi-sample Aggregation(2502.05234,2025);A Bayesian Approach to Limited-Sample Challenges(2504.21303,2025);Benchmarking the (In)Stability of LLM Reasoning(2512.07795,提出 Run Noise 指标);Efficient Evaluation of LLM Performance with Statistical Guarantees(2601.20251,2026,有限总体推断/主动查询、固定预算下 ~5x 等效样本增益——素材标注为仅搜索结果交叉确认,引用需谨慎)。

工程博客与开源:LMSYS「Does style matter?」(2024-08-28,style control 官方说明);Arena.ai「Statistical Extensions of the Bradley-Terry and Elo Models」;Cameron Wolfe「Applying Statistics to LLM Evaluations」;开源包 leaderbot(BT+tie 模型工程化)、AlpacaEval(LC win rate)、Arena-Hard-Auto(500 题蒸馏集)。

动手 labs(纯标准库、固定种子、可复现):

lab 你将验证 运行
eval_lab08_statistics_ci.py Wilson vs Wald 覆盖率模拟、bootstrap、样本量速查表、配对比较「N=100 不可判 / N=2000 可判」 cd evals-special/labs && python3 eval_lab08_statistics_ci.py
eval_lab11_arena_bradley_terry.py BT 极大似然 vs Elo、bootstrap 分差 CI、风格控制恢复真实排序 cd evals-special/labs && python3 eval_lab11_arena_bradley_terry.py
eval_lab01_metric_system.py pass@k 无偏估计、pass@k 与 pass^k 随 K 分道扬镳 cd evals-special/labs && python3 eval_lab01_metric_system.py
eval_lab05_judge_calibration.py judge 一致率 / kappa / 校准迭代(2.8 报告规范的配套实验) cd evals-special/labs && python3 eval_lab05_judge_calibration.py

章节交叉引用:指标的分层与统计口径要求(第 E2 章 · 评估指标体系);judge 偏差与校准全流程(第 E5 章 · 评分层之二:LLM-as-Judge 深入);人工校准集与标注一致性(第 E6 章);pass^k 与仿真评测的运行成本(第 E8 章 · 对话 Agent 与仿真评测);门禁在 EDD 循环中的位置(第 E10 章 · 评测驱动开发);Arena 与静态 benchmark 的选型(第 E13 章 · Benchmark 全景与前沿争议);主手册第 8 章 · Agent 评估与可观测性(统计与可靠性一节的浓缩版)。

第 10 章 / 共 15 章

评测驱动开发(EDD)

📌 本章导航(6 节)

一句话导读:评测体系建好之后,真正的难题是把它"嵌进开发流程",让每一次改动都被评测看见、每一个失败都变成资产。 EDD(Eval-Driven Development)就是 GenAI 版的 TDD:不试图预测所有失败,而是发现 → 捕获 → 反复检查失败模式(Airbnb 定义)。 学完本章你能得到:Airbnb 五原则与 100 样本精读法、一次一变量的迭代纪律、capability/regression 双套件与 CI 门禁设计、 EDDOps 学术过程模型、DoorDash 失败回流闭环,以及"eval 作为优化目标函数"的前沿与治理。


一、知识图谱

评测驱动开发(EDD)
├─ 方法论:EDD 是什么
│   ├─ 定义:GenAI 版 TDD —— 发现→捕获→反复检查失败模式(Airbnb)
│   ├─ 无 EDD 的三大坑:虚假信心 / 未发现的回归 / 指标与产品脱节
│   └─ 学术成型:EDDOps 四阶段闭环(arxiv 2411.13768)
│       Plan → Build → Run(offline+online) → Analyze & Improve
├─ 习惯:日常怎么迭代
│   ├─ "When in doubt, look at your data":100 样本人工精读法
│   ├─ Airbnb 五原则:早定门槛 / 从错误推导指标 / 少而精 judge(3-5) / 人类终判者 / 产品持续参与
│   └─ 迭代纪律:一次只改一个变量(prompt → 模型 → serving 配置)
├─ 门禁:怎么放行
│   ├─ 套件二分:capability(起点低、指方向)vs regression(近满分、掉分阻断)
│   ├─ 门槛经验:确定性任务 100%、非确定性 ≥95%(Anthropic 口径,腾讯引用)
│   ├─ 统计口径:置信区间 + 显著性 + 最小可感知变化(阿里)
│   └─ 发布阶梯:offline → shadow → canary → A/B → monitoring
└─ 闭环:怎么增值
    ├─ 回归集治理:只增不减;能力用例稳定 100% "毕业"进回归集(腾讯)
    ├─ 失败回流:badcase → 用例 → 回归集(阿里入库标准,详见第 E11 章)
    ├─ DoorDash:失败按 rubric 聚类 → coding agent 调查 → Agent Skills 沉淀
    └─ eval 作为目标函数:DSPy → MIPROv2 → GEPA
你的问题 本章落点
EDD 是什么,与 TDD 差在哪 2.1
新功能从零起步该怎么走 2.2(五原则)、2.5(完整案例演练)
EDD 有没有学术化的过程模型 2.3(EDDOps)
prompt/模型版本怎么比才科学 2.4(一次一变量 + 统计口径,交叉第 E9 章)
judge 怎么校准到可以进 CI 2.5(交叉第 E5 章)
套件怎么分、门槛怎么定、CI 怎么跑 2.6
没有真实用户可测怎么办 2.7(交叉第 E8 章仿真评测)
失败了怎么闭环回去 2.7(交叉第 E11/E12 章)
让优化器自动搜 prompt 行不行 2.8(eval 作为目标函数与治理)

二、核心概念精讲

2.1 EDD 是什么:从"上线前检查点"到"迭代指南针"

定义(Airbnb):Eval-Driven Development 是 GenAI 版的测试驱动开发。传统 TDD 假设你能在写代码前 穷举失败条件;GenAI 系统做不到——输出不可预测、"正确"依赖判断、一次请求里的搜索/推理/外部动作/文本生成 每一环都可能独立失败。所以 EDD 的核心动作不是"预测所有失败",而是:

  1. 发现(discover):主动跑数据、读输出,找到真实的失败模式;
  2. 捕获(capture):把每个失败模式固化成可复跑的测试用例与 rubric;
  3. 反复检查(repeatedly check):让用例进 CI 与线上监控,每次变更都重新验证。

Anthropic 在《Demystifying evals for AI agents》(2026-01)中给出了同构的官方表述:先定义期望行为, 再开发 agent(eval 即规约),起步只需 20–50 个真实用例;OpenAI 的 evaluation best practices 同样明确建议 "从一开始就反复评测(eval-driven)、每次变更都跑 continuous evaluation"。

EDD 与 TDD 的对照(面试高频对比题):

维度 传统 TDD EDD
被测对象 确定性代码 模型 + prompt + 工具 + 检索 + serving 构成的系统
测试编写 先写断言,再写实现 先写期望行为(用例 + rubric + 判据),再调系统
期望输出 唯一确定值 允许多条合法路径;用 rubric/终态/分布描述
通过标准 断言完全成立 统计口径:通过率、pass^k、置信区间
回归语义 代码变更 模型/prompt/工具/serving 任一变更都可能回归
失败模式 可静态推演 必须从真实数据中挖掘(100 样本法)
测试资产 单元测试套件 golden set + 回归集 + judge 校准集 + 基线快照

没有 EDD 的三大坑(Airbnb 总结):

坑 表现 EDD 的解法
虚假信心 用一个浅层 helpfulness 分自我感觉良好 从观察到的真实错误推导指标,按维度拆 judge
未被发现的回归 改 prompt 后旧场景质量悄悄变差,无人知晓 回归集只增不减,PR 触发回归
指标与产品脱节 分数在涨,产品结果没动,浪费精力 尽早与产品伙伴定目标与上线门槛(launch gates)

一句话收束:评测在 EDD 里有四重身份——质量度量、发布门禁、迭代指南针、数据飞轮入口(展开见第 E1 章); EDD 的贡献是让后两重身份成为日常纪律,而不是上线前的一次性仪式。

2.2 Airbnb 五原则与核心习惯:When in doubt, look at your data

Airbnb 在点评摘要、客服、房东/房客消息、内部洞察等多个 GenAI 场景沉淀出 EDD 五原则(产品团队自定标准, 基础设施组提供共享工具与跨团队指南——是实践不是强制令):

# 原则 落地要点
1 尽早设定目标与上线门槛(launch gates) 即便门槛要在数据评审中才逐渐清晰,也要先立一个可被推翻的初版
2 从观察到的错误中推导指标 与跨职能伙伴共同制定;拒绝凭空设计的"万能 helpfulness"
3 用少而精的 judge 3–5 个经校准的评估器,好过一堆嘈杂的评估器
4 指定一个最终人类决策者 裁决"好 vs 坏"的争议,避免口径在多人间漂移
5 让产品伙伴持续参与 参与版本对比与错误诊断,评测是跨职能产品活动

核心习惯:"When in doubt, look at your data." 这是 Airbnb EDD 文化的第一习惯,具体化为 100 样本人工精读法:

跑约 100 个样本(真实或合成)
  → 人工逐条读输出与 trace(不是看平均分)
  → 找错误、归类错误模式(groundedness 失败?啰嗦?不当拒答?格式坏?)
  → 围绕这些失败模式建测试(程序化检查 + judge + gold 集)

为什么 100 条就够起步?因为它解决的不是"估计总体通过率"(那是统计学问题,见第 E9 章),而是 "枚举失败模式的种类"——失败模式的多样性在几十到一百条样本里就会大致显形,而每一种模式都值得一条测试。 Anthropic 的口径更激进:起步只需 20–50 个真实用例。Airbnb 十条要点中的第一条就是: 建复杂工具之前,先人工看输出与 trace。

Airbnb 十条要点速记(原文浓缩,面试可直接引用): ① 先人工看输出与 trace 再建复杂工具;② 避免泛化 helpfulness,瞄准真实产品失败;③ 从小标注集起步快速迭代; ④ 不做万能 judge,按维度拆分;⑤ judge 校准到高一致率后再信任;⑥ 代码检查 + 模型 judge + 人工评审结合; ⑦ gold set 必须含坏样本;⑧ 评整个系统(检索/工具/agent 路径);⑨ 上线前测试要在线上持续运行; ⑩ 评测是跨职能产品活动。

2.3 EDDOps:四阶段闭环的学术成型

EDD 从口号变成有过程模型与参考架构的工程学科,标志性工作是 《Evaluation-Driven Development and Operations of LLM Agents》(arxiv 2411.13768; v1 2024-11 首发,原题 "An Evaluation-Driven Approach to Designing LLM Agents";2025-11 v3 更名加入 Operations)。 作者团队来自 Adelaide University / CSIRO Data61 / UNSW,基于 134 篇学术文献 + 27 份工业灰色文献的多声源综述。

四阶段闭环:

阶段 内容 关键产物
Plan 评测计划版本化:范围、指标、切片(slice)、频率、升级规则、自适应触发条件 评测计划书(输入 = 用户目标 + 治理约束 + agent 初版设计)
Build 评测资产 = 标准基准 + 领域知识 + 专家用例 + 合成数据;每个用例带 provenance、oracle(判定标准)、slice 标签、运行模式 版本化测试目录
Run offline:批量基准、精选套件、轨迹回放、缺陷定位;online:生产信号、限流暴露(shadow/canary)、内联校验器、定时或异常触发的探针 offline + online 证据流、slice 级报告
Analyze & Improve 优先最小有效变更(prompt/路由/护栏/记忆),大改动(架构/工具契约/检索/模型)走受控 offline 再开发;所有变更版本化、回归重测 更新后的 safety case(证据支撑的安全论证)

三层参考架构:

Supply Chain Layer(评测意图与证据:评测为什么这么定、模型为什么这么选)
      ↓
Agent Layer(暴露可评测表面:prompt/工具/记忆可检视,结构化 trace)
      ↓
Operation Layer(Evaluation Backbone + Control Loop)
   证据库 = Evaluation Results / Test Cases / Safety Cases
   配 AgentOps 可观测性做触发、策略、回滚;连接 offline 证据与 online 信号

一组揭示学界/工业界错位的数字(EDDOps 综述统计,面试引用率极高的深水区素材):

口径 学术文献(134 篇) 工业灰色文献(27 份)
只做 pre-deployment 评测 93.28% —
覆盖 post-deployment 仅 2.24% —
持续评测 4.48% 40.74%
只看端到端指标 92.54% —
用静态基准 97.76% —
已用评测驱动适配 — 81.48%

结论:学术供给集中在"上线前 + 端到端 + 静态基准",而工业界近一半已转向持续评测—— EDD 的主战场在生命周期后半段,这正是本章与第 E12 章(在线评估与数据飞轮)的衔接点。 该论文还明确定义了 shadow evaluation(不暴露给用户的影子评测)与 canary rollout(小流量灰度)在框架中的位置, 验证案例为 LLM 报税助手(Tax Assistant)。

2.4 迭代纪律:一次只改一个变量

GenAI 系统可调的旋钮太多:prompt、模型、检索、工具描述、serving 配置。Airbnb 把迭代纪律总结为一句话: 一次只改一个变量,顺序是:

固定模型,只变 prompt → 固定 prompt,只变模型 → 两者都固定,只变 serving 配置

为什么必须如此:多变量并动时,分数变化无法归因——你不知道是 prompt 修好了错误,还是新模型恰好掩盖了它; 一旦某个版本在回归集上掉分,你甚至不知道该回滚哪个改动。这与 EDDOps 的"最小有效变更优先"完全一致: 先改 prompt/路由/护栏/记忆这类便宜可逆的旋钮,架构/工具契约/检索/模型这类大改动走受控的 offline 再开发。

judge 与候选的互相打磨:迭代不是单向的"judge 给候选打分"。Airbnb 的做法是—— judge 筛候选,顶尖候选反哺 judge 改进(优秀候选暴露 rubric 的盲区:它明明很好,judge 却没给分), 如此往复,直到 judge 与候选集双方稳定。

版本比较必须带统计口径(阿里):即便一次一变量,两个版本的分数差也可能是噪声。阿里的门禁要求 关键指标置信区间 + 与基线的显著性判断 + 最小可感知变化阈值(提前定义"提升多少才值得发布"): "门禁不只看差了多少,还要看差异是否超过统计噪声。"(统计工具:Wilson 区间、配对检验、样本量计算, 详见第 E9 章;动手实验:cd evals-special/labs && python3 eval_lab08_statistics_ci.py)

反例(面试常让你指错):某团队同一天把 prompt v2 和新底座模型一起上线,总分 +3 分,宣布成功。 两周后线上投诉上升,排查发现:新模型其实 -5 分,prompt v2 是 +8 分——但因为捆绑变更, 他们既错过了发现模型退化的机会,也无法单独保留 prompt 收益。捆绑变更 = 主动放弃归因。

2.5 完整案例演练:Airbnb 旅行客服政策问答助手

这是 Airbnb 博客给出的端到端 EDD 演练,四个阶段每一步都有数字,是回答"EDD 具体怎么做"的最佳模板。

阶段一:探索(100 样本精读)。跑 100 个真实/合成 prompt,人工读输出,归类出四种失败模式:

失败模式 数量/100 后续对应测试
groundedness 失败(回复不锚定政策/检索证据) 15 groundedness judge
答案正确但啰嗦 8 conciseness judge + 长度检查
不当拒答(该答不答) 5 拒答边界用例(正反例)
JSON 输出失败 3 程序化 schema 校验

阶段二:建测试。JSON 格式与长度用程序化检查(确定性优先,见第 E4 章);groundedness 与 conciseness 各建一个 judge("少而精":只建与观察到的失败对应的 judge);PM/SME 标注 60 条 gold 集,含失败样本 (坏样本是校准 judge 的关键——只喂好样本的校准集测不出 judge 会不会误杀)。

阶段三:校准。judge 初始与人工一致率 78%,过低,不能进自动化。分歧分析发现 judge 在 误罚"正确的改述"——答案语义正确但与参考答案字面不同,字面重叠式的 rubric 把它判错。 修订 rubric 与 few-shot 示例(放宽改述惩罚、加事实核对项)后一致率达 88%,进入自动化。 同期检索侧改进减少了 groundedness 失败。(完整校准流程、Cohen's kappa、阿里 ~85% 与腾讯 ≥85% 口径, 见第 E5 章;动手复现 78%→88%:cd evals-special/labs && python3 eval_lab05_judge_calibration.py)

阶段四:规模化与监控。评测集扩到 5,000 样本;每日抽样 5% 去标识化生产流量跑同一套检查与 judge; 被标记样本送人工复核;每周 PM 评审,产出新增测试与修复项。上线前的测试在线上持续运行—— EDD 的终点不是发布,而是运营。

把案例抽象成 EDD 循环:

   ┌──────────── 探索:100 样本精读,归类失败模式
   │                  ↓
   │          建测试:程序化检查 + 维度 judge + gold 集(含坏样本)
   │                  ↓
   │          校准:judge↔人工一致率 78% → 88%(改 rubric 不是改数据)
   │                  ↓
   │          门禁:进 CI,PR 触发回归;统计口径判版本差异
   │                  ↓
   └──── 回流 ← 监控:5,000 样本 + 每日 5% 线上抽样 + 每周 PM 评审

2.6 CI 门禁与回归集:capability 套件 vs regression 套件

EDD 的"门禁"环节回答:什么样的版本允许发布。核心是 Anthropic 提出的套件二分法(腾讯引用并落地):

维度 Capability 套件(能力评测) Regression 套件(回归评测)
回答的问题 "Agent 能把什么做好" "原有能力是否还在"
期望通过率 初始应偏低(20–50% 起步,腾讯口径) 接近满分(掉分即阻断)
角色 目标山峰:指引改进方向、主动拓展、频繁迭代 防御地板:拦截漂移,只增不减,CI 每次运行
失败的含义 正常,说明还有空间 事故信号,必须定位
异常信号 起步就接近满分 → 套件太容易,无区分度 0% 或 100% 之外的怪值 → 先查任务定义/评分器是否坏了(腾讯)

门槛数字(面试必答):腾讯引用 Anthropic 的推荐——确定性任务用例集整体通过率需 100%, 非确定性任务 ≥95%。腾讯自身的稳定性容忍阈值还按使用类型分级:关键决策类(问题定位/故障诊断) 0% 容忍(N 次全过,任何一次失败都可能误判);辅助分析类 ≤10%;创意生成类 ≤40%(建议 N=5)。 高风险不可逆场景(客服/支付/退款/合规)建议用 pass^k 作发布门槛:Anthropic 文档示例, 单任务成功率 p=0.75、k=3 时 pass^3 ≈ 0.75³ ≈ 42%——"看起来 75% 不错"的 agent,三连全对只有四成把握 (pass@k 与 pass^k 的数学与实验见第 E2 章;cd evals-special/labs && python3 eval_lab01_metric_system.py)。

用例毕业机制(腾讯独创):capability 用例通过率稳定 100% 后"毕业"进回归集——回归集像滚雪球一样 承接所有曾经攻克的能力;回归集只增不减。badcase 的标准旅程:复现并记录完整轨迹 → 分析根因定预期行为 → 修复 → 纳入用例集防回归 → 进能力集,稳定后毕业到回归集。(用例生命周期与入库标准的完整实现见第 E3 章; cd evals-special/labs && python3 eval_lab02_golden_dataset.py)

触发时机(腾讯):

触发 方式 目的
提示词变更 CI 自动,PR 合入前回归 拦住每一次 prompt 手改
模型版本升级 手动触发 验证兼容性(见 2.8 DoorDash 模型迁移案例)
定期巡检 定时全量回归 捕获环境/依赖的隐性漂移

门禁的质量本身依赖 grader 的质量:Anthropic 报告的 CORE-Bench 案例中,Opus 4.5 在修复了任务定义与 评分器缺陷之后成绩从 42% 跳到 95%——门禁红了一半的时候,先怀疑尺子再怀疑模型(详见易错点 6)。 另一个参照数字:SWE-bench Verified 一年内从 40% 涨到 80%+;创业公司 Bolt 约 3 个月建成 eval 体系。

门禁的成本与分层:全量 E2E 每次 PR 都跑对大团队可行(DoorDash:任何变更必须通过全部 50+ 个 eval, 5 分钟跑 200+ 场模拟对话),对小团队昂贵。折衷方案:分层门禁——单元层 grader/断言必过(秒级、确定性), 轨迹/结构层每日全量,E2E 模拟层抽样或按需触发(arxiv 2601.18827 提出"单元/集成/E2E 三级金字塔", 2604.27789 专门讨论门禁的计算开销与运维复杂度)。

2.7 仿真评测与失败回流:EDD 的"排练场"和"齿轮"

(1)为什么 EDD 离不开仿真:DoorDash 列出的评测挑战中有一条"无法安全彩排"——不能拿真用户试变更, 历史会话也不能对改过的 agent 重放(agent 变了,对话路径就不一样了)。解法是按需生成会话: LLM 模拟用户驱动 agent 跑场景,外围数据用 fixtures 冻结,同一场景每次运行条件一致 (详见第 E8 章;cd evals-special/labs && python3 eval_lab07_simulator_fixtures.py)。 学术侧的范式源头是 τ-bench(arxiv 2406.12045,2024-06,Sierra):LLM 用户模拟器 + 工具调用 + 数据库终态哈希做可验证判定 + pass^k 刻画可靠性;τ²-bench(arxiv 2506.07982)升级为双控 (用户侧也能执行工具动作)。

(2)仿真的成本账(DoorDash):全量回归 sweep = 50 场景 × 8 trials = 400 次对话; 人工本地聊约 1 分钟/次 → 6+ 小时;模拟器约 20 分钟。harness 建成后:质量信号从平均 1 条/天员工反馈 → 2,000 个/天自动评分会话;全国上线前 agent 质量分 +8 分、错误率近乎减半; 并支撑底座模型迁移(Claude Sonnet 4.6 → Gemini 3.5 Flash)实现延迟降 35%、质量无损。 DoorDash 的仿真评测飞轮还报告:一次触发跑完全流程,任何变更必须通过全部 50+ 个 eval 才能上线; 5 分钟内跑 200+ 场模拟对话;11 轮迭代(第 3 轮曾回落——回归是常态,门禁的价值正是抓住它); 模拟环境幻觉率下降约 90%;离线提升与线上真实流量表现一致。

(3)失败回流闭环(DoorDash 反馈闭环四步)——这是 EDD 从"评分板"升级为"迭代控制面"的关键:

  1. 失败聚类成主题:逐条看失败会"轶事驱动"(最近/最惊奇的失败主导修复)。rubric 标准天然是问题簇—— grounding 失败、缺替代品、糟糕叙述分开调查,失败列表变成按影响排序的主题列表;
  2. 从发现到解决:coding agent 检查失败 trace、相关代码路径、近期变更、历史调查; 修复明确时直接起草 PR;prompt/上下文类改动则产出诊断 + 建议供人审;
  3. Agent Skills 化:把 eval-driven 工作流(聚类失败、调查失败模式)打包成可重复、可复用、可改进的 Agent Skills——skill 分错簇或写出弱修复时,更新 skill 本身,而不是给一次性运行打补丁;
  4. harness 成为迭代的控制面(control plane for iteration):生产监控 + 失败聚类 + agent 辅助调查 + 发布前验证连成一环。

(badcase 如何结构化归因——RCA 五步、根因标签、行动项——见第 E11 章; cd evals-special/labs && python3 eval_lab09_rca_pipeline.py)

(4)回流入库的标准(阿里):不是每条线上失败都值得进回归集。入库五条标准: 失败可复现(或至少有稳定 trace + 人工确认)、期望行为明确(可写成规则/judge 标准/人工验收标准)、 根因标签清楚、样本有代表性(覆盖一类问题而非一次性环境抖动)、已脱敏合规。 一条 badcase 至少生产 3 类反馈(评测集 / 训练数据 / 知识修订),分三条生产线沉淀(详见第 E12 章数据飞轮)。 学术侧的对应样本是 Discord AITL(EMNLP'25 工业赛道,ACL Anthology 2025.emnlp-industry.135): 四类人工客服在线标注持续回流,把再训练周期从月级压缩到周级,美国试点 recall@75 +11.7%、precision@8 +14.8%、 有用性 +8.4%、采用率 +4.5%。

(5)仿真器本身也要被评测:模拟器质量直接决定下游评测效度——DAUS(arxiv 2402.13374,Amazon) 证明未经微调的通用 LLM 模拟器会偏离用户目标、幻觉出不存在的对话事实,需领域微调 + 受控解码; 隐式画像(arxiv 2502.18968)从真实日志反推 persona,与数据飞轮天然衔接;ChatChecker(arxiv 2507.16792) 强调非合作模拟(用户会不耐烦、跑题、改主意)——合作型模拟会系统性高估 agent。

2.8 eval 作为目标函数与发布阶梯

(1)从"eval 当裁判"到"eval 当目标":2024–2026 年 EDD 的一个重要演进是 prompt/程序优化器 直接以 eval 分数为搜索目标,形成"eval 定义 → 自动优化 → eval 门禁"的闭环:

系统 论文 机制 关键数字
DSPy arxiv 2310.03714(2023-10) LLM 程序声明为模块组合,eval metric + 少量标注编译出最优 few-shot/指令配置 eval-as-objective 闭环的奠基框架
MIPROv2 arxiv 2406.11695(2024-06) 贝叶斯优化搜索"指令提案 × 示例组合",数据感知提案 + 代理评分降本 30+ 任务相对最强基线平均约 +5%,部分任务最高约 13%
GEPA arxiv 2507.19457(2025-07) 反射式进化:采样轨迹 → 自然语言反思失败 → 变异 prompt → Pareto 前沿按切片保留候选(不只看平均分) 比 GRPO 强化学习平均高约 10%(最高 20%),rollouts 最多减少 35 倍,比 MIPROv2 高 10%+

工业落地:DoorDash 用 GEPA 做 judge 校准——迭代提出 judge prompt 修订,只保留在留出集上 提升与人工标注一致率的版本。GEPA 的 Pareto 选择还隐含一条评测设计原则:按切片(slice)看指标, 防止平均分掩盖退化——这与阿里分层指标、腾讯分组报告异曲同工。

(2)eval 成为目标后的新风险:eval 集既是测试又是优化目标,就会被拟合与污染。治理三件套: 留出集(优化不碰、只作终判)、定期换血(防记忆)、污染防护与 provenance(EDDOps 把 contamination safeguards 列为评测资产的必备属性)。另一个教训来自平台层:OpenAI 托管 Evals 平台 (2025 年随 AgentKit 推出)在 2026 年宣布下线(2026-10-31 转只读、2026-11-30 关闭)—— 评测资产(数据集 + grader + 用例定义)要用开放格式(JSON/YAML + 代码)托管在自家仓库,与平台解耦。 OpenAI evaluation best practices 给出的量化目标示例可作参考:摘要 ROUGE-L ≥ 0.40、G-Eval 连贯性 ≥ 80%、 文档问答 recall ≥ 0.85、precision ≥ 0.7、好评率 70%+。

(3)发布阶梯:offline → shadow → canary → A/B → monitoring。离线门禁只是第一道闸:

阶梯 做什么 来源定义
offline golden set + 回归集 + 能力集批量评测,统计口径判差异 各厂共识
shadow 新版本与旧版本并行处理同一输入,结果不暴露给用户,只对比差异 EDDOps 明确定义的 shadow evaluation
canary 小流量放量 + 在线指标/内联校验器 + 异常触发探针 EDDOps / 阿里灰度
A/B 会话级分流、序贯检验、护栏指标 主手册第 8 章
monitoring 持续抽样评测 + 漂移告警 第 E12 章

离线分数的正确定位是"必要不充分":arxiv 2510.22143(真实客服对话基准)明确指出,由于部署环境的 分布漂移与交互复杂性,强 offline 基准成绩只是部署可靠性的弱指标;而 DoorDash 的经验是离线提升能 兑现到线上,但前提是离线与线上用同一 rubric + 同一校准 judge(DoorDash 原则三:各自调 judge, 两边分数会以难调和的方式背离)。阿里的联动规则最硬:离线提升但线上关键信号恶化 → 触发回滚或降级, 线上信号包括转人工率、重复追问率、投诉率、满意度、任务完成率、工单闭环率。 arxiv 2603.15676 进一步主张"evidence-driven release":发布门禁不仅看分数,还看证据充分性—— 把评测证据(通过率、幻觉率、升级率)写进发布单。


三、面试高频考点

# 考点 分级 一句话考察意图
1 EDD 定义与 TDD 的关系 ⭐⭐⭐ 能否说清"发现→捕获→反复检查"而非预测所有失败
2 无 EDD 的三大坑 ⭐ 虚假信心/未发现回归/指标脱节,能否各举一个场景
3 Airbnb 五原则 ⭐⭐ 早定门槛、从错误推导指标、3–5 个 judge、人类终判、产品参与
4 100 样本人工精读法 ⭐⭐⭐ "When in doubt, look at your data"的具体操作与为什么有效
5 一次只改一个变量 ⭐⭐⭐ 归因前提;能否构造反例说明捆绑变更的代价
6 capability vs regression 套件 ⭐⭐⭐ 期望通过率为何一低一高;Anthropic/腾讯门槛数字
7 CI 门禁与回归集治理 ⭐⭐⭐ PR 触发、只增不减、毕业机制、确定性 100%/非确定性 ≥95%
8 judge 校准后才能进门禁 ⭐⭐ Airbnb 78%→88% 案例;阿里 ~85%、腾讯 ≥85% 口径
9 EDDOps 四阶段与学术-工业错位 ⭐⭐ Plan/Build/Run/Analyze;93% 学术停留在 pre-deployment
10 pass^k 作发布门槛 ⭐⭐ p=0.75 → pass^3≈42%;关键决策类 0% 容忍
11 仿真评测与 fixtures ⭐⭐ 无安全彩排 → 模拟器 + 冻结环境;DoorDash 50×8=400 对话账
12 失败回流闭环 ⭐⭐⭐ badcase→用例→回归集;DoorDash 聚类→coding agent→Agent Skills
13 eval 作为优化目标函数 ⭐ DSPy/MIPROv2/GEPA;过拟合治理(留出/换血/防污染)
14 offline-online gap 与发布阶梯 ⭐⭐ 离线必要不充分;shadow/canary/同一 rubric 同一 judge

四、经典面试题与参考答案

题 1(基础):什么是 EDD?它和传统 TDD 有什么异同?为什么 GenAI 特别需要它?

参考答案: EDD(Eval-Driven Development)是 GenAI 版 TDD。Airbnb 的定义是:不试图预测所有失败,而是 发现→捕获→反复检查失败模式——先定义期望行为(eval 即规约),再开发和调优系统,评测贯穿开发、 发布、运行全生命周期。与 TDD 的相同点是"测试先行、回归防护、资产沉淀"的纪律内核;不同点在于: 被测对象从确定性代码变成模型+prompt+工具+serving 的概率系统;期望输出从唯一值变成 rubric/终态/分布; 通过标准从断言成立变成统计口径(通过率、pass^k、置信区间);回归来源从代码变更扩展到任一组件变更。 GenAI 特别需要它,因为缺少 EDD 会掉进三个坑:虚假信心(浅层 helpfulness 分)、未被发现的回归 (改 prompt 后旧场景悄悄变差)、指标与产品脱节(分数涨但产品结果没动)。

题 2(基础):你的团队目前只在上线前"跑几条 case 感觉还行"。请指出风险,并给出引入 EDD 的最小起步方案。

参考答案: 风险有四:① 同一 prompt 跑通一次≠稳定可用(非确定性);② 每次改 prompt/模型/工具都可能改坏旧场景 且不易第一时间发现;③ 多步链路前段小偏差会被级联放大;④ 存在"结果对但路径错"的假阳性。 最小起步方案(不要求一步到位):1)100 样本精读——跑约 100 条真实/合成 prompt,人工读输出与 trace, 归类失败模式(Airbnb 口径;Anthropic 甚至说 20–50 个真实用例就能起步);2)围绕失败模式建测试: 能代码判的先代码判(schema/长度/关键词),语义维度建 1–3 个 judge;3)建 50–100 条 gold 集(含坏样本), 把 judge 校准到与人工一致率 ≥85%;4)把用例挂进 CI,PR 触发;5)指定一个人类终判者,拉产品伙伴每周评审错误。 关键话术:EDD 的起点不是平台,是习惯——"When in doubt, look at your data"。

题 3(进阶):请复述 Airbnb 旅行客服助手的 EDD 全流程,并说明每一步的产出物。

参考答案: 四阶段:① 探索:跑 100 个 prompt 人工精读,发现 15 个 groundedness 失败、8 个正确但啰嗦、 5 个不当拒答、3 个 JSON 失败——产出是失败模式清单;② 建测试:JSON 与长度用程序化检查, groundedness/conciseness 各建一个 judge,PM/SME 标注 60 条 gold 集(含失败样本)——产出是可复跑的测试资产; ③ 校准:judge 初始一致率 78% 过低,分歧分析发现 judge 误罚"正确的改述",修 rubric 与示例后达 88%; 同期检索改进减少 groundedness 失败——产出是可信的自动化评分器;④ 规模化与监控:扩到 5,000 样本、 每日抽样 5% 去标识化生产流量、被标记样本送人工、每周 PM 评审新增测试与修复——产出是持续运营的闭环。 加分点:指出该流程体现的原则——指标从观察到的错误推导(原则 2)、judge 少而精(原则 3)、 上线前测试在线上持续运行(十条要点之⑨)。

题 4(进阶):为什么 GenAI 迭代要"一次只改一个变量"?请设计一个违反该纪律的场景并说明后果。

参考答案: GenAI 系统有 prompt、模型、检索、工具、serving 配置多个旋钮,多变量并动时分数变化无法归因。 Airbnb 的纪律是严格排序:固定模型只变 prompt → 固定 prompt 只变模型 → 都固定只变 serving 配置; EDDOps 的表述是"最小有效变更优先"(先 prompt/路由/护栏/记忆,后架构/工具契约/检索/模型)。 反例:团队同日上线 prompt v2 + 新底座模型,总分 +3 分宣布成功;两周后投诉上升,拆解发现 prompt v2 实际 +8、新模型实际 -5——捆绑变更让他们既错过发现模型退化,也无法单独保留 prompt 收益, 回滚时更不知道回滚哪个。配套要求:版本比较要带统计口径(置信区间 + 显著性 + 最小可感知变化阈值, 阿里口径"门禁不只看差了多少,还看差异是否超过统计噪声"),否则单变量比较也会被噪声欺骗。

题 5(进阶):capability 套件与 regression 套件有什么区别?各自的通过率应该长什么样?如何设定发布门槛?

参考答案: 二者回答不同问题:capability 套件问"agent 能把什么做好",是目标山峰,初始通过率应偏低 (腾讯口径 20–50% 起步),用于指引改进方向、主动拓展、频繁迭代;regression 套件问"原有能力是否还在", 是防御地板,应接近满分,掉分即阻断,只增不减、CI 每次运行。若 capability 起步就接近满分说明套件无区分度; regression 出现 0%/100% 怪值先怀疑任务定义或评分器坏了(腾讯诊断经验)。发布门槛数字: Anthropic 推荐确定性任务用例集整体 100%、非确定性任务 ≥95%;腾讯按使用类型分级容忍: 关键决策类 0% 容忍、辅助分析类 ≤10%、创意生成类 ≤40%(N=5)。高风险不可逆场景用 pass^k 作门槛 (p=0.75 时 pass^3≈42%)。机制上配"毕业":capability 用例稳定 100% 后转入回归集,回归集滚雪球式承接。

题 6(进阶):你的 judge 与人工一致率停在 78%,团队认为"差不多能用",想直接进 CI。你怎么看?怎么排查?

参考答案: 不能进。未校准的 judge 会制造误导性信心——它系统性误判的样本会让 CI 的通过/失败与真实质量脱钩, 比没有门禁更危险。各厂口径一致:Airbnb 目标 high-80s~90s%,阿里 ~85% 后进自动化,腾讯 ≥85% 才可用。 排查步骤(Airbnb 案例就是模板):1)确认 gold 集含坏样本与边界样本(只喂好样本测不出误杀); 2)按错误类型分解分歧矩阵——78% 的缺口集中在哪类样本;3)典型发现:judge 在误罚"正确的改述" (字面重叠式 rubric 惩罚了语义正确的不同表述),或放过"流畅的错误";4)修 rubric 与 few-shot 示例 (放宽改述惩罚、加事实核对项),重跑到 ≥85%;5)进 CI 后仍要持续运营:judge prompt/模型升级时重新产出 三项统计(与人工一致性、高风险漏判率、边界稳定性),维护 judge 金标校准集。 (动手复现:cd evals-special/labs && python3 eval_lab05_judge_calibration.py)

题 7(进阶):CI 回归集中一条原本稳定通过的用例这次失败了。给出你的排查路径与"是否阻断合并"的判断依据。

参考答案: 按"先怀疑尺子、再怀疑环境、最后怀疑代码"的顺序:① 评分器自身——judge 模型/prompt 是否升级、 rubric 是否改过(Anthropic 的 CORE-Bench 案例:修复任务与评分器后 Opus 4.5 从 42%→95%,尺子坏的代价极大); ② 环境漂移——工具返回、外部数据、mock 是否与生产分叉(mock drift),用例是否依赖了时变状态; ③ 非确定性——重跑 N 次看是否 flaky(腾讯:N=5 中 1/5 失败=存在幻觉按类型判断,5/5 失败才是稳定失败); ④ 真实回归——以上都排除,才认定本次变更引入回归,定位到具体 diff。阻断判断:regression 套件的 设计语义就是"掉分即阻断",确认是真实回归必须 block;若确认是 flaky/评分器问题,隔离该用例并记录, 不让噪声长期阻塞开发,也不假装噪声不存在。无论哪种结论,处理过程要沉淀:真实回归修复后该用例继续守门, 评分器问题则修 judge 并重新校准——回归集的每一次报警都是体系变厚的机会。

题 8(系统设计):为一个从零开始的客服 Agent 设计 EDD 落地方案(含 90 天路线图、套件设计、CI 门禁与闭环运营)。

参考答案: 分三个阶段。0–30 天(立习惯):100 样本人工精读归类失败模式;与产品定北极星指标与 launch gates (Airbnb 原则 1/5);建 50–200 条 golden set 覆盖核心路径与高风险边界(含负向用例:不当拒答/过度触发/越权); 程序化检查(schema/长度/关键词/工具断言)先行,语义维度建 3–5 个 judge;标注 50–100 gold(含坏样本) 校准 judge 到 ≥85%;指定一名人类终判者。30–60 天(立门禁):套件二分——capability 套件 (起步 20–50%,指方向)+ regression 套件(近满分,掉分阻断);CI 接入:prompt 变更 PR 触发回归、 模型升级手动验证兼容性、每周全量巡检;门槛:确定性 100%/非确定性 ≥95%,关键决策类用 pass^k(k=3~8), 版本比较带置信区间与最小可感知变化阈值;分层控制成本:断言层每次 PR、轨迹层每日、E2E 模拟按需 (模拟器 + fixtures 冻结外部状态,50 场景 × 8 trials 参考 DoorDash 20 分钟跑完)。60–90 天(立闭环): 每日抽样 5% 去标识化生产流量跑同一 rubric + 同一校准 judge(离线线上同口径);失败按 rubric 标准聚类, 高影响簇转 badcase 任务:RCA 定根因 → 修 → 入库防回归(入库五标准:可复现/期望明确/根因清楚/代表性/已脱敏); capability 用例稳定 100% 毕业进回归集;每周 PM 评审错误与新增测试。发布走 offline → shadow → canary → A/B 阶梯,离线升线上降即回滚。90 天的交付物:可复跑的用例库、judge 校准集、回归集、CI 流水线、每周评审机制。

题 9(系统设计):团队想用 GEPA/MIPROv2 类优化器以 eval 分数为目标自动搜索 prompt。请评估收益与风险,并给出治理方案。

参考答案: 收益:把 EDD 的"人工调 prompt"升级为自动搜索。MIPROv2 用贝叶斯优化搜索指令×示例组合 (30+ 任务平均约 +5%、最高约 13%);GEPA 做反射式进化(采样轨迹→自然语言反思→变异→Pareto 前沿 按切片保留候选),比 GRPO 强化学习平均高约 10%(最高 20%)、rollouts 最多省 35 倍。 DoorDash 已用 GEPA 校准 judge prompt(只保留在留出集上提升人机一致率的修订)。 风险:eval 集从裁判变成优化目标,就会被拟合与污染——分数涨可能只是对评测集的记忆; 平均分优化会掩盖切片退化;judge 本身也可能被"钻空子"(固定话术骗过 rubric)。 治理:1)三份数据分离——优化集、留出验证集(优化器不可见)、盲测集(版本发布终判); 2)按 slice 报告(任务类型/难度/用户群),任一关键切片退化即否决(GEPA 的 Pareto 选择即此思想); 3)评测资产带 provenance 与污染防护,定期换血(EDDOps 把 contamination safeguards 列为必备属性); 4)优化产物必须过完整门禁(回归集 + pass^k + 安全用例)并走 shadow/canary 才上线; 5)对"通过但可疑"的样本做轨迹审计,防 specification gaming。一句话:optimizer 越强,eval 集的治理越要像 保护训练数据一样严格。

题 10(进阶):有人说"离线评测做得再好,线上还是会翻车,所以离线评测没用"。请用 EDD 视角反驳并给出正确姿势。

参考答案: 这个说法把"必要不充分"误读成"无用"。证据链两面都要摆:一方面 arxiv 2510.22143 确实指出强 offline 基准 只是部署可靠性的弱指标(分布漂移 + 交互复杂性),EDDOps 综述也发现学术评测 93.28% 停留在 pre-deployment; 另一方面 DoorDash 报告离线模拟提升与线上真实流量一致,前提是工程做对了三件事。正确姿势: 1)离线是必要不充分——它是唯一能在发布前廉价拦截回归的手段(回归集只增不减 + PR 触发, 把"未被发现的回归"这个最贵的坑堵死);2)离线-线上同口径——同一 rubric + 同一校准 judge 两边跑 (DoorDash 原则三:各自调 judge,分数会以难调和的方式背离);3)补上最后一公里—— offline → shadow → canary → A/B → monitoring 发布阶梯,线上信号(转人工率、投诉率、任务完成率) 持续回流,离线升线上降即回滚(阿里口径);4)线上失败回流成离线用例,让离线集分布持续逼近真实分布。 结论:离线翻车不是离线评测的失败,而是"只做离线"的失败——EDD 的答案是把离线、在线、回流连成一个环。


五、易错点 · 反直觉点

  1. 误区:EDD = 上线前把评测跑一遍。 真相:EDD 的评测贯穿 Plan/Build/Run/Analyze 全生命周期;EDDOps 综述显示工业界 40.74% 已是持续评测, 学术 93.28% 停留在 pre-deployment 正是被批评的错位。上线前的测试上线后要持续运行(Airbnb 十条要点之⑨)。 → 记忆锚点:评测是生命周期,不是检查点。

  2. 误区:所有评测集通过率越高越好。 真相:capability 套件初始就应偏低(20–50% 起步,是目标山峰),regression 套件才要求近满分(防御地板)。 两个套件混在一起谈通过率,会同时失去方向感和安全感。 → 记忆锚点:能力集是山峰,回归集是地板。

  3. 误区:prompt 和模型一起改,总分涨了就是赢。 真相:捆绑变更放弃归因——你不知道收益来自谁、退化藏在哪,回滚都无从下手。一次一变量: prompt → 模型 → serving 配置的顺序。 → 记忆锚点:多变量并动 = 主动放弃归因。

  4. 误区:judge 建得越多越保险。 真相:Airbnb 原则是 3–5 个经校准的 judge 好过一堆嘈杂的评估器;未校准的 judge 数量再多, 制造的也是误导性信心,且每个 judge 都是要维护、要重校准的负债。 → 记忆锚点:judge 贵精不贵多,不校准不信任。

  5. 误区:回归集里长期通过的用例可以删掉省成本。 真相:回归集只增不减。正确降本姿势是"毕业降级"——稳定多版本通过且低风险的用例降级为抽样集(阿里样本治理), 而不是删除;删除等于把历史教训清零。 → 记忆锚点:回归集只增不减,降本靠降级不靠删除。

  6. 误区:judge 一致率 78% "差不多能用",先进 CI 再说。 真相:78% 的 judge 在 Airbnb 案例里被查出系统性误罚"正确的改述"——它惩罚的恰是高质量输出。 各家口径一致:high-80s~90s(Airbnb)、~85%(阿里)、≥85%(腾讯)才可进自动化。 → 记忆锚点:judge 的错比模型的错更隐蔽,先修尺子再量布。

  7. 误区:离线评测全绿 = 可以发布。 真相:离线是必要不充分条件——真实分布漂移与交互复杂性让强离线成绩只是部署可靠性的弱指标 (arxiv 2510.22143)。必须补 shadow/canary/线上监控,且离线线上同一 rubric 同一 judge。 → 记忆锚点:离线全绿只是拿到了发布资格,不是发布令。

  8. 误区:eval 成了优化目标(GEPA/MIPROv2)之后,原来那份 eval 集照常当裁判。 真相:被优化的 eval 集会被拟合与污染,必须留出集/定期换血/污染防护三件套, 并用优化器从未见过的盲测集做终判。 → 记忆锚点:既当裁判又当考题的卷子,必须轮换。

  9. 误区:CI 门禁越严越好,每个 PR 都跑全量 E2E。 真相:全量 E2E 昂贵且 flaky,会把团队拖垮或逼出"跳过门禁"的坏习惯。正解是分层门禁: 确定性断言每次 PR 必过、轨迹层每日全量、E2E 模拟按预算抽样或定时跑(DoorDash 靠模拟器把 6+ 小时压到 20 分钟才撑得起全量)。 → 记忆锚点:门禁分层:快的守门,贵的巡场。

  10. 误区:发布门槛看 pass@1 或平均通过率。 真相:pass@1 衡量"多试几次能不能成",生产无人值守要的是 pass^k(每次都成)。p=0.75 的 agent pass^3 只有 ≈42%;τ-bench 上 GPT-4o retail pass^1 ≈60%(官方榜单 60.4%),pass^8 ≈25%。 → 记忆锚点:demo 看 pass@k,上线看 pass^k。


六、推荐资源

论文(arxiv ID 均已在 _research/06-edd-simulation.md 核实):

  1. EDD/EDDOps 过程模型与参考架构(本章学术主线):Xia et al., arxiv 2411.13768(2024-11 首发,2025-11 v3)——四阶段闭环、三层架构、学术/工业错位数字。
  2. τ-bench:Yao et al., arxiv 2406.12045(2024-06)——用户模拟器 + DB 终态哈希 + pass^k 的范式源头;τ²-bench:arxiv 2506.07982(2025-06,双控)。
  3. GEPA:Agrawal et al., arxiv 2507.19457(2025-07)——反射式 prompt 进化,eval 作为目标函数的代表;MIPROv2:arxiv 2406.11695(2024-06);DSPy:arxiv 2310.03714(2023-10,背景奠基)。
  4. CI/门禁方向:Automated Structural Testing of LLM-based Agents, arxiv 2601.18827(2026-01,评测三级金字塔);Automated Self-Testing as a Quality Gate, arxiv 2603.15676(2026-03,evidence-driven release);Test Before You Deploy, arxiv 2604.27789(2026-04,LLM 供应链治理)。
  5. offline-online gap:Benchmarking and Learning Real-World Customer Service Dialogue, arxiv 2510.22143(2025-10)。
  6. 数据飞轮学术样本:Discord AITL, Agent-in-the-Loop(EMNLP 2025 Industry,ACL Anthology 2025.emnlp-industry.135)。
  7. 模拟器可靠性:DAUS, arxiv 2402.13374;隐式画像, arxiv 2502.18968;ChatChecker 非合作模拟, arxiv 2507.16792;persona 驱动销售 bot(Gromada, EMNLP 2025 Industry,ACL Anthology 2025.emnlp-industry.16)。

工程博客(数字出处,详见 _research/00-industry-practice.md):

  • Airbnb《Eval-driven development: Lessons from evaluating GenAI at scale》(Rohit Girme, Dan Miller, Mia Zhao, Lifan Yang, Clint Kelly)——本章 2.2/2.4/2.5 全部数字的原始出处。
  • Anthropic《Demystifying evals for AI agents》(2026-01-09)——capability/regression 套件、20–50 用例起步、pass^k 例子的出处。
  • DoorDash《Building Ask DoorDash (Part 3): Evaluation》(2026-06-30)与《A Simulation and Evaluation Flywheel to Develop LLM Chatbots at Scale》(2026-01-26)——2.7 全部数字。
  • OpenAI Evaluation best practices——量化目标示例与五路数据来源;注意其托管 Evals 平台已宣布下线(2026-10-31 只读、2026-11-30 关闭)。
  • Hamel Husain《Your AI Product Needs Evals》(hamel.dev,evals-as-tests 布道文本)、Braintrust《What is eval-driven development》、Google web.dev《Evaluation-driven development》、DeepEval EDD 指南、GitHub awesome-eval-driven-development 清单。

本特辑交叉引用:

  • 第 E1 章 · 为什么评估是 GenAI 工程的生命线(三大坑与评测四重身份的完整展开)
  • 第 E2 章 · 评估指标体系(pass@k/pass^k 数学定义、P0/P1/P2 分层)
  • 第 E3 章 · 黄金数据集与用例设计(毕业机制与入库标准的数据集侧视角)
  • 第 E5 章 · LLM-as-Judge 深入(judge 校准全流程:本章 2.5 的 78%→88% 在这里展开)
  • 第 E8 章 · 对话 Agent 与仿真评测(模拟器、fixtures 的完整实现细节)
  • 第 E9 章 · 评估的统计学基础(门禁的置信区间/显著性/样本量工具)
  • 第 E11 章 · Badcase 根因分析与优化闭环(本章 2.7 失败回流的归因侧)
  • 第 E12 章 · 在线评估与数据飞轮(本章发布阶梯之后的线上运营)

labs 动手实验:

Lab 对应本章内容 运行命令
labs/eval_lab10_edd_loop.py EDD 全闭环:门禁/回归/一次一变量/badcase 回流(prompt_v3 回归陷阱演练) cd evals-special/labs && python3 eval_lab10_edd_loop.py
labs/eval_lab05_judge_calibration.py 复现 judge 一致率 78%→88% 的校准循环(误罚改述案例) cd evals-special/labs && python3 eval_lab05_judge_calibration.py
labs/eval_lab02_golden_dataset.py 用例毕业机制与回归集只增不减 cd evals-special/labs && python3 eval_lab02_golden_dataset.py
labs/eval_lab07_simulator_fixtures.py 模拟器 + fixtures:环境不受控时分数测量的是噪声 cd evals-special/labs && python3 eval_lab07_simulator_fixtures.py
labs/eval_lab08_statistics_ci.py 版本比较的置信区间与显著性(门禁统计口径) cd evals-special/labs && python3 eval_lab08_statistics_ci.py

(主手册第 8 章 · Agent 评估与可观测性提供了本章的浓缩版背景;本章是其在"开发流程嵌入"方向上的深挖。)

第 11 章 / 共 15 章

Badcase 根因分析与优化闭环

📌 本章导航(6 节)

评分只回答"有多差",RCA(Root Cause Analysis,根因分析)才回答"为什么差、谁来修、修完怎么证明"。 本章以阿里的 RCA 五步法为骨架,拆解 badcase 从发现到修复验收的全链路工程:双通路入口、 范围收敛、三态诊断、三层定责、问题簇聚类、结构化行动项与反馈生产线。学完你应该能独立设计 一条"badcase 进、行动项出"的质量闭环,并在面试中讲清每一步的成本、置信度与 owner。


一、知识图谱

离线入口                          线上入口
─────────────                    ─────────────────────────────────
回归失败 / 门禁不达标             会话抽检 / 人工质检 / 投诉工单
能力集低分 / Judge 低分           低满意度 / 版本回归失败 / 监控告警
        │                                │
        └──────────► 同一 Badcase 任务表 ◄──────────┘
                    (统一 schema · 持久化 · 已脱敏)
                              │
                              ▼
   ┌──────────────────────────────────────────────────────────────┐
   │   RCA Pipeline(单次分析 = 异步 Multi-Agent Workflow)          │
   │                                                              │
   │  ① 证据汇总      sessionId/traceId 聚合全链路日志               │
   │       ▼                                                      │
   │  ② 范围收敛      "现象 × 模块"映射表:命中走确定性,未命中 LLM 兜底 │
   │       ▼          (只缩小候选,不直接定责)                      │
   │  ③ 分模块诊断    逐模块读 IO → PASS / SOFT_PASS / FAIL          │
   │       ▼          (SOFT_PASS = 上游错误传播,不是本地之错)        │
   │  ④ 责任判定      三层漏斗:严重 FAIL 一票否决 → 规则模式匹配       │
   │       ▼                    → LLM 汇总责任传递                   │
   │  ⑤ 结构化落盘    分类/现象/枚举/责任层/责任模块/置信度/修复建议     │
   └──────────────────────────┬───────────────────────────────────┘
                              ▼
        问题簇聚类(同根因 / 同场景 / 同工具 / 同知识点)
        报告不罗列 100 条 badcase,而是产出少数几个"主题"
                              ▼
        结构化行动项(失败范围 / 证据 / 动作 / owner / 验收 / 优先级)
        ——拒绝"优化 Prompt"式泛化建议
                              ▼
        反馈生产三条线:评测集线 | 训练数据线 | 知识修订线
                              ▼
        质量资产库:用例库 · Trace 库 · 根因标签库 ·
                   修复建议库 · Judge 校准集 · 回归集

本章知识骨架(与模块对应):

小节 解决的问题 关键词
2.1 为什么 badcase 治理是评测体系的分水岭 现象 ≠ 根因、三类问题、闭环
2.2 badcase 从哪里来、落到哪里 双通路、同一任务表、schema
2.3 RCA 五步总览 + 证据汇总 + 范围收敛 映射表、只缩圈不定责
2.4 分模块诊断怎么做 PASS/SOFT_PASS/FAIL、责任传递
2.5 责任怎么判 三层漏斗、缺失型错误、置信度递减
2.6 结论怎么落盘、怎么聚成簇 根因标签体系、问题簇、owner
2.7 RCA 系统本身怎么工程化 异步 Workflow、人审兜底、反校准
2.8 从原因到动作、从动作到资产 行动项、反馈生产线、质量资产库

动手实验:本章配套 labs/eval_lab09_rca_pipeline.py,用纯标准库实现了上述全部五步 + 聚类,内置 4 个 badcase(含阿里经典案例"已发货退款未查订单状态")。运行: cd evals-special/labs && python3 eval_lab09_rca_pipeline.py


二、核心概念精讲

2.1 为什么 badcase 治理是评测体系的分水岭

阿里对评测平台的总命题是:评测平台不只是"出分工具",核心价值是把问题稳定转化为可执行修复、 形成持续迭代闭环;成熟体系要回答三类问题——评什么 / 怎么判 / 怎么用。第三问恰恰是大多数 团队的断点:分数跑出来了,然后呢?其第 10 章的结论更直接:评测体系的成败取决于它能否在 跨团队协作中长期、稳定地产生可执行行动项;低分必须稳定转成行动项,否则再精细的分数也只是报表。

badcase 治理难在三个结构性事实(与第 E1 章的三大门槛一脉相承):

难题 对 RCA 的直接后果
非确定性 同一输入不一定同输出,badcase 可能难以复现,必须先固化 Trace 再谈分析
黑盒化 内部决策不透明,不读模块 IO 就只能猜
错误级联放大 多步链路前一个小偏差被放大成错误结论——最终答案错的地方,往往不是根因所在

第三条是 RCA 存在意义的核心:多模块流水线里,错误会沿链路向下传播。意图识别判错,后面 Query 改写、知识筛选、回复生成全部跟着错;只看最后一眼"回复不对"就去改生成层 prompt,等于给下游 背锅侠加药量,真正的病灶纹丝不动。

第一个必须内化的区分:现象 ≠ 根因。 评分层(第 E4 章的程序化评分与第 E5 章的 Judge)产出 的是现象分类:事实性错误 / 答非所问 / 过度承诺……阿里明确要求评分输出不止 pass/fail,还要 带问题分类(现象层)/ 问题现象 / 置信度 / 判定依据——这四样东西构成 RCA 的"现象入口"。 现象是症状,根因是病灶;同一种症状可能对应完全不同的病灶(同样是"事实性错误",可能是检索召回 了过期文档,也可能是生成层没忠实使用证据),同一种病灶也可能表现为多种症状。RCA 的全部工作, 就是把现象翻译到根因:哪个模块、什么失败类型、谁是 owner、怎么验收。

2.2 Badcase 双通路入口与同一任务表

badcase 有两条入口通路,阿里要求它们汇入同一 badcase 任务表与同一 RCA Pipeline:

入口 具体来源 特点
离线评测集 回归失败、发布门禁不达标、能力集低分样本、Judge 低分 有完整评测运行 ID、可复现、期望行为已定义
线上 会话抽检、人工质检、投诉工单、低满意度反馈、版本回归失败、监控告警 真实分布、带业务后果,但证据散、需脱敏

"同一张表"不是管理洁癖,而是工程必需:

  1. 口径统一:离线与线上用同一套根因标签体系,才能回答"线上这类问题在离线集里有没有覆盖"—— 这正是第 E12 章 DoorDash"离线-线上同一 rubric + 同一校准 judge"原则在 badcase 侧的镜像。
  2. 去重与聚类面向全量:聚类永远面向任务表全量(历史 + 新增),只看今天这一批会低估问题簇 的规模。lab09 的自检断言即如此:4 条新诊断 + 8 条历史记录合并聚成 4 个簇、合计 12 条。
  3. 状态以持久化任务记录为准:分析到哪一步、定责结论是什么、谁认领了修复,都以任务表字段为 准,不依赖人的记忆和群聊记录。

任务表的落盘 schema(对应 lab09 build_rca_record 的输出字段):

字段 含义 示例
case_id / session_id 案例与链路标识 bc-004 / sess-bc004
scenario / source 业务场景 / 入口通路 退货退款 / 线上投诉工单
issue_class 问题分类(报告大类) 工具执行
symptom 现象(评分层产出) 跳过校验
enumeration 问题枚举(更细失败类型,即根因标签) 关键工具未调用
root_module / confidence / method 责任模块 / 置信度 / 定责路径 回复生成 / 0.72 / llm_fallback
evidence / rationale 逐模块证据枚举 / 定责理由 各模块 verdict + reason
prompt_version 出事时的 Prompt 版本 prompt_v2
fix_suggestion 结构化修复建议(含 owner) 补回硬约束并全量回归,owner:算法需优化

两条纪律:

  • 入库先脱敏。线上会话含用户隐私,入库标准里"已脱敏合规"是硬条件(阿里);Airbnb 的生产 抽样同样要求人工评审前去标识化、用途限定于安全与质量(详见第 E3 章)。
  • 入口本身要留痕。source 字段决定了后续分析的一个关键问题:这个簇是"离线集早就该拦住" 还是"线上才暴露的新分布"——前者问责评测集覆盖度,后者触发新用例补充。

2.3 RCA 五步总览:证据汇总与范围收敛

阿里 RCA 五步(本章主体):

步骤 输入 输出 方法基调
① 证据汇总 sessionId / chatId / traceId / 评测运行 ID 该会话的完整模块 IO 链 纯工程:日志聚合、按 ts 重建
② 范围收敛 现象分类 + 场景 候选模块列表(2~3 个) 映射表命中走确定性;未命中 LLM 兜底缩圈
③ 分模块诊断 候选模块的 input/output/prompt/工具返回/异常 每模块 verdict + 证据 + 摘要 规则检查为主,逐模块本地判定
④ 责任判定 现象 + 分模块诊断 + 根因知识库 责任模块 / 问题分类 / 枚举 / 修复建议 三层漏斗:严重 FAIL → 规则 → LLM
⑤ 结构化落盘 以上全部 任务记录 + 看板渐进展示 结构化写入,供工单/看板消费

第一步:证据汇总。 按 sessionId/chatId/traceId/评测运行 ID 找链路日志,汇总用户输入、Agent 回复、模块 IO、prompt、工具调用、异常、耗时、中间产物。线上日志是多会话交错、乱序到达、混着 心跳与指标噪声的,聚合纪律是只信时间戳、不信到达顺序,噪声日志丢弃但计数。这一步成立的前 提是被测 Agent 有结构化 Trace——阿里与腾讯都强调 Trace 输出是被测 Agent 的标准能力而非事后 补救:稳定记录工具名、入参、返回值、时间戳、耗时、错误;结构化 trace 要求可解析、内容完整、 跨版本格式稳定(详见第 E7 章)。没有 trace 的 badcase,RCA 只能退化为"看最终回复猜"。

第二步:范围收敛。 为什么不直接对全模块做无差别分析?两个原因:成本高(每个模块都要 读 IO、跑检查、可能调 LLM)、噪声大(无关模块的 SOFT_PASS 会干扰判断)。阿里的做法是维护 一张"问题现象 × 功能模块"映射表:

问题现象 优先候选模块
答非所问 意图识别 / Query 改写 / 知识筛选
事实性错误 FAQ 检索 / 知识检索 / 回复生成
过度承诺 风险拦截 / 回复生成
订单未澄清 槽位抽取 / 上下文判断
跳过校验 订单状态查询 / 回复生成(lab09 补充条目)

三条使用纪律:

  1. 命中走确定性路径,未命中 LLM 兜底缩圈——映射表是经验沉淀,LLM 只处理表外的新现象;
  2. 映射表只缩小候选,不直接定责——定责永远发生在诊断之后,跳过诊断直接定责等于把"经验" 当"证据";
  3. 候选要并入场景必需步骤——lab09 的 narrow_scope 会把该场景的 REQUIRED_STEPS(如退款 场景必须先查订单状态)并入候选,防止映射表漏掉关键工具。

2.4 分模块诊断:三态判定与责任传递

诊断动作:对候选模块逐个读 input / output / prompt / 工具返回 / 异常日志,每个检查器只回答 一个问题——"这个模块拿到它的输入后,尽到自己的职责了吗?"输出包括:问题摘要、关键证据、改进 建议、结构化归因字段。

为什么是三态而不是二态? 这是责任传递分析的基础:

verdict 含义 典型成因
PASS 本模块 IO 均正常 无
SOFT_PASS 基本通过但轻微瑕疵 模块自身逻辑没错,输出却有问题——通常是上游错误沿流水线传播
FAIL 本模块自身处理违反职责 本地错误(error)或必需步骤缺失(missing)

若只有 PASS/FAIL,"上游错、下游跟着错"的链条上每个下游模块都会被判 FAIL,定责时只能和稀泥 "人人有份";显式建模 SOFT_PASS,才能把"真凶"和"被牵连者"分开。lab09 的实现机制:按流水线 顺序检查,维护 upstream_bad 标记——一旦某模块 FAIL/SOFT_PASS,其后本应 PASS 的模块自动降级 为 SOFT_PASS 并注明"上游已出错,错误可能沿流水线向下传播"。

案例演练:现象"事实性错误"(阿里原文实例 + lab09 bc-002 的具体化):

用户问"这款手机的电池容量是多少?",Agent 答"3000mAh",正确答案是 5000mAh。

诊断顺序是沿信息流逐段排查:

模块 检查问题 结果
FAQ 检索 是否召回正确政策/参数 SOFT_PASS(无命中或低分,回退知识检索,非本模块之错)
知识检索 是否保留关键片段 FAIL:命中 K-1024 v1 过期文档(最新版为 v2,旧版写着 3000mAh)
回复生成 是否忠实使用证据 SOFT_PASS:草稿忠实引用了召回片段——忠实本身没错,错在证据是脏的

前两段通过而回复仍错 → 回复生成 FAIL、前两模块 PASS/SOFT_PASS(原文口径);lab09 进一步把 "忠实引用脏证据"判为 SOFT_PASS,责任归到链条最上游的知识检索。注意两个检查器设计细节:

  • 本地检查只读本模块 IO:知识筛选模块只要"筛选结果与自己拿到的意图自洽"即无本地错误—— 意图本身就是上游给的脏输入时,锅不在筛选;
  • 启发式无法证伪时不下结论:意图识别用主题关键词反推,命中唯一主题才敢判错,命中 0 个或 多个主题宁可放过——诊断器误报会污染整条 RCA 的可信度。lab09 专门放了一条健康对照会话, 断言"健康会话不允许出现 FAIL"。

另有一个运营信号值得注意(腾讯口径,同样适用于诊断器自身):通过率 0% 或 100% 通常是任务或 评分器坏了,不是模型弱——诊断器长期全 PASS 或全 FAIL 时先怀疑诊断器(详见第 E6 章人工评估 的"诊断异常"场景)。

2.5 责任判定:三层漏斗与缺失型错误陷阱

责任判定层消费"现象 + 分模块诊断 + 根因知识库",产出四个字段:责任模块 / 问题分类 (报告大类)/ 问题枚举(更细失败类型)/ 修复建议。报告大类按阿里的口径分为四类: 语义理解 / 知识召回 / 工具执行 / 风险防控。

核心是三层策略,设计逻辑是"越确定的方法越靠前"——它同时是一个成本漏斗:

层 策略 适用 置信度(lab09 口径)
1 严重模块结论直接定责(一票否决) 关键防线模块 FAIL,后果不可逆(资损/合规) 0.95
2 规则引擎匹配确定性模式 沿因果链归因到"最上游的非缺失型 FAIL" 0.90
3 LLM 汇总复杂链路责任传递 缺失型错误、跨模块推理难题 ≤0.72

第 1 层:风险拦截这类关键防线一旦 FAIL(检出过度承诺却放行),无需再分析——后果不可逆的 模块拥有一票否决权。第 2 层:按流水线顺序排序所有 FAIL,取最靠前的非缺失型 FAIL 为 责任模块,其后异常视为传播后果。第 3 层:剩下的 FAIL 全是缺失型(模块根本没执行),规则 无法处理,才交给 LLM。

阿里给出的确定性定位清单(第 1、2 层能覆盖的硬错误与过程偏差):

手段 能定位的问题
规则定位硬错误 工具未调用 / 顺序违反 SOP / 参数缺失 / 报错未重试 / DB 状态未变 / 引用来源不存在
Trace Scorer 定位过程偏差 计划与目标不一致 / 证据不足 / 工具返回被误读 / 上下文被覆盖
映射表缩圈 现象 → 候选模块(第 ② 步的延续)
LLM 辅助语义归类聚类 "解释不完整 / 口径理解错 / 意图澄清不足"映射到既有分类,避免同类拆散

缺失型错误的归因陷阱(高频考点):工具没被调用,锅不在工具本身——模块根本没执行,定责给 它没有意义;要追问的是"谁本应触发它却没有触发":是 Prompt 忘了写约束?是意图识别没给出 触发条件?还是编排层路由错了?阿里经典案例"已发货退款未查订单状态"的完整归因是:归"工具 覆盖与执行"大类、枚举"关键工具未调用"、责任模块 = 退款 Skill / 退款流程执行模块。lab09 的简化模块划分里,工具调用决策由 Prompt 驱动的回复生成层负责,于是第 3 层 LLM 兜底给出的结论 是:prompt_v2 移除了"退款前必须先查订单状态"的硬约束,属提示词回归,置信度 0.72 (低于规则层的 0.90——LLM 结论天然要打折扣)。

漏斗的两条自检指标(lab09 断言):置信度必须随层级递减(0.95 > 0.90 > 0.72);LLM 兜底 调用次数应远小于 badcase 总数(lab 中 4 条 case 只触发 1 次)。如果 LLM 兜底占比居高不下, 说明规则库没在沉淀——每次人审复核的新模式都应该回流成规则。

LLM 兜底的输出纪律:证据不足时给低置信结论并转人工,而不是硬猜(lab09 MockLLM 的兜底 输出 confidence=0.3 + "建议人工复核并补充根因知识库")。这条纪律与第 E6 章的人工评分路由 完全一致:低置信进人工,人工结论再反哺机器。

2.6 结构化落盘:根因标签体系与问题簇

第五步落盘:把问题分类 / 现象 / 枚举 / 责任层 / 责任模块 / 置信度 / 详细报告 / 修复建议写入 任务记录,看板渐进展示(诊断中 → 已定责 → 已认领 → 修复中 → 待验收 → 已闭环)。落盘记录必须 可被工单系统 / 看板 / 配置平台 / 研发流水线直接消费——JSON 可往返、字段枚举化、无自由文本。

根因标签体系是聚类与统计的齿轮,阿里给出三条设计原则:

  1. 稳定:标签是枚举不是作文;同类问题永远落同一个标签,避免"解释不完整"和"回复不够 详细"各算一类;
  2. 可统计:能按标签聚合出趋势("知识召回类本月占比 38%,环比 +9pct");
  3. 指向 owner 与处理动作:标签可绑定解决角色,四类角色分工:
owner 角色 含义 动作示例
运营可配置 改配置/知识库即可,不动代码 下线知识库过期版本文档、增补 FAQ
算法需优化 Prompt / 检索策略 / few-shot 补回"先查订单状态"硬约束(prompt_v2 → v3)
工程需修复 代码缺陷 / 防线缺失 将"确定性赔付承诺"加入拦截规则库、赔付转人工审批
业务需定口径 流程规范本身没定义 "订单已发货 + 用户拒收 + 运费险 + 特殊类目"该走哪条流程

第四类最容易被忽视:有些 badcase 的根因不在系统,而在业务规则从未被定义——此时修复动作是 "业务先定口径",再谈落地(第 E6 章人工评分的"定口径"场景同源)。

问题簇:报告的最终形态不是 badcase 列表,而是少数几个主题。 同根因 / 同场景 / 同工具 / 同知识点的失败自动聚成簇,阿里给出的标杆产出是:

"退款已发货场景中,Agent 23 次跳过订单状态校验,主要集中在 v1.8 Prompt。"

一句话同时回答了:什么场景、什么问题、多大规模、嫌疑版本。修复才能一次覆盖一批,而不是一条 一条打补丁。聚类键的选择有讲究:用 (场景, 责任模块) 而不是"用户问题文本相似度"——文本 相似的两条 case 完全可能是不同根因(都问退款,一条是工具没调、一条是知识库过期),反之亦然; 而根因标签恰好满足"稳定、可统计、指向 owner"。簇内还应统计主导 Prompt 版本(lab09 输出: 退货簇 5 次跳过校验,集中在 prompt_v2,4/5)——这是把"嫌疑版本"量化出来的关键一步。

DoorDash 从 rubric 侧给出了互为印证的实践:rubric 标准天然是问题簇——grounding 失败 / 缺替代品 / 糟糕叙述分开调查,失败列表就变成了按影响排序的主题列表;逐条看失败会"轶事驱动" (最近、最惊奇的失败主导修复决策),必须靠聚类对抗这种注意力偏差。

2.7 RCA 的工程实现:异步 Multi-Agent Workflow 与人审兜底

阿里把单次 badcase 分析建模为一个异步 Multi-Agent Workflow:证据汇总、范围收敛、分模块 诊断、责任判定各是一个节点,任务状态持久化在任务表里,失败可重试、可中断续跑。选异步的原因 很实在:线上 badcase 是持续流入的(每天若干条到上百条),同步阻塞既无必要也扛不住峰值。

Workflow 内部同样遵循"确定性优先、模型辅助、人审兜底"的总原则(与第 E4 章评分三层、 第 E5 章 Judge 治理一脉相承):

规则定位硬错误(毫秒级,置信度最高)
   └─► Trace Scorer 定位过程偏差(秒级)
          └─► 映射表缩圈 + LLM 语义归类(API 成本,有抖动)
                 └─► 高风险 / 低置信 / 结论冲突 → 人工复核(分钟级,终判)

人审兜底的三个触发条件:高风险场景(资损/合规/隐私,即使自动定责置信度高也要复核)、 低置信结论(LLM 兜底输出 confidence 低于阈值)、规则与 LLM 结论冲突。人工结论不是用完即弃, 而是三类反校准的原料:反校准规则库(新模式沉淀为新规则)、反校准 Judge Prompt(定责提示词 迭代)、反校准根因标签(发现标签缺口或标签漂移)。这样 LLM 兜底占比会随时间下降,系统越用 越便宜、越用越确定。

RCA 系统自己也会出错,需要像对待被测系统一样对待它:

失效模式 治理手段
LLM 兜底"胡说" 低置信强制转人工;兜底输出必须给 rationale 供复核
映射表过时(新现象命中旧映射) 未命中走 LLM 缩圈;定期用人工复核样本回测映射表命中率
诊断器误报 健康对照会话断言"不允许出现 FAIL";0%/100% 异常先怀疑诊断器
badcase 其实是评测系统误报 定责层保留"未发现任何 FAIL,可能不是系统错误"分支(lab09 layer 0)

最后一条尤其重要:DoorDash 的 Lesson Learned 第 4 条明确,被标记失败中有真实一部分是 harness 自身故障(judge 误报、trace 缺口),要并行修复才可信。所以根因标签库里应当有"评测/质检误报" 这一类——RCA 不只给被测系统看病,也给评测系统看病。

工程上建议额外跟踪四个 RCA 自身的质量指标(本章归纳):定责一致率(与人工复核抽样对齐, 参照第 E5 章 ~85% 的 judge 校准线)、LLM 兜底占比(应单调下降)、簇平均规模(越大说明修复 杠杆越高)、行动项转化率(badcase 变成已验收修复的比例——第 2.1 节"低分必须稳定转成行动项" 的直接度量)。

2.8 从原因到动作:结构化行动项与全链路闭环

阿里的第 8 章(自动优化建议)给修复建议定了红线:不能停留在"优化 Prompt / 加强训练 / 提升准确率"这类泛化建议——要明确失败范围、证据、具体动作、owner、验收方式、优先级;产出 结构化行动项,能被工单系统 / 看板 / 配置平台 / 研发流水线直接消费(原文口径:"建议是质量 工程里的标准任务对象")。每个建议要能展开证据链;不同根因对应不同优化手段,原文提出可分 四个等级(未展开细节,工程落地常与 2.6 的 owner 四分类对齐)。

以 lab09 的退款案例为例,一条合格的行动项长这样:

字段 内容
失败范围 退货退款场景"已发货"分支;线上投诉工单 + 离线回归共 5 例(任务表全量)
证据链 ① 回复草稿直接承诺退款 → ② trace 中无订单状态查询 span(kind=missing)→ ③ 知识库 K-2019 v3 明文要求"退款前必须先确认订单状态" → ④ prompt_v2 相比 v1 丢失该硬约束
具体动作 回复生成 Prompt 补回硬约束:退款请求必须先调用订单状态查询(prompt_v2 → prompt_v3)
owner 算法需优化
验收方式 该场景全量回归通过;"跳过校验"簇清零;退款回归集无新增失败
优先级 P0(资损风险,已发货直接退款会造成货损)

优先级判定可借用 EDDOps(arXiv 2411.13768)的"最小有效变更优先"原则:先改 prompt / 路由 / 护栏,再动架构 / 工具契约 / 模型——变更面越小,回归验证越便宜,责任也越清晰。

行动项的验收不是"改完了",而是三层证明:

  1. 离线证明:新增用例(这条 badcase 本身转化而来)通过 + 既有回归集不回归。腾讯的标准路径: 复现记录完整轨迹 → 分析根因定预期行为 → 修复 → 纳入用例集防回归 → 进能力集,稳定后毕业到 回归集;Anthropic 的口径(腾讯转引):确定性任务用例集整体通过率需 100%,非确定性任务 ≥95% (详见第 E10 章)。
  2. 线上证明:修复上线后观察三类信号——离线质量信号、线上体验信号(转人工率、重复追问率、 投诉率、满意度)、业务结果信号(任务完成率、工单闭环率、退款成功率);DoorDash 的 reasoning leakage 案例是范本:线上评分发现泄漏 → 修 prompt → 用生产中最易触发的场景离线验证 (泄漏率降 11%)→ hero 场景全量扫描无回归 → 上线后监控确认阶跃改善(详见第 E12 章)。
  3. 簇级证明:该问题簇的规模归零或降到噪声水平——单条 case 通过不代表簇被消灭。

反馈生产:一条 badcase 至少生产 3 类反馈。 阿里的第 9 章把闭环拆成三条生产线:

生产线 产出 去向
评测集线 新用例(badcase 本体 + 同簇变体) 能力集 → 毕业后回归集(只增不减)
训练数据线 修复前后轨迹构成的偏好对 / 正确示范 SFT / 偏好优化(详见第 E12 章数据飞轮)
知识修订线 过期文档下线、知识点增补、口径澄清 知识库 / 配置平台(owner:运营可配置)

入库标准五条(阿里):失败可复现(或至少有稳定 Trace + 人工确认);期望行为明确 (可写成规则 / Judge 标准 / 人工验收标准);根因标签清楚(归到具体能力域或业务流程); 样本有代表性(覆盖一类问题而非一次性环境抖动);已脱敏合规。配套样本治理:同簇保留 代表例(防止簇膨胀淹没重点);P0/P1 风险长期保留;稳定多版本通过且低风险者降级为抽样集; 新分布出现时主动学习优先抽取低置信 / 高影响 / 新意图 / 新工具 / 新知识点样本进人工确认。

终局是质量资产库:用例库、Trace 库、根因标签库、修复建议库、Judge 校准集、回归集。 阿里的原话是:"质量资产越厚,Agent 迭代越不靠个人经验和临时救火。"

最后看一个"闭环 agent 化"的前沿样本——DoorDash 的反馈闭环:失败按 rubric 标准聚类成主题 → coding agent 检查失败 trace、相关代码路径、近期变更、历史调查 → 修复明确时直接起草 PR, prompt/上下文学习类改动则产出诊断 + 建议供人审 → 整套 eval-driven 工作流(聚类失败、调查失败 模式)打包成 Agent Skills,可重复、可复用、可改进;skill 分错簇或写出弱修复时,更新 skill 而非打补丁一次性运行。DoorDash 对此的定位值得背诵:harness 不只是记分板,是迭代的控制面 (control plane for iteration)——生产监控 + 失败聚类 + agent 辅助调查 + 发布前验证连成一环。


三、面试高频考点

# 考点 分级 一句话考察意图
1 现象 ≠ 根因;评分输出的"现象入口"四要素 ⭐ 是否理解评分层与归因层的分工
2 RCA 五步骨架(证据汇总→范围收敛→分模块诊断→责任判定→结构化落盘) ⭐⭐⭐ 能否完整复述工业级归因流程及每步产物
3 "现象 × 模块"映射表与"只缩圈不定责"纪律 ⭐⭐ 是否理解收敛的成本/噪声动机与边界
4 三态诊断 PASS/SOFT_PASS/FAIL 与责任传递 ⭐⭐⭐ 多模块同时异常时能否区分真凶与被牵连者
5 缺失型错误归因陷阱(工具没调,锅不在工具) ⭐⭐⭐ 深水区:跨模块因果推理能力
6 三层定责漏斗(严重 FAIL → 规则 → LLM)与置信度/成本递减 ⭐⭐⭐ 是否理解"确定性优先"的工程经济学
7 根因标签三原则(稳定/可统计/指向 owner)与四类 owner ⭐⭐ 标签体系能否支撑统计与分工
8 问题簇:聚类键 (场景, 责任模块) 与主导版本 ⭐⭐ 报告产出"主题"还是"轶事"
9 行动项六要素(范围/证据/动作/owner/验收/优先级) ⭐⭐⭐ 能否交付可被系统消费的修复对象
10 双通路入口与同一任务表 ⭐⭐ 离线-线上闭环口径是否统一
11 反馈生产三条线与入库五标准 ⭐⭐ 一条 badcase 是否榨出三类资产
12 RCA 的异步 Multi-Agent Workflow 与人审反校准 ⭐⭐ RCA 系统自身的工程化与可信度治理
13 RCA 自身失效:评测误报也要进根因库 ⭐ 是否理解"评测系统也产生 bug 报告"(DoorDash)
14 修复验收三层证明(离线/线上/簇级) ⭐⭐ 闭环是否真的闭上了

四、经典面试题与参考答案

题 1(基础):评分层把一条 case 标成"事实性错误",这是根因吗?评分输出除了 pass/fail 还应提供什么?

参考答案: 不是。"事实性错误"是现象分类(症状),不是根因(病灶)——同为事实性错误, 可能是知识检索召回了过期文档,也可能是回复生成没有忠实使用证据,修复动作完全不同。阿里明确 要求评分输出不止 pass/fail,还要带四样东西:问题分类(现象层)、问题现象、置信度、判定依据, 它们构成 RCA 的"现象入口"。现象分类 ≠ 最终根因,RCA 的任务就是把现象翻译到根因:哪个模块、 什么失败类型、谁是 owner。

题 2(基础):请复述 Badcase RCA 的五步流程,每步的输入、输出与一条关键纪律。

参考答案: 阿里口径:① 证据汇总:按 sessionId/chatId/traceId/评测运行 ID 聚合链路日志 (用户输入、Agent 回复、模块 IO、prompt、工具调用、异常、耗时、中间产物);纪律:状态以持久化 任务记录为准,只信时间戳不信到达顺序。② 范围收敛:用"问题现象 × 功能模块"映射表缩到 2~3 个候选模块(答非所问→意图识别/Query 改写/知识筛选等);纪律:映射表只缩小候选,不直接 定责,命中走确定性路径、未命中 LLM 兜底缩圈。③ 分模块诊断:逐模块读 IO/prompt/工具返回, 输出 PASS/SOFT_PASS/FAIL 与证据;纪律:本地检查只读本模块 IO,上游错误显式传播为 SOFT_PASS。 ④ 责任判定:消费"现象 + 诊断 + 根因知识库",三层漏斗定责并输出问题分类/枚举/修复建议。 ⑤ 结构化落盘:写入任务记录(分类/现象/枚举/责任层/责任模块/置信度/报告/建议),看板渐进 展示,供工单系统直接消费。

题 3(进阶):为什么要做"范围收敛"?映射表命中后能直接定责吗?

参考答案: 不能。全模块无差别分析有两个代价:成本高(每模块都要读 IO 跑检查,LLM 诊断 还有 API 费用)与噪声大(无关模块的 SOFT_PASS 会干扰判断,把定责带偏)。映射表把候选缩到 2~3 个模块,但它只缩小候选、不直接定责,原因有三:① 映射是经验先验,不是证据——同一现象 在不同 case 里根因可能完全不同;② 跳过诊断直接定责,就失去了"证据链",修复无法验收、人审 无法复核;③ 映射表会过时,新现象可能命中旧映射。正确流程:映射表缩圈 → 候选模块逐个诊断 → 诊断之后才定责;未命中映射表时退化为 LLM 兜底缩圈。另外工程上建议把场景必需步骤(如退款必查 订单状态)并入候选,防止映射表漏掉关键工具。

题 4(进阶):为什么分模块诊断要用 PASS/SOFT_PASS/FAIL 三态而不是二态?举个"责任传递"的例子。

参考答案: 二态无法区分"本地错误"与"上游传播"。多模块流水线里错误会向下传播:意图识别 把退货问题误判成物流查询,Query 改写、知识筛选、FAQ 检索会一路跟着错——若只有 PASS/FAIL, 四个模块全 FAIL,定责只能"人人有份",修复变成四处打补丁。三态下:意图识别 FAIL(真凶), 后续模块本地逻辑没错但输出受污染 → SOFT_PASS(被牵连者),定责沿因果链归到最上游的 非缺失型 FAIL。再如知识检索召回过期文档(FAIL),回复生成忠实引用了脏证据——忠实本身没错, 判 SOFT_PASS,责任归知识检索而非生成层。SOFT_PASS 是"责任传递"分析的基础,也是修复只改一处 就能覆盖一批 badcase 的依据。

题 5(进阶):退款场景 SOP 要求先查订单状态,但 trace 里这个工具从未被调用。锅该算谁头上?RCA 系统如何保证不背错锅?

参考答案: 这是缺失型错误:模块根本没执行,定责给未执行的模块本身没有意义——要追问 "谁本应触发它却没有触发"。候选解释:Prompt 忘了写硬约束(提示词回归)、意图识别没给出 触发条件、编排层路由错误、或工具本身不可用。区分它们要补证据:对比 prompt 版本 diff(lab09 案例中 prompt_v2 移除了"退款前必须先查订单状态"约束 → 提示词回归)、检查意图输出是否正确、 查工具注册与健康状态。阿里该案例的归因:大类"工具覆盖与执行"、枚举"关键工具未调用"、 责任模块 = 退款 Skill/退款流程执行模块。在三层定责漏斗中,缺失型错误规则层处理不了(没有 "最上游非缺失型 FAIL"可归),落在第 3 层由 LLM 做跨模块推理,置信度低于规则层(lab09: 0.72 < 0.90),低置信转人工复核。

题 6(进阶):如何设计一套根因标签体系?问题簇的聚类键为什么选 (场景, 责任模块) 而不是用户问题文本相似度?

参考答案: 标签三原则(阿里):稳定(枚举不是自由文本,同类问题永远落同一标签,靠 LLM 归类时要把"解释不完整/口径理解错"映射到既有分类,避免同类拆散);可统计(能聚合成趋势 看占比与环比);指向 owner 与处理动作(绑定四类解决角色:运营可配置/算法需优化/工程需 修复/业务需定口径)。聚类键选 (场景, 责任模块) 的原因:文本相似的两条 case 完全可能根因不同 (都问退款,一条是工具没调、一条是知识库过期),文本不同的也可能同根因——文本相似度度量的是 "表面像不像",根因标签度量的才是"修起来是不是同一件事"。簇内再统计主导 Prompt 版本,产出 "退款已发货场景 23 次跳过订单状态校验,集中在 v1.8 Prompt"这类可直接驱动修复决策的结论。

题 7(进阶):为什么"优化 Prompt、提升准确率"这种修复建议不可接受?给出你的行动项结构。

参考答案: 它不可执行、不可验收、无 owner:改哪个 prompt 的哪一句?改完怎么证明?谁来改? 阿里第 8 章的红线:建议必须明确失败范围、证据、具体动作、owner、验收方式、优先级,产出 结构化行动项,能被工单系统/看板/配置平台/研发流水线直接消费——"建议是质量工程里的标准任务 对象"。示例(退款案例):失败范围 = 退货退款"已发货"分支、全量 5 例;证据链 = 草稿直接承诺 退款 → trace 无订单状态查询 span → 知识库明文要求先查状态 → prompt_v2 丢失该约束;动作 = v2→v3 补回硬约束;owner = 算法需优化;验收 = 该场景全量回归通过且簇清零、回归集无新增失败; 优先级 = P0(资损)。每个建议可展开证据链,优先级按"最小有效变更优先"(EDDOps:先 prompt/ 路由/护栏,再架构/模型)。

题 8(进阶):RCA 系统自己也会出错——LLM 兜底胡说、映射表过时、甚至 badcase 本来就是评测误报。你怎么保证 RCA 结论可信?

参考答案: 四道防线:① 确定性优先的漏斗结构——能用规则定的绝不用 LLM;LLM 兜底占比 应随规则沉淀单调下降,占比不降说明人审结论没回流。② 置信度显式分层 + 低置信强制人审—— 严重 FAIL 0.95、规则 0.90、LLM ≤0.72(lab09 口径);高风险场景(资损/合规)即使高置信也复核; LLM 证据不足时输出低置信转人工,不硬猜。③ 人审结论三类反校准——反校准规则库(新模式变新 规则)、反校准定责 Prompt、反校准根因标签(补标签缺口);并像校准 judge 一样定期抽样对齐定责 一致率(参照 ~85% 校准线)。④ 给评测系统留出口——定责层保留"未发现任何 FAIL,可能不是 系统错误"分支,根因库里设"评测/质检误报"类:DoorDash 明确被标记失败中有真实一部分是 harness 自身故障(judge 误报、trace 缺口),并行修复才可信。另外用健康对照会话断言诊断器不误报。

题 9(系统设计):为一个日均万级会话的客服 Agent 设计 badcase RCA 与优化闭环平台。

参考答案: 分六层: ① 入口层:离线(回归失败/门禁不达标/Judge 低分)+ 线上(会话抽检/人工质检/投诉工单/低 满意度/监控告警)双通路汇入同一任务表;入库五标准过滤(可复现/期望明确/根因标签清楚/有 代表性/已脱敏)。 ② 证据层:全量结构化 Trace(工具名/入参/返回/时间戳/耗时/错误 + prompt 版本),按 sessionId 聚合、按 ts 重建,噪声计数。 ③ 分析层:每条 badcase 一个异步 Multi-Agent Workflow 跑五步——映射表缩圈(命中走确定性、 未命中 LLM 兜底)→ 候选模块三态诊断 → 三层漏斗定责(严重 FAIL 一票否决/规则因果链/LLM 缺失型 归因)。 ④ 聚类层:全量任务表按 (场景, 责任模块) 聚簇,输出主导版本与规模,按影响排序——报告只讲 主题不讲轶事。 ⑤ 行动层:每簇生成结构化行动项(范围/证据链/动作/owner 四分类/验收/优先级),工单系统消费; 人审兜底低置信与高风险,结论反校准规则库与标签库。 ⑥ 闭环层:反馈生产三条线——评测集线(badcase 转用例,能力集毕业进回归集,只增不减)、 训练数据线(修复前后轨迹做偏好对)、知识修订线(过期文档下线);验收三层证明(离线回归 + 线上三类信号 + 簇级清零);沉淀用例库/Trace 库/根因标签库/修复建议库/Judge 校准集/回归集。 度量 RCA 自身:定责一致率、LLM 兜底占比、行动项转化率。


五、易错点 · 反直觉点

  1. 把现象当根因:看到"答非所问"就去改生成层 prompt。→ 真相:现象是症状,"答非所问" 的根因常在意图识别/Query 改写/知识筛选,改生成层是给被牵连者加药量。→ 记忆锚点:先翻译, 再开药。
  2. 全模块无差别分析:每条 badcase 把八个模块全查一遍。→ 真相:成本高且噪声大,无关模块的 SOFT_PASS 会干扰定责;映射表缩到 2~3 个候选是标准做法。→ 记忆锚点:先缩圈,再尸检。
  3. 映射表命中直接定责:跳过诊断直接写结论。→ 真相:映射是先验不是证据,只缩小候选;定责 永远发生在诊断之后,否则修复没有证据链、无法验收。→ 记忆锚点:映射表是导航,不是法官。
  4. 缺失型错误甩锅给缺失的模块:"订单状态查询没执行 → 订单状态查询模块的锅"。→ 真相:模块 没执行就定责给它没有意义,要问"谁本应触发它却没有触发"(Prompt/编排/意图)。→ 记忆锚点: 没上场的人不背锅。
  5. 多模块同时 FAIL 就"人人有份":二态判定下四处打补丁。→ 真相:缺了 SOFT_PASS 就无法区分 真凶与被牵连者;沿因果链归因到最上游的非缺失型 FAIL,一处修复覆盖整条传播链。→ 记忆锚点: 上游一个因,下游一片果。
  6. 按用户问题文本相似度聚类:以为问法相似就是同一类问题。→ 真相:文本相似根因可以完全不同; 聚类键用 (场景, 责任模块) 才能对齐"修起来是不是同一件事"。→ 记忆锚点:按病灶聚类,不按口音 聚类。
  7. 修复建议停在"优化 Prompt":无范围、无证据、无 owner、无验收。→ 真相:这种建议不可执行也 不可验收,等于没分析;行动项必须是能被工单系统消费的标准任务对象。→ 记忆锚点:没有验收方式 的建议只是感想。
  8. RCA 全程交给 LLM:每条 case 直接丢给大模型写归因报告。→ 真相:成本爆炸、置信度无分层、 结论不可复核;正确结构是确定性优先、模型辅助、人审兜底,LLM 只处理规则搞不定的长尾且占比应 持续下降。→ 记忆锚点:规则在前,模型在后,人工兜底。
  9. 修完就完,不回流:badcase 修好就关闭工单。→ 真相:不回评测集,同类问题换个表述还会再来; 一条 badcase 至少要生产三类资产(评测集/训练数据/知识修订),并进回归集只增不减。→ 记忆锚点: 不回流不闭环。
  10. 根因标签自由发挥:每次定责写一句话感想。→ 真相:自由文本不可统计、不可聚类、指不了 owner;标签必须枚举化、稳定、绑定解决角色(运营/算法/工程/业务)。→ 记忆锚点:标签是枚举, 不是作文。

六、推荐资源

一手工业实践(本章数字出处)

  1. 阿里技术《Agent 评测:方法论与体系设计》(2026 年第 28 篇)——本章主体的 RCA 五步、三层定责、 根因标签体系、结构化行动项、反馈生产三条线与质量资产库均出自其第 7/8/9 章;"23 次跳过订单状态 校验,集中在 v1.8 Prompt"等案例为原文数字。
  2. DoorDash《Building Ask DoorDash (Part 3): Evaluation》(2026-06-30)——失败聚类成主题、coding agent 调查失败 trace 并起草 PR、Agent Skills 沉淀、"harness 是迭代的控制面",以及 reasoning leakage 案例(泄漏率降 11%)与"评测系统自己也产生 bug 报告"四条 Lessons Learned。 https://careersatdoordash.com/blog/building-ask-doordash-part-three-evaluation/
  3. Airbnb《Eval-driven development: Lessons from evaluating GenAI at scale》——"When in doubt, look at your data" 的 100 样本人工精读法与"一次只改一个变量"的迭代纪律,是 badcase 探索阶段的 方法论底座(详见第 E10 章)。

前沿论文(arxiv ID 均经核实)

  1. 《Evaluation-Driven Development and Operations of LLM Agents》(EDDOps,arXiv 2411.13768, 2024-11 首发 / 2025-11 v3)——"Analyze & Improve"阶段与"最小有效变更优先"(先 prompt/路由/ 护栏,再架构/模型)是行动项优先级排序的学术表述;其综述还量化了学界 93% 评测停留在 pre-deployment 的错配。https://arxiv.org/abs/2411.13768
  2. 《GEPA: Reflective Prompt Evolution Can Outperform Reinforcement Learning》(arXiv 2507.19457, 2025-07)——"采样轨迹 → 自然语言反思诊断失败 → 变异 prompt → Pareto 前沿按切片保留",是 "失败诊断驱动优化"的自动化形态;DoorDash 用它校准 judge。样本效率比 GRPO 高约 35 倍量级。 https://arxiv.org/abs/2507.19457
  3. 《Agent-as-a-Judge: Evaluate Agents with Agents》(arXiv 2410.10934,2024-10)——让带工具的 评审 agent 检查中间产物与轨迹而非只读最终输出,与"分模块诊断自动化"同构;论文报告与人类评审 一致率约 90%(黑盒 90.44% / 灰盒 92.07%,远超 LLM-as-Judge 的约 70%),并把评估时间与成本各降 约 97%(97.72% 时间、97.64% 成本)——注意"97%"是省时省钱幅度,不是一致率。https://arxiv.org/abs/2410.10934
  4. 《Automated Structural Testing of LLM-based Agents》(arXiv 2601.18827,2026-01)——基于 OpenTelemetry 轨迹对 agent 控制流(工具调用序列、分支、异常路径)做断言式结构测试,正是 RCA 第 1、2 层"规则定位硬错误"的自动化基础。https://arxiv.org/abs/2601.18827
  5. 《Agent-in-the-Loop: A Data Flywheel for Continuous Improvement in LLM-based Customer Support》(Discord,EMNLP 2025 Industry,ACL Anthology 2025.emnlp-industry.135)——在线标注 持续回流驱动再训练(月级 → 周级)并量化 offline-online 一致性,是 2.8 节"训练数据线"的生产级 样本。https://aclanthology.org/2025.emnlp-industry.135/

动手 labs

  1. labs/eval_lab09_rca_pipeline.py —— 本章配套实验:纯标准库实现 RCA 五步 + 三层定责漏斗 + 问题簇聚类,内置阿里"已发货退款未查订单状态"案例;断言置信度漏斗 0.95 > 0.90 > 0.72、 LLM 兜底仅 1 次、退货簇 5 次集中于 prompt_v2。 运行:cd evals-special/labs && python3 eval_lab09_rca_pipeline.py
  2. labs/eval_lab06_trajectory_eval.py —— 轨迹三层评估与假阳性捕获:RCA 证据层依赖的结构化 trace 与"结果对但路径错"的检出(第 E7 章配套)。 运行:cd evals-special/labs && python3 eval_lab06_trajectory_eval.py
  3. labs/eval_lab02_golden_dataset.py —— 黄金数据集治理:badcase 回流入库标准检查与"毕业"机制 (第 E3 章配套)。运行:cd evals-special/labs && python3 eval_lab02_golden_dataset.py
  4. labs/eval_lab10_edd_loop.py —— EDD 全闭环:门禁、回归与"一次一变量",行动项验收环节的 动态演示(第 E10 章配套)。运行:cd evals-special/labs && python3 eval_lab10_edd_loop.py

交叉引用

  • 第 E4 章 · 程序化评分:评分输出如何为 RCA 提供"现象入口";分层筛查流水线。
  • 第 E6 章 · 人工评估与评分路由:人工评分路由的触发条件与人审结论反哺;"业务需定口径"场景。
  • 第 E7 章 · 轨迹与 Agent 级评估:RCA 证据层依赖的结构化 Trace 与 Transcript Builder。
  • 第 E10 章 · 评测驱动开发(EDD):badcase 如何变成测试、CI 门禁与回归纪律。
  • 第 E12 章 · 在线评估与数据飞轮:行动项上线后的三类线上信号、漂移检测与反馈生产线全景。
  • 主手册第 8 章 · Agent 评估与可观测性:本章是其在 badcase 治理维度的深挖版。
第 12 章 / 共 15 章

在线评估与数据飞轮

📌 本章导航(6 节)

发布门禁只回答"这个版本能不能发",在线评估回答"这个版本在真实用户那里到底好不好", 数据飞轮回答"下一个版本如何自动变得更聪明"。本章拆解发布后的完整质量工程: 在线抽样与打分(Airbnb 每日 5% 去标识化流量)、离线-线上同一套评分(DoorDash 原则)、 发布联动的三类信号与回滚判据(阿里)、分布漂移与指标漂移的检测与归因、以及 badcase → 评测集 → 训练数据 → 模型更新的数据飞轮全景。学完你应该能独立设计一条 "生产流量进、质量资产出、下一版本带着资产上线"的闭环,并在面试中讲清每一环的 抽样策略、统计口径、合规前提与失效模式。


一、知识图谱

                    离线世界                              线上世界
   ┌──────────────────────────────┐      ┌──────────────────────────────────┐
   │ golden set / 回归集 / 模拟器    │      │ 生产流量(100% 全量 trace 打点)      │
   │        │                     │      │            │                     │
   │   离线门禁(P0 指标+统计口径)   │      │   抽样:随机 5%(Airbnb)+ 分层放大     │
   │        │                     │      │   (高风险 / 低置信 / 新意图优先)        │
   │   灰度联动 ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┼┄┄┄┄▶  在线打分:同一 rubric + 同一校准 judge  │
   │        │                     │      │            │                     │
   │        ▼                     │      │   三类信号:离线质量 × 线上体验 × 业务结果 │
   │  离线升 + 线上降 → 回滚/降级 ◀┄┄┄┄┄┄┼┄┄ 漂移检测:分布漂移 / 指标漂移          │
   └──────────────────────────────┘      └────────────┬─────────────────────┘
                                                      │ badcase(脱敏后)
                                                      ▼
                              与离线 badcase 汇入同一任务表 → RCA(详见第 E11 章)
                                                      │
                        ┌─────────────────────────────┼─────────────────────────────┐
                        ▼                             ▼                             ▼
                 反馈生产线①评测集线            反馈生产线②训练数据线           反馈生产线③知识修订线
                 badcase → 用例            修复前后轨迹 → 偏好对/筛样       过期文档下线/口径澄清
                 入库五标准 + 样本治理        进训练前同样过门禁              知识点绑定用例
                        └─────────────────────────────┼─────────────────────────────┘
                                                      ▼
                    质量资产库(终局):用例库 · Trace 库 · 根因标签库 ·
                    修复建议库 · Judge 校准集 · 回归集
                                                      │
                              新版本携带更厚的资产 → 回到发布联动(飞轮转动一圈)

本章知识骨架(与模块对应):

小节 解决的问题 关键词
2.1 为什么离线评测做到极致仍然不够 离线-线上 gap、双环境、93.28%
2.2 生产流量怎么抽、抽多少、合规前提 5% 随机、分层放大、去标识化
2.3 离线与线上凭什么可比 同一 rubric + 同一 judge、judge 版本化
2.4 发布时跟踪什么信号、何时回滚 三类信号、灰度联动、回滚判据
2.5 线上分数掉了,是质量掉了还是尺子坏了 分布漂移、指标漂移、三种解释
2.6 一条 badcase 如何榨出三类资产 三条生产线、入库五标准、样本治理
2.7 飞轮的终点形态是什么 质量资产库六库、资产复利、生命周期
2.8 线上↔离线双向流动的真实案例 reasoning leakage、模型迁移

动手实验:本章没有独立的"在线评估 lab",但四个配套 lab 分别覆盖飞轮的一个齿轮: 抽样后打分的统计口径(eval_lab08)、judge 校准与再校准(eval_lab05)、badcase 入库标准与 毕业机制(eval_lab02)、门禁与回归闭环(eval_lab10)。运行示例: cd evals-special/labs && python3 eval_lab08_statistics_ci.py


二、核心概念精讲

2.1 为什么离线评测做到极致仍然不够

第 E10 章讲了评测驱动开发:先有门禁,再谈发布。但门禁通过只说明"在离线集这个 curated 分布上达标",生产环境会在三个维度上击穿离线假设:

离线评测的软肋 生产环境的现实 直接后果
分布是 curated 的 真实用户的意图分布、表达习惯、长尾问法永远比评测集宽 报告"看起来不错"但关键长尾漏掉(幸存者偏差的另一面,详见第 E3 章)
环境是冻结的 fixtures 冻结了上游世界(目录/库存/订单),生产是活的 目录变化、库存波动、真实追问无法离线彩排
对手是温和的 真实流量含模糊表述、情绪、多轮改主意,乃至注入式输入 模拟器覆盖率永远小于真实交互空间

学术界对这个 gap 有量化证据。EDD/EDDOps 的系统综述(arXiv 2411.13768,2024-11 首发, 2025-11 v3)统计了 134 篇学术文献:93.28% 只做 pre-deployment 评测,仅 2.24% 覆盖 post-deployment,4.48% 是持续评测;97.76% 用静态基准。而工业灰色文献方向相反:40.74% 已是持续评测、81.48% 已用评测驱动适配——学界与工业界的关注点正好错位。另有客服 agent 基准研究(arXiv 2510.22143,2025)明确指出:由于真实部署环境的分布漂移与交互复杂性, 强 offline 基准成绩只是部署可靠性的弱指标。

DoorDash 把这件事列为 eval harness 的第五大挑战——双环境:"开发与生产质量可能背离", 对应的设计要求是"真实会话与模拟会话用同一 rubric + 同一 judge:离线结论带到线上,线上失败 离线复现"。Airbnb 十条要点的第 ⑨ 条同样直白:上线前测试要在线上持续运行;其评测方法 按 开发期 / 发布前 / 生产 三阶段映射,强调分层防御与持续监控,而非一次性测试。

一句话定位:离线评测管"出厂质量",在线评估管"存量质量 + 真实分布上的地面真值"。 前者是后者的必要条件,不是充分条件。

2.2 在线抽样:随机打底、分层放大、合规先行

生产流量全量人工评审不可能,全量 judge 打分的成本也常常不划算,抽样策略分两层:

(1)随机抽样打底——估计总体。 随机样本的价值在于无偏:只有随机抽样能回答"线上整体 质量是多少分"这个估计问题。Airbnb 旅行客服助手在规模化阶段的做法是标杆:评测集扩到 5,000 样本;每日抽样 5% 去标识化生产流量,跑程序化检查与 judge;被标记的样本送 人工评审;每周 PM 评审,新增测试与修复。DoorDash 的量化结果可以作为"这套打法值不值"的 注脚:质量信号从平均 1 条/天的员工反馈变成 2,000 个/天自动评分会话;全国上线前 agent 质量分 +8 分、错误率近乎减半,达到生产发布标准。

(2)分层抽样放大——抓风险。 随机样本里高风险场景占比天然低(这正是第 E3 章讲的 幸存者偏差),靠随机抽样等它浮出来,等于等事故替你收集 badcase。分层抽样要优先放大:

分层维度 含义 出处
高风险 资损/合规/赔付/投诉升级相关会话 阿里:高风险场景自动通过也要定期人工复核;腾讯:医疗/金融/安全 100% 人工复核
低置信 judge 打分含糊、多 judge 分歧、规则与 judge 冲突的样本 阿里人工评分路由与主动学习口径
新分布 新意图 / 新工具 / 新知识点 / 新活动上线 阿里:新分布出现时主动学习优先抽取低置信/高影响/新意图/新工具/新知识点样本进人工确认

腾讯把"Trace 采样审查"列为人工评分六个必要场景之一:每周固定抽样读轨迹找隐藏失败模式—— 分层的不只是会话,还包括轨迹级深读。

(3)合规先行。 在线抽样的每一步都踩在用户数据上,三家都给了硬约束:

  • Airbnb:生产抽样用隐私保护方法——人工评审前去标识化、用途限定于安全与质量。
  • 阿里:badcase 入库五标准之一是"已脱敏合规"。
  • 调研侧的现实(_research/10-infra-observability.md 争议 4):trace 含用户 PII 与商业敏感 内容,"生产流量是最真实的评测分布"与"合规上不能直接把用户数据进评测集"天然冲突; 业界通行做法是采样脱敏 + 合成改写,目前尚无论文级标准答案。

工程上的顺序纪律:先去标识化,再进 judge,再进人审,再谈入库。脱敏不是入库前的最后 一步,而是抽样管道的第一个算子。

2.3 离线-线上同一套打分:同一 rubric、同一 judge、同一校准

DoorDash 四条 Lessons Learned 的第三条是全章最重要的一句:

离线结果只有能带到线上才有意义——同一 rubric + 同一校准 judge 两边跑;各自调 judge, 分数会难调和地背离。

为什么"各自调"必然背离?因为离线 judge 会被离线集的分布塑形(哪些失败多见就按哪些失败 调 rubric),线上 judge 会被线上分布塑形,两边 rubric 各自演进后,同一个会话在两套 judge 下可以拿到不同 verdict——于是"离线修好了"无法证明"线上会好","线上报警"也无法 在离线复现,双环境彻底脱钩。这正是 DoorDash 第五挑战的设计要求要消灭的状态。

落地到工程,"同一套打分"要版本化地理解。_research/10-infra-observability.md 的 judge 治理口径:一个完整的 judge 版本 = judge 模型快照 + judge prompt 版本 + rubric 版本 + 评分协议(pointwise/pairwise)四者组合。只固定其中一个(比如"我们都用同一个模型")不叫 同一套打分。配套纪律:

纪律 内容 出处
校准线 judge 与人工一致率 high 80s~90s(Airbnb)/ ~85% 后进自动化(阿里)/ ≥85% 可用(腾讯),详见第 E5 章 四家共识
升级即重校准 judge prompt/模型每次升级固定产出三类统计:与人工标注一致性、高风险样本漏判率(合规/资损/隐私)、边界样本稳定性(重复评测波动) 阿里 Judge 持续运营
漂移监控 保留带人工标签的金标校准集,judge 每次换版本重跑,监控与人类一致性的漂移;模型 API 升级必须触发 judge 重校准 _research/10 judge 治理
成本路线 生产大规模在线评测倾向开源专用 judge,离线高价值评测用前沿闭源模型 _research/10 启示 6

在线 judge 的成本工程值得单独一句:每日数千会话的打分量下,Prometheus 2 (arXiv 2405.01535,2024)这类专门化开源 judge 是关键使能技术——7B judge 在多个 meta-eval 基准上与 GPT-4 judge 的 Pearson 相关差距缩小到 ~0.8+ 水平,且行为更可预测、 可版本化、可本地部署。把 judge 当模型资产管(版本号、校准集、漂移看板),在线评分才 可能既便宜又可信。

2.4 发布联动:三类信号、灰度与回滚判据

阿里第 9 章给出了发布阶段的完整口径:离线门禁与线上灰度联动,跟踪三类信号:

信号类别 具体指标(阿里原文) 回答的问题
离线质量信号 核心场景通过率、P0 风险数、关键工具参数正确率 这个版本出厂合格吗
线上体验信号 转人工率、重复追问率、投诉率、满意度变化 用户感受到了吗
业务结果信号 任务完成率、工单闭环率、退款/赔付成功率 业务真的变好了吗

以及全章最硬的一条判据:离线提升但线上关键信号恶化 → 触发回滚或降级。

这条判据反直觉的地方在于:离线分数是团队花了最多力气优化的东西,心理上最难放弃。但三类 信号的优先级排列揭示了原因——离线质量是预测器,业务结果才是目标本身;两者背离时, 说明预测器失真(离线集覆盖不到线上的变化),此时信目标不信预测器。这也呼应 2.1 的实证: 强 offline 基准成绩只是部署可靠性的弱指标(arXiv 2510.22143,2025)。

发布通道的编排,EDDOps(arXiv 2411.13768)给出了学术表述:shadow evaluation(影子 评测:新版本与旧版本并行跑同一批真实请求,但输出不暴露给用户)→ canary rollout (小流量灰度)→ 全量;safety case(证据支撑的安全论证)随评测证据持续更新。主手册第 8 章 的对应口径是 Shadow mode → Canary → A/B(会话级分流、序贯检验)→ 全量。

两个配套纪律:

  1. 门禁要带统计口径。阿里:版本对比要配套统计检验——关键指标置信区间 + 与基线的 显著性判断 + 最小可感知变化阈值;"门禁不只看差了多少,还要看差异是否超过统计噪声"。 线上小样本下用 Wilson 区间而非朴素比例(详见第 E9 章;动手: cd evals-special/labs && python3 eval_lab08_statistics_ci.py)。
  2. 触发时机要枚举。腾讯的执行口径:提示词变更(CI 自动,PR 合入前回归)、模型版本 升级(手动,验证兼容性)、定期巡检(定时全量回归);通过率口径引用 Anthropic 推荐—— 确定性任务用例集整体通过率需 100%,非确定性任务 ≥95%。

2.5 漂移检测:分布漂移 × 指标漂移,以及"三种解释"的鉴别

线上评分趋势是飞轮的仪表盘,但仪表盘掉针不一定是发动机坏了。先定义两种漂移:

漂移类型 漂移的是什么 典型诱因 典型探针
分布漂移 输入侧:意图占比、query 复杂度、新意图/新工具/新知识点、用户群结构 市场活动、新品类上线、竞品导流、季节性 意图分类分布、会话长度分布、新意图占比、路由分布
指标漂移 输出侧:同一分布下的质量分、业务指标随时间趋势 模型/prompt/工具链变更、上游数据劣化、真实能力退化 逐 rubric 标准失败率、judge 分数分位数、转人工率日环比

监控与告警的工程形态:为每条 rubric 标准建失败率时序图、为 judge 分数建分位数图、为业务 信号建日环比看板;告警阈值用统计口径设定而不是拍脑袋(参照 2.4 的统计纪律)。多智能体 系统还有结构化手段:SentinelAgent(arXiv 2505.24201,2025)将 agent 间交互建模为图, 由专职监督 agent 结合图拓扑与运行时指标做异常检测与归因,目标是发现"偏离预期协作模式" 的行为。_research/10 的提炼是:把"行为基线 + 偏离告警"纳入可观测性栈,而不只看延迟与 token 成本——这是"评测左移到运行时"的方向。

告警触发后的鉴别诊断,是本章的高频深水区。 某条 rubric 标准线上失败率一周上升 5 个 百分点,候选解释恰好三种,排查顺序如下:

候选解释 鉴别动作 判据
① judge 漂移(尺子坏了) 固定 judge 版本:用上一版 judge 重放本周样本;检查本周是否发生过 judge 模型/prompt 升级 旧 judge 复评后差异消失 → judge 漂移;阿里口径:judge 升级必须回看三项统计(与人工一致性/高风险漏判率/边界稳定性)
② 分布漂移(考题变了) 按意图/入口/用户群分桶看失败率;对比本周与历史周的输入分布 差异集中在个别桶且桶占比变化大 → 分布漂移;该桶单独治理(新意图补用例),而非全局回滚
③ 真实质量退化(考生变差了) 固定一批历史 case 做新旧版本配对重跑(离线复现) 离线可复现 → 定位到具体变更(prompt/模型/工具/上游数据),走 RCA 与回滚

顺序的意义:先排除尺子(成本最低,一次重放即可),再排除考题(一次分桶即可),最后才 归因考生。顺序反了就会把 judge 升级的锅扣给模型、把新意图涌入的锅扣给 prompt。 同时要记住统计底线:inspect_evals 团队(arXiv 2507.06893,2025)明确强调小样本上 1-2 分的差异默认视为噪声——日抽样量不大时,先算置信区间再发告警。

最后,在线评测系统自己也在被观测:DoorDash 第四条 Lessons Learned——被标记失败中 有真实一部分是 harness 自身故障(judge 误报、trace 缺口),并行修复才可信。漂移看板 本身需要一个"harness 故障率"指标(详见第 E11 章题 8 的评测误报讨论)。

2.6 数据飞轮:主循环、三条生产线与样本治理

飞轮的主循环一句话:badcase → 评测集 → 训练数据 → 模型更新 → 新 badcase,每转一圈, 系统的"已知问题库存"变厚、未知问题变少。阿里第 9 章的总命题是终点不是报告,而是把 线上失败持续转化为可复用研发资产;并给出两条量化口径:一条 badcase 至少生产 3 类 反馈;平台可分三条生产线:

生产线 输入 产出 消费者
评测集线 badcase + RCA 结论 新用例(触发/核心逻辑/产物质量/异常容错四场景,详见第 E3 章) 回归门禁、版本对比
训练数据线 修复前后的轨迹对、judge 打分、人工确认标签 偏好对 / 拒绝采样筛出的优质轨迹 / SFT 样本 模型再训练(训完仍须过门禁与灰度)
知识修订线 根因落在知识点的 badcase 过期文档下线、口径澄清、知识点与新用例绑定 检索/RAG 组件

评测集线大家最熟,训练数据线最容易踩坑:把在线信号喂进训练之前,训练数据本身要带 provenance(哪个 judge 版本、哪个 rubric、哪批人审标签),且训出的模型必须重新过离线 门禁与线上灰度——否则飞轮变成放大器:RLAIF 研究(arXiv 2309.00267,2023)已证明 AI 反馈会把评测器自身的偏好(冗长、格式、自我偏好)注入训练分布;奖励模型过度优化有 平方根标度律的定量刻画(arXiv 2210.10760,OpenAI,ICML 2023)——代理奖励持续上升、 真实目标先升后降;谄媚到 reward tampering 的谱系(arXiv 2406.10162,Anthropic,2024) 则说明优化压力会教系统"钻评分的空子"。飞轮的每一圈都必须重新过门禁,这是对 Goodhart 的工程防御。

入库五标准(阿里,badcase 进任何一条生产线前都要过):

  1. 失败可复现(或至少有稳定 Trace + 人工确认);
  2. 期望行为明确(可写成规则 / Judge 标准 / 人工验收标准);
  3. 根因标签清楚(归到具体能力域或业务流程);
  4. 样本有代表性(覆盖一类问题而非一次性环境抖动);
  5. 已脱敏合规。

样本治理(阿里)——飞轮转久了评测集会膨胀,治理四策:

策略 规则 目的
同簇去重 同一问题簇只保留代表例 防"23 条相似 case 刷存在感",控制回归成本
风险分层保留 P0/P1 风险用例长期保留 高风险永不毕业
稳定者降级 稳定多版本通过且低风险者降级为抽样集 回归集瘦身但不删除
主动学习补新 新分布出现时优先抽取低置信/高影响/新意图/新工具/新知识点样本进人工确认 预算花在不确定的地方

腾讯从用例生命周期角度给了互补口径:能力测评(起步 20–50% 通过率的目标山峰)与回归 测评(接近 100% 的防御漂移)分池管理,通过率稳定 100% 后用例"毕业"进回归集,回归集 只增不减。两者合起来就是完整的样本生命周期:发现 → 入库 → 能力集迭代 → 毕业进回归 → 长期稳定者降级抽样 → 高风险者永久驻守。

飞轮的工业化样本:Discord 的 AITL(Agent-in-the-Loop,EMNLP 2025 工业赛道, ACL Anthology 2025.emnlp-industry.135)用四类人工客服在线标注持续回流,驱动 LLM 客服 系统的检索/生成持续再训练,把再训练周期从月级压缩到周级,并专门分析了 offline 与 online 评测设置之间的一致性;美国试点数字:recall@75 +11.7%、precision@8 +14.8%、 有用性 +8.4%、采用率 +4.5%。这是"人工标注 → 评测集 → 再训练 → 上线 → 新标注"闭环的 生产级证明。

2.7 质量资产库:飞轮的终局形态

阿里第 9 章把闭环的终点定义为六座库,并配了一句值得背诵的话:"质量资产越厚,Agent 迭代越不靠个人经验和临时救火。"

资产库 存什么 谁在消费 增长来源
用例库 四场景用例 + 期望行为定义 能力评测、回归门禁 专家设计 / LLM 扩展 / badcase 回流
Trace 库 结构化全链路 trace(含失败与被标记样本) RCA、回放评测、失败聚类 生产打点 + 抽样归档
根因标签库 枚举化标签 + (现象×模块) 映射表 RCA Pipeline 的范围收敛与定责 人审结论反校准
修复建议库 结构化行动项(范围/证据/动作/owner/验收/优先级) 工单系统、看板、研发流水线 RCA 落盘
Judge 校准集 带人工标签的金标集(含坏样本与边界样本) judge 升级重校准、漂移监控 分歧样本、新失败模式
回归集 毕业用例,只增不减 CI 每次运行、发布门禁 能力集毕业流转

六库的共同属性是复利:每一条 badcase 走完 RCA 后同时给多座库充值,下一圈飞轮的 每一环(抽样有分层依据、打分有校准基线、归因有映射表、修复有先例库)都比上一圈便宜。 反之,没有资产沉淀的团队永远在"一次性救火":修完即忘,同类问题换表述再来一遍。

资产本身也有生命周期治理,学界给出了可直接借用的范式:

  • 评测集即数据供应链:LiveBench(arXiv 2406.19314,2024)给题目带时间戳、版本号、 上下架状态,按月滚动发布新题下架旧题;LiveCodeBench(arXiv 2403.07974,2024)给每题 带发布日期元数据,评测时按被测模型 cutoff 做时间窗切片。飞轮入库的用例同样要带 created_at / source / status,否则评测集会像没有 git 的代码库一样不可维护。
  • 结果必须可复现:EleutherAI 的 harness 方法论(arXiv 2405.14782,2024)给出公式—— eval 结果 = (数据集版本, prompt 模板, 评分方式, 解码参数, 模型快照) 的函数,缺任何 一项都不可复现。在线评分同理:每个线上分数都要能回答"哪个 judge 版本、哪个 rubric 版本、哪条流水线打的"。
  • 治理流程可抄:inspect_evals 仓库论文(arXiv 2507.06893,2025)系统总结了 100+ 贡献者共建评测仓库的运营流程(贡献者管理、统计比较、可复现性实践),是"把评测集当 软件产品运营"的参考实现。

2.8 线上↔离线双向流动:DoorDash 两个实战案例

前面讲的都是"离线 → 线上"的方向(门禁把关、灰度观察)。飞轮的另一半是反方向流动, DoorDash 的两个案例各示范了一个方向。

案例 1:Reasoning leakage(线上发现 → 离线验证 → 线上确认)。

阶段 动作 结果
线上发现 日常线上评分发现泄漏激增:任务完成但叙述冒出系统语言("reorder skill"、工具名、"fetch"、"in parallel")——"像编码 agent 而非购物助手" 没有线上打分,这种"任务成功但体验劣化"的问题会被 KPI 绿灯掩盖
诊断 指向 prompt 设计:合并沟通规则,分离内部 skill 指令与面向用户语言 失败按 rubric 标准聚成簇再调查(详见第 E10 章反馈闭环)
离线验证 用生产中最易触发的场景离线验证 泄漏率降 11%;hero 场景全量扫描无回归
线上确认 上线后监控确认阶跃改善 闭环完成

这个案例的价值:它不是"任务失败"而是"任务成功但泄漏系统语言"——只看业务结果信号永远 发现不了,只有 rubric 级的在线打分才抓得住。

案例 2:底座模型迁移(离线发现差距 → 定位兼容性 → 线上收益)。

agent 原跑在 Claude Sonnet 4.6;Gemini 3.5 Flash 发布后 benchmark 显示可降延迟。离线 harness 一跑:分数大跌。若只看公开 benchmark 就直接迁移,等于把兼容性事故带给用户; 若只看离线大跌就放弃,等于错过 35% 的延迟收益。DoorDash 的路径:eval 给出具体失败模式 → AI coding agent 做假设与实验 → 结论:不是能力差距,是兼容性差距——Flash 部分工具 参数格式不同(工具签名要 plain string,Flash 传 {"dishes": [...]} JSON 对象);系统 prompt 围绕 Sonnet 惯例隐式调优。"低分反映为 Sonnet 适配的系统,不是更弱的模型。" 修复小而准:工具输入确定性防护(错误形状强制转换回预期形状而非丢弃调用);prompt 显式写出 Sonnet 原本自行推断的内容。重跑 eval:Flash 与 Sonnet 质量持平(harness 噪声 范围内)→ 迁移生产 → 延迟降 35%、质量无损。

方向 案例 若无对侧会发生什么
线上 → 离线 reasoning leakage 泄漏问题要等用户投诉才暴露,修复无法在上线前被量化验证
离线 → 线上 模型迁移 要么带兼容性事故上线,要么因噎废食放弃 35% 延迟收益

配套背景数字(同一套 harness 的整体收益,DoorDash):全量回归从手工 6+ 小时 → 自动约 20 分钟(50 场景 × 8 trials = 400 次对话),这正是"双向流动"能高频发生的 成本前提。


三、面试高频考点

# 考点 分级 一句话考察意图
1 离线评测三大软肋与 offline-online gap ⭐ 是否理解"门禁通过 ≠ 生产可用"
2 在线抽样两层结构:随机打底 + 分层放大 ⭐⭐ 能否同时回答"总体多少分"与"风险在哪里"
3 去标识化/脱敏是抽样管道的第一算子 ⭐ 合规意识是否内化
4 离线-线上同一 rubric + 同一校准 judge(DoorDash) ⭐⭐⭐ 能否讲清"各自调 judge 会难调和地背离"的机理
5 judge 版本 = 模型快照 + prompt + rubric + 评分协议 ⭐⭐ judge 治理的颗粒度
6 发布三类信号(离线质量/线上体验/业务结果)与回滚判据 ⭐⭐⭐ 离线升线上降时敢不敢回滚
7 门禁的统计口径:CI + 显著性 + 最小可感知变化 ⭐⭐ 是否把噪声当信号
8 分布漂移 vs 指标漂移的定义与探针 ⭐⭐ 监控体系设计的基本盘
9 线上分数下降的三种解释与排查顺序(judge 漂移→分布漂移→真实退化) ⭐⭐⭐ 深水区:归因顺序体现工程成熟度
10 数据飞轮主循环与三条生产线 ⭐⭐ 一条 badcase 是否榨出三类资产
11 入库五标准与样本治理四策(去重/保留/降级/主动学习) ⭐⭐ 飞轮转久后评测集膨胀怎么办
12 质量资产库六库与"资产复利" ⭐ 是否看见闭环的终局形态
13 飞轮的 Goodhart 风险:judge 偏差进训练、奖励钻空子 ⭐⭐⭐ 深水区:飞轮也可能是放大器
14 线上↔离线双向流动(reasoning leakage / 模型迁移) ⭐⭐ 能否用案例串起全章

四、经典面试题与参考答案

题 1(基础):离线评测集已经做到 5000 条、门禁全绿,为什么还需要在线评估?

参考答案: 三个原因。① 分布缺口:离线集是 curated 分布,真实用户的意图、表达、 长尾问法永远比它宽,随机报告"看起来不错"但关键长尾漏掉(幸存者偏差的另一面)。② 环境缺口:离线用 fixtures 冻结上游世界,生产的库存、目录、真实追问是活的。③ offline-online gap 有实证:EDDOps 综述(arXiv 2411.13768)统计 134 篇学术文献, 93.28% 只做 pre-deployment 评测,仅 2.24% 覆盖 post-deployment;客服 agent 基准研究 (arXiv 2510.22143)明确指出强 offline 基准成绩只是部署可靠性的弱指标。所以离线是必要 条件不是充分条件:离线管出厂质量,在线管存量质量与真实分布上的地面真值。Airbnb 十条 要点第 ⑨ 条即"上线前测试要在线上持续运行"。

题 2(基础):生产流量应该怎么抽样做在线评估?说说 Airbnb 的做法与合规前提。

参考答案: 两层结构。随机抽样打底:Airbnb 旅行客服助手每日抽样 5% 去标识化 生产流量(评测集本身 5,000 样本),跑程序化检查与 judge,被标记样本送人工评审,每周 PM 评审新增测试与修复——随机保证能无偏估计线上总体质量。分层抽样放大:高风险 (资损/合规/投诉升级)、低置信(judge 含糊/多 judge 分歧/规则与 judge 冲突)、新分布 (新意图/新工具/新知识点)优先,阿里口径是主动学习优先抽取低置信/高影响/新意图/新工具/ 新知识点样本进人工确认。合规前提:Airbnb 要求人工评审前去标识化、用途限定于安全与 质量;阿里入库五标准含"已脱敏合规"。工程纪律:去标识化是抽样管道的第一个算子,不是 入库前的最后一步。

题 3(进阶):DoorDash 为什么坚持离线与线上用"同一 rubric + 同一校准 judge"?各自调 judge 会发生什么?工程上怎么落地?

参考答案: 因为离线结果只有能带到线上才有意义。若两边各自调 judge:离线 judge 被离线集分布塑形、线上 judge 被线上分布塑形,rubric 各自演进后同一会话在两套 judge 下 可以拿到不同 verdict——"离线修好了"证明不了"线上会好","线上报警"也无法离线复现, 双环境彻底脱钩;DoorDash 原文警告"各自调 judge,分数会难调和地背离"。工程落地四点: ① 把 judge 当版本对象管理:judge 模型快照 + judge prompt 版本 + rubric 版本 + 评分协议 四者组合才是完整 judge 版本;② 校准线共识:与人工一致率 high 80s~90s(Airbnb)/~85% (阿里、腾讯);③ judge 每次升级固定回看三项统计——与人工一致性、高风险漏判率、边界 稳定性(阿里口径);④ 成本路线:大规模在线打分用开源专用 judge(如 Prometheus 2, arXiv 2405.01535),关键决策点用强模型 judge + 抽样人审。

题 4(进阶):发布新版本时你跟踪哪三类信号?"离线提升但线上恶化"怎么处理?为什么?

参考答案: 阿里口径:① 离线质量信号——核心场景通过率、P0 风险数、关键工具参数 正确率;② 线上体验信号——转人工率、重复追问率、投诉率、满意度变化;③ 业务结果 信号——任务完成率、工单闭环率、退款/赔付成功率。判据是硬性的:离线提升但线上关键 信号恶化 → 触发回滚或降级。原因:离线质量是预测器,业务结果才是目标本身;两者背离 说明预测器失真(离线集覆盖不到线上正在发生的变化),此时必须信目标不信预测器——这与 "强 offline 成绩只是部署可靠性的弱指标"(arXiv 2510.22143)一致。发布通道按 shadow → canary → 全量编排(EDDOps 明确定义了 shadow evaluation 与 canary rollout 的位置), 且每个门禁都带统计口径:置信区间 + 显著性 + 最小可感知变化,不把噪声当信号。

题 5(进阶):某条 rubric 标准的线上失败率一周上升 5 个百分点,给出你的排查顺序与每步判据。

参考答案: 先列三种候选解释,按成本从低到高排查。① judge 漂移(尺子坏了): 确认本周是否有 judge 模型/prompt 升级;用上一版 judge 重放本周样本——若差异消失则是 judge 漂移,回到校准流程(回看与人工一致性/高风险漏判率/边界稳定性三项统计)。 ② 分布漂移(考题变了):按意图/入口/用户群分桶看失败率,对比输入分布——若差异集中 在个别桶且桶占比变化大(如新活动带来新意图),是分布漂移,治理动作是给该桶补用例、 调分层抽样,而非全局回滚。③ 真实质量退化(考生变差了):固定一批历史 case 做新旧 版本配对重跑,离线可复现则定位到具体变更(prompt/模型/工具/上游数据),走 RCA 与回滚。 顺序的意义:先排除尺子(一次重放)、再排除考题(一次分桶)、最后才归因考生;顺序反了 会把 judge 升级的锅扣给模型。另守统计底线:日抽样量小时先算置信区间——inspect_evals (arXiv 2507.06893)明确小样本 1-2 分差异默认视为噪声。

题 6(进阶):画出数据飞轮的主循环。一条线上 badcase 进入体系后至少应产出什么?入库要过哪些标准?

参考答案: 主循环:线上失败 → badcase 脱敏入库 → RCA 定责(详见第 E11 章)→ 三条生产线 → 新版本 → 发布联动 → 新的线上信号。阿里口径:一条 badcase 至少生产 3 类 反馈,对应三条生产线——评测集线(badcase 转用例,进能力集迭代、毕业进回归集)、 训练数据线(修复前后轨迹做偏好对/拒绝采样筛样,喂再训练)、知识修订线(过期 文档下线、口径澄清、知识点绑定新用例)。入库五标准:① 失败可复现(或至少有稳定 Trace + 人工确认);② 期望行为明确(可写成规则/Judge 标准/人工验收标准);③ 根因标签清楚; ④ 样本有代表性(覆盖一类问题而非一次性环境抖动);⑤ 已脱敏合规。工业化证据:Discord AITL 用在线标注持续回流把再训练周期从月级压到周级,试点 recall@75 +11.7%、有用性 +8.4%。

题 7(进阶):飞轮转了半年,回归集从 200 条涨到 4000 条,每次全量回归又慢又贵,很多用例从没失败过。怎么办?

参考答案: 样本治理四策(阿里口径):① 同簇去重——同一问题簇只保留代表例,防止 "23 条相似 case 刷存在感";② 风险分层保留——P0/P1 风险用例长期保留,高风险永不 毕业;③ 稳定者降级——稳定多版本通过且低风险者降级为抽样集(不再每次全量跑,按 比例抽查),回归集瘦身但不删除;④ 主动学习补新——预算优先给低置信/高影响/新意图/ 新工具/新知识点样本。配合腾讯的用例生命周期:能力集(起步 20–50% 通过率、频繁迭代)与 回归集(接近 100%、只增不减)分池管理,通过率稳定 100% 才"毕业"进回归集;Anthropic 口径确定性任务 100%、非确定性任务 ≥95%。关键原则:降级≠删除——用例带着 trace 与根因 标签留在资产库里,分布回潮时可随时召回(呼应 LiveBench 式"上下架状态机", arXiv 2406.19314)。

题 8(进阶):把在线 judge 分数直接当训练奖励喂给模型,让飞轮"自动加速",可行吗?

参考答案: 不可行,至少不能裸奔,这是飞轮最大的暗礁。三层风险:① judge 偏差进 训练分布——RLAIF 研究(arXiv 2309.00267)证明 AI 反馈会把评测器自身的偏好(冗长、 格式、自我偏好)注入训练数据;judge 没校准好,等于拿歪尺子批量生产训练信号。② 过度优化的定量代价——奖励模型过度优化遵循平方根标度律(arXiv 2210.10760):代理 奖励持续上升、真实目标先升后降;judge 容量决定你能安全优化多久。③ 钻空子泛化—— 谄媚可以零样本泛化成 reward tampering(arXiv 2406.10162),系统会学会"讨好评分器"而 不是"做好任务"。工程防御:训练数据带 provenance(judge 版本/rubric 版本/人审标签); 训出的模型必须重新过离线门禁与线上灰度——飞轮的每一圈都必须重新过门禁;对 judge 本身做对抗审查(多 LLM 对抗打分、抽样人审),把"攻击评分器"当独立指标跟踪。

题 9(系统设计):为日均 5 万会话的客服 Agent 设计在线评估与数据飞轮平台。

参考答案: 六层架构。 ① 打点层:全量会话结构化 trace(OpenTelemetry,span 层级 session → agent/task → llm_call → tool_call;trace 是被测 agent 的标准能力而非事后补救),Trace 库落 ClickHouse 类列存。 ② 抽样层:每日 5% 随机抽样(估计总体,参照 Airbnb)+ 分层放大(高风险 100%、 低置信、新意图/新工具/新知识点);去标识化作为管道第一算子,用途限定安全与质量。 ③ 打分层:离线-线上同一 rubric + 同一校准 judge;judge 四元组版本化;大规模打分用 开源 judge 控成本,高风险与边界分转人工(人工路由条件参照第 E6 章);每日数千会话量级 (参照 DoorDash 2,000/天)。 ④ 监控层:分布漂移探针(意图/路由/长度分布)+ 指标漂移看板(逐 rubric 失败率、 judge 分位数、业务信号日环比);告警带统计口径(Wilson CI);失败率异动按"judge 漂移→ 分布漂移→真实退化"三步鉴别。 ⑤ 发布层:离线门禁(P0 指标 + 置信区间 + 最小可感知变化)+ shadow → canary → 全量; 跟踪三类信号(离线质量/线上体验:转人工率、重复追问率、投诉率、满意度/业务结果:任务 完成率、工单闭环率、退款成功率);离线升 + 线上降自动触发回滚或降级。 ⑥ 飞轮层:badcase 与离线失败汇入同一任务表 → RCA 五步 → 三条生产线(评测集/训练 数据/知识修订);入库五标准 + 样本治理四策;沉淀六座质量资产库;度量飞轮自身:badcase→ 行动项转化率、评测集覆盖率(线上问题簇在离线集有无对应)、回归成本曲线。


五、易错点 · 反直觉点

  1. 在线随机抽样当全貌:"每天随机抽 5%,分数挺高,没问题。" → 真相:高风险场景在随机 样本里占比天然低,幸存者偏差让报告"看起来不错"但关键问题漏掉;必须叠加分层抽样放大 高风险/低置信/新意图。 → 记忆锚点:随机估总体,分层抓风险。
  2. 离线与线上各调各的 judge:"线上场景特殊,单独调一版 judge 更贴。" → 真相:两套 judge 各自被各自分布塑形,同一会话两种 verdict,离线结论带不到线上、线上失败离线 复现不了,分数会难调和地背离(DoorDash 原文警告)。 → 记忆锚点:一把尺子量两处。
  3. 线上分数一掉就怪模型:"这周 judge 分掉了 5 个点,模型又退化了!" → 真相:候选解释 有三个——judge 漂移、分布漂移、真实退化;先固定 judge 重放、再按分布分桶、最后才 归因模型。顺序反了会把尺子的锅扣给考生。 → 记忆锚点:先查尺子,再查考题,最后查考生。
  4. 拿在线流量直接进评测集:"真实会话最真实,直接入库。" → 真相:未脱敏的会话含 PII, 合规上不能直接进评测集;去标识化是抽样管道的第一算子,入库还要过"已脱敏合规"等五条 标准。 → 记忆锚点:先脱敏,再入库。
  5. badcase 修完就关单:"问题解决了,工单关闭。" → 真相:不回流就不闭环——一条 badcase 至少要生产三类反馈(评测集/训练数据/知识修订),同类问题换个表述还会再来。 → 记忆锚点:一条 badcase,三份产出。
  6. 所有 badcase 无差别入库:"失败都是财富,全进回归集。" → 真相:不过入库五标准的 样本是噪声——不可复现的、期望不明的、一次性环境抖动的都该拒收;同簇只留代表例,否则 评测集膨胀、回归成本爆炸而信号密度下降。 → 记忆锚点:入库有门槛,同簇留代表。
  7. judge 分数直接当训练奖励:"打分器有了,RL 数据就有了。" → 真相:judge 偏差会注入 训练分布,代理奖励过度优化有平方根标度律,谄媚可泛化成 reward tampering;训练数据要 带 provenance,训完必须重新过门禁。 → 记忆锚点:飞轮每圈都要重新过门禁。
  8. 线上指标一波动就回滚:"转人工率今天涨了 1%,快回滚!" → 真相:小样本下 1-2 分差异 默认是噪声(inspect_evals 口径);回滚判据要带置信区间与最小可感知变化,且先做三步 鉴别。乱回滚的团队会丧失灰度发布的勇气。 → 记忆锚点:噪声不是信号。
  9. 回归集只进不出:"用例只增不减是纪律,谁也不许删。" → 真相:只增不减的是"可用性" 不是"每次必跑"——稳定多版本通过且低风险的用例降级为抽样集,高风险永久驻守;纪律的 目的是防删除,不是防瘦身。 → 记忆锚点:降级不删除,驻守看风险。
  10. 用在线评估替代离线门禁:"反正线上能看到真实反馈,离线评测差不多得了。" → 真相: 不能拿真用户彩排变更(DoorDash 第三挑战);离线门禁的意义是在伤害用户之前拦截,在线 评估的意义是事后验证与发现新分布——前者是刹车,后者是仪表盘。 → 记忆锚点:刹车与仪表盘, 一个都不能少。

六、推荐资源

一手工业实践(本章数字出处)

  1. 阿里技术《Agent 评测:方法论与体系设计》(2026 年第 28 篇)——发布联动的三类信号与 "离线升线上降 → 回滚或降级"、反馈生产三条生产线、入库五标准、样本治理四策、质量资产库 六库、Judge 持续运营三项统计均出自其第 9 章。
  2. DoorDash《Building Ask DoorDash (Part 3): Evaluation》(2026-06-30)——第五挑战 "双环境"与"同一 rubric + 同一 judge"设计要求、四条 Lessons Learned、reasoning leakage 案例(泄漏率降 11%)与底座模型迁移案例(延迟降 35%、质量无损)、2,000 个/天 自动评分会话与全量回归 6+ 小时 → 20 分钟。 https://careersatdoordash.com/blog/building-ask-doordash-part-three-evaluation/
  3. Airbnb《Eval-driven development: Lessons from evaluating GenAI at scale》——每日抽样 5% 去标识化生产流量、5,000 样本、每周 PM 评审、开发三阶段映射、"上线前测试要在线上 持续运行"与隐私注记(去标识化、用途限定)。

前沿论文(arxiv ID 均经核实,出自 _research/10-infra-observability.md 与 _research/06-edd-simulation.md)

  1. 《Evaluation-Driven Development and Operations of LLM Agents》(EDDOps, arXiv 2411.13768,2024-11 首发 / 2025-11 v3)——shadow evaluation 与 canary rollout 的位置定义、offline/online 评测与运行时控制环的统一框架;关键统计:学术文献 93.28% 只做 pre-deployment 评测、仅 2.24% 覆盖 post-deployment。https://arxiv.org/abs/2411.13768
  2. 《Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference》 (arXiv 2403.04132,2024-03)——真实用户分布上的持续评测:Bradley-Terry 排名、 bootstrap 置信区间、作弊检测;论文发布时 24 万+ 投票、90K+ 用户、50+ 模型,与受控人类评测一致性 约 85%+。"用户投票是最便宜的标注"正是在线飞轮思路的源头之一。 https://arxiv.org/abs/2403.04132
  3. 《WildBench: Benchmarking LLMs with Challenging Tasks from Real Users in the Wild》 (arXiv 2406.04770,2024-06)——"生产流量 → 评测集"的筛选管线(难度过滤、多样性去重、 敏感信息处理):从 9 万+ 真实对话中筛出 1024 条;WB-Reward 与 Chatbot Arena Elo 的 Spearman 相关 ~0.9。https://arxiv.org/abs/2406.04770
  4. 《Prometheus 2: An Open Source Language Model Specialized in Evaluating Other Language Models》(arXiv 2405.01535,2024-05)——在线大规模打分的成本解:7B 开源 judge 逼近 GPT-4 judge(Pearson ~0.8+ 量级)、可版本化、可本地部署。 https://arxiv.org/abs/2405.01535
  5. 《TRAIL: Trace Reasoning and Agentic Issue Localization》(arXiv 2505.08638, 2025-05)——trace 级失败定位的 27 类错误分类学;最佳模型定位准确率仅 ~40-60%, 说明在线失败挖掘的自动化结果要人工兜底。https://arxiv.org/abs/2505.08638
  6. 《Where LLM Agents Fail and How They Can Learn From Failures》(AgentDebug, arXiv 2509.25370,2025-09)——"失败 → 诊断 → 修复 → 复跑"闭环与六模块失败归因, 相对朴素重试约 +10% 量级成功率改善;其分类学可直接用作线上失败挖掘的标签体系。 https://arxiv.org/abs/2509.25370
  7. 《SentinelAgent: Graph-based Anomaly Detection in Multi-Agent Systems》 (arXiv 2505.24201,2025-05)——把 agent 交互建模为图做运行时异常检测与归因, 是"行为基线 + 偏离告警"进可观测性栈的代表工作。https://arxiv.org/abs/2505.24201
  8. 《LiveBench》(arXiv 2406.19314,2024-06)与《LiveCodeBench》(arXiv 2403.07974, 2024-03)——评测集生命周期治理的两种机制:滚动更新(时间戳/版本号/上下架状态)与 时间窗切片(按模型 cutoff 选题);飞轮入库样本的元数据设计直接照抄。
  9. 《Lessons from the Trenches on Reproducible Evaluation of Language Models》 (arXiv 2405.14782,2024-05)——在线分数的 provenance 规范源头:eval 结果 = (数据集版本, prompt 模板, 评分方式, 解码参数, 模型快照) 的函数。 https://arxiv.org/abs/2405.14782
  10. 《Developing and Maintaining an Open-Source Repository of AI Evaluations》 (arXiv 2507.06893,2025-07)——"把评测集当软件产品运营"的治理流程;统计纪律: 小样本 1-2 分差异默认视为噪声。https://arxiv.org/abs/2507.06893
  11. 《Benchmarking and Learning Real-World Customer Service Dialogue》 (arXiv 2510.22143,2025-10)——offline-online gap 的 agent 场景实证:强 offline 基准成绩只是部署可靠性的弱指标。https://arxiv.org/abs/2510.22143
  12. 《Agent-in-the-Loop: A Data Flywheel for Continuous Improvement in LLM-based Customer Support》(Discord,EMNLP 2025 Industry,ACL Anthology 2025.emnlp-industry.135)——数据飞轮的生产级样本:四类人工客服在线标注持续回流, 再训练周期月级 → 周级;美国试点 recall@75 +11.7%、precision@8 +14.8%、有用性 +8.4%、 采用率 +4.5%;并量化 offline-online 一致性。 https://aclanthology.org/2025.emnlp-industry.135/
  13. 飞轮训练侧的风险文献(2.6 节引用):《RLAIF vs. RLHF》(arXiv 2309.00267,2023)、 《Scaling Laws for Reward Model Overoptimization》(arXiv 2210.10760,ICML 2023)、 《Sycophancy to Subterfuge》(arXiv 2406.10162,Anthropic,2024-06)。

动手 labs

  1. labs/eval_lab08_statistics_ci.py —— 在线监控的统计底座:Wilson 区间、bootstrap、 样本量计算与"3% 差异在 N=100 下不可判、N=2000 下可判"的版本对比演示。 运行:cd evals-special/labs && python3 eval_lab08_statistics_ci.py
  2. labs/eval_lab05_judge_calibration.py —— 同一 judge 的校准与再校准:一致率/kappa/ 分歧分析,judge 升级后三项统计监控(第 E5 章配套)。 运行:cd evals-special/labs && python3 eval_lab05_judge_calibration.py
  3. labs/eval_lab02_golden_dataset.py —— 飞轮的入库齿轮:入库五标准检查器、badcase 回流入库、毕业机制与回归集只增不减(第 E3 章配套)。 运行:cd evals-special/labs && python3 eval_lab02_golden_dataset.py
  4. labs/eval_lab10_edd_loop.py —— 发布联动前的离线侧:P0 门禁、回归检测与 badcase 回流(第 E10 章配套)。运行:cd evals-special/labs && python3 eval_lab10_edd_loop.py

交叉引用

  • 第 E3 章 · 黄金数据集与用例设计:幸存者偏差与四类用例来源;本章 2.6 的评测集线是其 在线侧入口。
  • 第 E5 章 · LLM-as-Judge 深入:judge 校准五步与偏差治理;本章 2.3 的"同一校准 judge" 以其校准线为前提。
  • 第 E6 章 · 人工评估与评分路由:在线被标记样本的人工终判路由与结论反哺。
  • 第 E9 章 · 评估的统计学基础:Wilson 区间、样本量与最小可感知变化;在线告警阈值与 回滚判据的统计口径。
  • 第 E10 章 · 评测驱动开发(EDD):失败聚类与 Agent Skills 化的反馈闭环;离线门禁纪律。
  • 第 E11 章 · Badcase 根因分析与优化闭环:线上 badcase 脱敏入库后的 RCA 五步;本章是其 下游(反馈生产线与资产库)的上游(在线发现与抽样)。
  • 第 E13 章 · Benchmark 全景与前沿争议:在线信号作为"地面真值"与公开 benchmark、私有 golden set 的三层互补关系。
  • 主手册第 8 章 · Agent 评估与可观测性:本章是其"在线评估与运营"一节的深挖版。
第 13 章 / 共 15 章

Benchmark 全景与前沿争议

📌 本章导航(6 节)

一句话导读:公开 benchmark 是 evals 体系的"外部坐标",但坐标会老化(饱和)、会被污染(泄漏)、会被作弊(Goodhart)。本章回答三个问题——主流 benchmark 各自测什么、怎么判;污染 / 饱和 / 过拟合三大威胁的机理与对策;如何把公开基准、私有 golden set、在线信号组合成可信的选型与发布决策。学完你能画出一张 2024–2026 的 benchmark 全景图,并能在面试中回答"只能选一个向老板汇报,选哪个"这类系统设计题。


一、知识图谱

Benchmark 全景与前沿争议
│
├─ 1. 分类轴(怎么认识一个 benchmark)
│   ├─ 更新形态:静态固定集 ←→ 动态可再生集
│   ├─ 定位:能力型(单项能力)/ 领域型(行业环境)/ 应用型(端到端产品形态)
│   └─ 交互形态:单轮问答 / 多轮对话 / 环境交互(Web / OS / CLI)
│
├─ 2. 全景速览(谁在测什么)
│   ├─ 对话工具型:τ-bench / τ²-bench(pass^k + 终态 DB 断言)
│   ├─ 通用助手型:GAIA(精确匹配 + L1/L2/L3)/ AgentBench(8 环境聚合)
│   ├─ 软件工程型:SWE-bench 家族(测试驱动)/ Terminal-Bench(Docker + pytest)/ BFCL(函数调用)
│   ├─ Web / OS / SaaS:WebArena 家族 / OSWorld / WindowsAgentArena / WorkArena(++)
│   ├─ 深度浏览型:BrowseComp(闭源题面)/ AssistantBench / WebVoyager
│   └─ 知识天花板探针:HLE(专家级难题)
│
├─ 3. 判定方式谱系(怎么算对)
│   ├─ 短答案精确匹配 → 执行测试(FAIL_TO_PASS)→ 终态断言 → LLM/Agent-as-Judge
│   └─ 轨迹精确匹配:已淘汰(惩罚合法替代路径)
│
├─ 4. 三大威胁(为什么分数会失真)
│   ├─ 污染:题目进训练语料 → 虚高
│   │   └─ 检测四范式:成员推断(Min-K%)/ 语义级变体 / 格式敏感性 / canary
│   ├─ 饱和:分数逼近天花板 → 失去区分度(MMLU 教训、"两年饱和律")
│   └─ Goodhart:优化代理指标 ≠ 提升真实能力(reward overoptimization)
│
├─ 5. 动态基准(四种机制与代价)
│   ├─ 时间截止线(LiveCodeBench)/ 定期轮换(LiveBench)
│   └─ 程序化生成(DyVal / DynaMath / UGMathBench)/ 保义翻新(2503.06643)
│
├─ 6. 选型与决策(怎么用)
│   ├─ 三层互补:公开 benchmark(外部坐标)+ 私有 golden set(业务真值)+ 在线信号(地面真值)
│   ├─ Arena vs 静态 benchmark:各测什么、何时信谁
│   └─ 统计纪律:CI / 重复实验 / BT / style control(详见第 E9 章)
│
└─ 7. 前沿争议
    ├─ 排行榜是否已被污染失效 · 难度军备竞赛是不是 treadmill · harness 效应
    └─ benchmark 分数与生产表现的相关性(HAL / AI Agent Index、Sean Grove 实证)

二、核心概念精讲

2.1 Benchmark 分类学:三条轴

拿到任何一个 benchmark,先用三条轴给它定位,才能判断"它的分数对我意味着什么"。

轴一:更新形态——静态 vs 动态

维度 静态基准 动态基准
题目集 一次发布、固定不变 持续更新或可无限生成
代表 GAIA、SWE-bench、OSWorld、MMLU LiveBench、LiveCodeBench、DyVal、Chatbot Arena
优点 跨期完全可比、运行便宜、可沉淀基线 抗污染、能持续保持区分度
缺点 污染 + 饱和双重退化 跨版本不可直接比较、运营成本高
典型结局 两年内逼近饱和(见 2.5) 变成"当前快照"而非"连续量尺"

轴二:定位——能力 / 领域 / 应用

类型 测什么 代表 与业务的距离
能力型 单项基础能力(函数调用、知识、数学) BFCL、HLE、MMLU-Pro 最远:只能拼能力画像,不能预测端到端表现
领域型 特定行业/环境内的任务完成 SWE-bench(开源仓库修 issue)、WorkArena(企业 SaaS) 中等:环境相似但业务规则不同
应用型 端到端产品形态 τ-bench(客服)、GAIA(通用助手)、OSWorld(桌面助理) 最近:仍是代理,分布不等于你的流量

轴三:交互形态——单轮 / 多轮 / 环境

形态 判定特点 代表 工程含义
单轮问答 精确匹配 / 选择题判分,天然抗 judge 偏差 GAIA、HLE、MMLU 便宜、可高频跑,但测不了规划与工具
多轮对话 终态断言 + 政策遵循;需用户模拟器 τ-bench / τ²-bench 模拟器本身是效度来源(见 2.4 与易错点 7)
环境交互 沙箱环境 + 终态检查脚本 WebArena、OSWorld、Terminal-Bench、SWE-bench 环境搭建/重置成本高,需 Docker/VM 化与并行

多数 agent benchmark 是三轴的复合体:τ-bench = 静态 × 应用型 × 多轮对话;Terminal-Bench = 静态(版本化)× 领域型 × 环境交互。定位三轴之后,还要追问两件事:它怎么判分(2.3)、它的分数还新鲜吗(2.4–2.6)。

2.2 主流 Agent Benchmark 全景速览

演进时间线(2024–2026,来自 _research/02-agent-benchmarks.md):

  • 2024 上半年 · 环境奠基期:WebArena / VisualWebArena / OSWorld / WorkArena 确立"自托管沙箱环境 + 程序化判定"范式;GAIA(2023 底发布)确立"结果精确匹配 + 难度分级"的通用助手范式;τ-bench 把对话式工具 Agent 与用户模拟器引入评测。
  • 2024 下半年 · 软件工程爆发期:SWE-bench 成为事实标准,Verified / Multimodal 变体相继出现;Agent-as-a-Judge 开启"用 Agent 评 Agent";WindowsAgentArena 把 Windows 桌面环境工程化。
  • 2025 · 难度军备与可靠性转向:SWE-bench 分数逼近 70%+ 后,社区转向更难、抗污染的基准(SWE-bench Pro、Terminal-Bench 2.0 Hard、BrowseComp、HLE);τ²-bench 用"双控"解决模拟器泄题;pass^k / 多次采样成为标配。
  • 2026 · 工业化与信任危机并存:Terminal-Bench 论文(ICLR 2026)把终端 Agent 评测标准化;同时 HAL / AI Agent Index 等系统性结论动摇了"一个分数定优劣"的文化——评测重心从公开排行榜转向私有 golden set + 领域定制套件。

主表:12 个必须认识的 benchmark(数字均出自素材调研报告)

Benchmark(arXiv,年份) 机构 测什么 怎么判 核心指标 关键数字 / 已知问题
τ-bench(2406.12045,2024) Sierra 客服型 Agent:多轮对话 + 遵守政策文档 + 调用工具 终态数据库比对,无需人评 pass^k retail 115 + airline 50 任务;GPT-4o retail pass^1 ≈60%(官方榜单 60.4%;摘要口径不足 50%),pass^8 ≈25%(摘要 <25%)
τ²-bench(2506.07982,2025) Sierra 双控对话:用户侧也是有工具的 Agent,信息不对称 同上 pass^k 各家分数相对 τ-bench 显著下降——此前高分部分来自模拟器"配合性泄题"
GAIA(2311.12983,2023,ICLR'24) Meta AI + HF + AutoGPT 通用助手:"人类觉得简单、AI 觉得难"的 466 题,L1/L2/L3 短答案精确匹配 准确率 发布时人类 92% vs GPT-4+插件 ≈15%;2025 年顶级系统进入 70–80% 区间(榜单按月变动),L1 接近饱和
AgentBench(2308.03688,2023,ICLR'24) 清华 THUDM LLM-as-Agent 综合能力,8 个交互环境(POMDP 形式化) 各环境原生判定 + 标准化聚合 聚合分 GPT-4 大幅领先同期开源模型;多数子环境如今已饱和,主要作历史基线
SWE-bench(2310.06770,2023,ICLR'24) Princeton 等 真实 GitHub issue → patch(12 个 Python 仓库、2294 任务) FAIL_TO_PASS / PASS_TO_PASS 测试 resolved 率 发布时最好 ≈3%;SWE-agent+GPT-4 12.5%;Claude 3.5 Sonnet+SWE-agent 49%;2025 头部 >70%
SWE-bench Multimodal(2410.03859,2024,ICLR'25) Princeton 等 JS / 前端视觉软件域(17 仓库、617 issue + 截图) 同上 resolved 率 GPT-4o+SWE-agent 在 Python Lite 约 33%,在 Multimodal 跌至个位数~10%——语言/模态分布不外推
Terminal-Bench(2601.11868,2026,ICLR'26) Stanford + Laude Institute 终端/命令行 Agent:Docker 容器 + 自然语言指令 自动验证脚本(pytest 式断言) 任务成功率 初版 80 任务;2025-07 的 TB 2.0 Hard 精选 89 个高难任务;头部 50%+ 到长尾 <10%,harness 效应为核心发现
BFCL(Gorilla 2305.15334【未核实】,2023 起) UC Berkeley 函数调用能力:v1 AST+可执行验证;v3(2024-09)加多轮、缺失函数/参数、幻觉检测 AST 匹配 + 可执行验证 总分 / 子项分 头部总分 85–95%,但"缺失函数/相关性检测"子项普遍掉 10–30 分——"知道何时不调用"仍是短板
WebArena(2307.13854,2023,ICLR'24) CMU 等 自托管真实功能网站集群(电商/GitLab/论坛/地图/CMS),812 任务 功能性检查(URL/页面终态/DB 状态) 成功率 发布时 GPT-4 系 ≈14%,人类 78%;2025 最佳 >60%,出现饱和压力
OSWorld(2404.07972,2024,NeurIPS'24) XLANG Lab 真实 OS 虚拟机(Ubuntu/Windows/macOS)369 个开放式操作任务 执行脚本检查终态(文件/系统设置) 成功率 人类基线 72.4%,发布时最好多模态 Agent ≈12%;2025 头部 40%+(369 题全集口径;OSWorld-Verified/厂商口径下 Sonnet 4.5/Opus 4.5 已达 61.4%/66.3%,2025.9/11,见主手册第 8 章);判定脚本脆弱是已知痛点
WorkArena / ++(2403.07718【未核实】/ 2407.05291,2024) ServiceNow 企业 SaaS 工作流:表单/列表/知识检索/服务目录下单;++ 加组合式规划 领域专家定义的终态断言 成功率 v1 约 33 任务;最好商用模型仅约两成——企业私有系统的隐性知识是真实瓶颈
HLE(Humanity's Last Exam,2501.14249,2025) CAIS + Scale AI 等 约 3000 道专家级前沿知识难题(100+ 学科,约 1/4 多模态) 精确匹配 + 污染审计 准确率 发布时最强前沿模型 <10%;2025 年内推理模型推到 30%+,再验"基准两年饱和律";部分题目有歧义,社区众包修订中

补充速览(开放网络与企业桌面两条支线):

Benchmark 测什么 关键数字 / 已知问题
BrowseComp(OpenAI 博客,2025-04,无 arXiv) 1266 道"答案在互联网上但极难检索到"的题;题面不公开以防污染 Deep Research ≈51.5%,普通 GPT-4o 级浏览仅 ≈2%;闭源题面无法被第三方审计
AssistantBench(2407.15711,2024) 214 个真实开放网络耗时任务(人类需 5–90 分钟,跨 258 个网站) 最好模型准确率不超过约 26%(最强约 25.2%);"题目可行性验证"流程值得借鉴
WebVoyager(2401.13919【未核实】,2024) 真实网站(15 站点、643 任务)端到端多模态网页 Agent 首创 GPT-4 自动评审(与人工一致性约 87%);真实网站不可复现(改版/登录墙)
WindowsAgentArena(2409.08264,2024) 可大规模并行的 Windows 环境,154 任务 + Navi 基线 agent Navi(GPT-4V)≈19.5%;并行化工程把评测吞吐提升一个数量级
VisualWebArena(2401.13649【未核实】,2024) WebArena 的多模态视觉扩展,910 任务 按图找商品、视觉问答式导航
MLE-bench(2410.07095,2024) 75 个 Kaggle 竞赛测 ML 工程 Agent 竞赛式长程任务
SWE-Lancer(2502.12115,2025) 以真实自由职业平台计价任务(总额 $1M+)测工程 Agent 的经济价值 "任务值多少钱"口径

速览表的使用方式:面试被问"你了解哪些 agent benchmark"时,不要背清单,而是按 2.1 的三轴归类 + 每个给一句"测什么 / 怎么判 / 一个数字 / 一个坑"。

2.3 判定方式谱系:benchmark 怎么给 agent 判分

Agent 轨迹千变万化,精确匹配轨迹已淘汰——会把大量合法但不同的解决路径判错。2024 年后的共识是功能性正确判定(execution-based evaluation):

判定方式 机制 代表 优点 缺点
短答案精确匹配 归一化(大小写/标点)后字符串比对 GAIA、HLE 零 judge 偏差、零成本 只适合唯一答案题
执行测试 patch 让 FAIL_TO_PASS 通过且 PASS_TO_PASS 不回归 SWE-bench 功能性判定的黄金标准 "resolved"只保证过测试,不保证 patch 质量(可读性/副作用)
终态断言 任务后跑检查脚本:文件内容、DB 状态、HTTP 响应、pytest 断言 OSWorld、Terminal-Bench、WebArena、τ-bench 抗话术干扰、全自动 判定脚本脆弱(终态检查误判)、环境搭建成本高
LLM-as-a-Judge rubric + judge 模型 WebVoyager(与人工一致性 ~87%)【未核实】 覆盖开放性输出 位置/冗长/自我偏好偏差,需人工校准(详见第 E5 章)
Agent-as-a-Judge 带工具的评审 Agent(可读代码、执行检查) Agent-as-a-Judge(2410.10934,Zhuge et al.,ICML 2025):DevAI 基准 55 个 AI 开发任务 + 365 条分层用户需求 与人类对齐度高,相比三位人类专家节省 97.72% 时间、97.64% 成本(场景特定值) 需先人工校准;警惕与被测系统同源的自我偏好

终态断言长什么样(Terminal-Bench / τ-bench 式判定的最小示例,示意代码):

# 任务:在沙箱里取消订单 #A1024 并退款到原支付方式
# 判分不读 agent 的自然语言回复,只检查世界变成了什么样
def test_task_resolved(env):
    order = env.db.get_order("A1024")
    assert order.status == "CANCELLED"          # 终态:订单状态
    assert order.refund_amount == order.paid     # 终态:全额退款
    assert order.refund_channel == order.pay_channel  # 终态:原路退回
    assert env.mail.outbox_count(user=order.uid,
                                 subject_contains="取消确认") == 1  # 副作用:通知
    # 反向断言:不该发生的副作用
    assert not env.db.any_new_orders(user=order.uid)

对照 SWE-bench:FAIL_TO_PASS 测试必须转绿、PASS_TO_PASS 测试不得回归,两者都在干净环境执行——这就是"resolved"的操作性定义。

三条工程纪律:

  1. 确定性优先:能写测试就不用人评,能用终态断言就别判轨迹;LLM 评审只用于无法程序化的开放性输出,且人工抽样校准目标一致率 ≥85%(素材口径)。
  2. 判分与能力解耦:Terminal-Bench 配套 Terminus 参考 Agent(只给一个无头终端、纯 bash),把"harness 工程"与"模型能力"分开——排行榜必须声明用的是哪套 harness。
  3. 可靠性与成本并报:pass^k 要附带平均 token 成本/任务与失败重试成本;高 pass^k 但高成本的方案,单位经济学上可能不如低 pass^k + 人工兜底。

pass^k 是 agent benchmark 的招牌指标(τ-bench 提出):同一任务独立运行 k 次全部成功的比例,pass^k = |{task : ∀ i∈[1..k], success}| / |tasks|;工程惯例 k 取 4–8,同时报告 pass@1 与 pass^k,两者差距反映系统方差。直觉:若每次成功率 p 且独立,pass^k ≈ p^k(p=0.9, k=8 时仅 0.43)。τ-bench 上 GPT-4o retail 域 pass^1≈60%(官方榜单 60.4%)→ pass^8≈25%(摘要 <25%)——这就是"单次看起来不错"与"可部署"之间的鸿沟。统计细节(iid 假设、不可从 pass@1 外推、必须报 n 与 CI)见第 E9 章 · 评估的统计学基础。争议面:有观点认为 pass^k 惩罚了"可诊断、可回滚的错误",主张改报"失败模式分布 + 成本";反方认为无人值守部署就是要高可靠性,pass^k 是最低标准。

2.4 污染:机理、检测四范式与军备竞赛

机理:公开题面进入训练语料 → 模型"背过题" → 分数虚高。SWE-bench 的 GitHub issue 文本大量出现在训练语料中,被普遍怀疑贡献了部分分数增长;GAIA / HLE 题目同样面临泄露。根本难题是举证:闭源模型不公开训练数据,且题目若本来就在公开网络语料里,"见过"是否等于"作弊"?实践者的折中立场是:见过 ≠ 有罪,但分数必须按"可能见过"折价——这正是 LiveCodeBench 式时间截止成为硬标准的原因。

检测四范式(来自 _research/05-benchmark-dynamics.md):

范式 原理 代表方法(arXiv,年份) 适用与局限
成员推断(MIA) 训练过的文本似然更高 Min-K% Prob(2310.16789,2023,ICLR'24 oral):取最低 K%(默认 20%)token 的 log-prob 均值做成员性分数,只用 API 概率即可 在 WikiMIA 上比既有最强方法提升约 7.4% AUC(平均 AUC 约 0.72);对改写不敏感;需校准阈值;闭源模型可能平滑概率
语义级泄漏 模型记的是"题"不是"字符串" 翻译/改写变体上的异常增益(2311.04850,Tencent AI Lab,2023):GSM8k/TruthfulQA 翻译成其他语言后仍有记忆信号,且英文原版记忆强于翻译版 需可对照的变体集;与"合理泛化"难划界
格式敏感性 捷径表现为对表面结构的依赖 选项置换一致性、字母偏置(2503.23483,2025);另一面证据:指令微调模型其实比想象中鲁棒(2404.08382,2024) 只能作辅助证据——"对顺序鲁棒"本身可以被训练出来
Canary strings 预埋唯一字符串,探测复现能力 源头是 Carlini 等的训练数据提取(2012.07805,Google,2020);私有题集每题埋 1–2 个独特字符串/假事实,定期用补全与问答探测市面模型 工业界私有评测标配;只能证明"见过",证不了"没见过"

审计流程模板:字符串/n-gram 重叠 → 嵌入相似度(与公开题库、模型输出对比)→ Min-K% 概率审计(若可得 logprob)→ canary 探测 → 变体差分(改写前后分差)。任何单一信号都不足以定罪,组合证据 + 统计显著性才下结论。

污染军备竞赛与对决策的扭曲:

  • 防守方的结构性手段:时间截止(只用 cutoff 后的题)、私有 holdout(SWE-bench Pro,2509.16941【未核实】,私有测试 + 长程任务)、闭源题面(BrowseComp)、canary、定期版本化刷新(Terminal-Bench 1.0 → 2.0)、合成数据(SWE-smith,2504.21798,bug 注入批量合成 5 万级任务)。
  • 对决策的扭曲:Sean Grove(OpenAI)The Illusion of Model Improvement(2024-10,未上 arXiv)用同一模型家族的不同数据混合/检查点在大量基准上实验,发现基准分数差异的很大一部分来自评测集划分与数据泄漏的巧合,而非模型真实改进。
  • 学界与工业界的信任差在扩大,共识渐成:单一公开榜单不可作为发布决策依据。

2.5 饱和与崩塌:MMLU 教训与 Goodhart

饱和的判定:当 top 模型准确率 >~90% 且置信区间重叠时,基准失去排序力(天花板效应)。MMLU 在 2024 年即处于此状态(GPT-4o/o1 系 87–90%+)。"基准两年饱和律"在各处被验证:GAIA 15% → 70–80%(2023→2025)、WebArena 14% → 60%+、SWE-bench 3% → 70%+、HLE <10% → 30%+(仅一年内)。

MMLU 的双重崩塌——不只是饱和,还有质量:

事件 内容 数字
MMLU-Redux(2406.04127,2024) 对全部 57 个 subject 各抽 100 题(共 5,700 题)多人重标注 约 6.49% 的题存在答案错误或题面歧义(个别学科如 Virology 高达 57%);修复后模型的准确率与相对排名都变化——"权威分数"相当一部分测的是噪声
MMLU-Pro(2406.01574,2024) "加难"路线:选项 4→10 个、题目推理化、新题源 12,032 题,难度提升 16%–32%;GPT-4 级模型从 MMLU 近 90% 跌至 50–60%,恢复头部区分度

两条路线——修数据与提难度——成为此后所有老牌 benchmark 的标准动作。但注意 MMLU-Pro 自身也在快速逼近饱和,且 10 选项放大了长题干下的上下文长度效应。

Goodhart:benchmark 崩塌的第三重力量。当 benchmark 分数成为营销 KPI 或 RL 奖励,优化压力会绕开真实能力:Scaling Laws for Reward Model Overoptimization(2210.10760,OpenAI,2022)给出定量形态——以 KL(π‖π_ref) 为横轴,proxy(benchmark)奖励单调上升而 gold(真实能力)先升后降。AlpacaEval 的长度 gaming(把输出调啰嗦就能刷分)是经典案例;2026 年这一动态已进入多智能体合规评测(Beyond Goodhart's Law,2606.07805,2026:当奖励偏向"完成任务"时,agent 对流程约束的遵守退化)。

修复手段谱系(按投入从低到高):

手段 代表 一句话
加难 MMLU-Pro、HLE 把分数压回 10–60% 区间恢复区分度;代价:难题样本少、方差大、与用户价值相关性弱
换源 LiveBench 用新近来源(竞赛/论文/新闻)换题
动态化 DyVal、LiveCodeBench 让题目可再生(见 2.6)
专家化 HLE 专家出题 + 难度校准 + 污染审计
对抗化 Agent Island(2605.04312,2026) 多智能体博弈:对手自适应变强(抗饱和)、交互轨迹无法提前记忆(抗污染)

生命周期管理(把基准当传感器管理):每个基准登记版本、发布日期、难度分布、已知错误率、预计饱和时间、退役标准——例如 top 模型 >92% 且 CI 重叠 ⇒ 降级为回归监控,不再用于选型。

2.6 动态基准:四种机制与代价

动态化是对抗污染与饱和的结构性解法,但每种机制都有自己的代价:

机制 代表(arXiv,年份) 原理 优点 代价
时间截止线 LiveCodeBench(2403.07974,2024) 持续从 LeetCode/AtCoder/Codeforces 抓新题,每题带发布时间戳;只用晚于模型数据截止日的题 "污染距离"可量化、可复现;支持代码生成/自我修复/执行预测/测试输出预测四类任务 依赖领域的新题供给;闭源模型的"数据截止声明"不可尽信,需 canary 抽查
定期轮换 LiveBench(2406.19314,2024) 题目取自数学竞赛/arXiv/新闻等新近来源,按月换题;全客观真值 + 自动评分(无 LLM judge),覆盖六类任务 抗污染三要素(时间新鲜度 + 客观评分 + 版本轮换);发布时领先模型仍 <70% 跨版本不可直接比较(2024-07 版与 2025 版分数无可比性),必须 pin 版本号并归档历史答案
程序化生成 DyVal(2309.17167,ICLR'24)、DyVal 2(2402.14865,2024)、DynaMath(2411.00836,2024)、UGMathBench(2501.13766,2025) benchmark = 采样器 + 求解器验证;DAG/参数模板/探测 agent 自动出题 机制上免疫记忆污染;带难度旋钮;可做变体族鲁棒性测量 题目分布窄、偏合成,需与真实分布题目混合
保义翻新 Is Your Benchmark Still Useful?(2503.06643,2025) 对存量题库做保义(meaning-preserving)改写再制造 比推倒重来便宜,保留题面分布与可比性;适合私有集治理 改写质量控制难(难度不变、答案唯一),需锚点模型校准

动态化的关键证据链:

  • DyVal 上动态题表现与 MMLU、Big-Bench 静态子集高度相关(效度成立),但模型间差距被显著拉开——静态并列的模型在动态题上分出高下。
  • DyVal 2 的核心发现:静态基准分数与动态探测分数显著脱钩——静态高分模型在动态生成的探测题上准确率差距达两位数百分点,说明静态分数高估了泛化推理能力。
  • GSM-Symbolic(2410.05229,Apple,ICLR'25):把 GSM8K 每题生成 100 个符号变体(改名字/数字/语序),模型在变体族间准确率显著波动、并随题目从句数增加而下降;而 GSM-NoOp(加入一个看似相关却无关的从句)更致命——可使准确率相对下降最多约 65%(如 GPT-4o 94.9%→63.0%)。脆弱性而非推理能力,才是相当一部分分数的主要成分。
  • 由此的测量升级:对题 q 生成变体族 {q₁..q_k},报告 E[acc] 与 Var[acc],以及扰动敏感度 = 原始分 − 变体族均分;敏感度异常大 ⇒ 记忆或脆弱推理。变体族天然免疫记忆污染。

动态化的未解难题:测量连续性。LiveBench 换题后历史分数失效,排行榜变成"当前快照";生成器的难度漂移同样需要校准。动态化解决污染,却引入跨期可比性问题——引用动态基准分数时永远带上版本号。

2.7 选型策略:三层互补与"只选一个汇报"

核心框架:公开 benchmark(外部坐标)+ 私有 golden set(真实业务)+ 在线信号(地面真值),三层各司其职、互相校验。

层 角色 代表 / 做法 局限
公开 benchmark 外部坐标:能力画像、行业对标、候选初筛 GAIA / SWE-bench Verified / LiveBench / Arena 污染与饱和、分布不匹配(SWE-bench Multimodal:Python 33% → JS 个位数)、跨基准相关性低
私有 golden set 发布门禁:真实业务分布、对齐产品目标 自建"τ-bench 式"套件:政策文档/知识库 + 工具(mock API 即可)+ 用户模拟器 + 终态断言;100–300 任务、每题 4–8 次采样、汇报 pass^k 建设与维护成本高;需抗污染纪律(分层公开/私有、canary、版本化注新)
在线信号 地面真值:用户与业务的最终裁决 转人工率、重复追问率、投诉率、满意度、任务完成率、工单闭环率(详见第 E12 章) 延迟大、混淆因素多、不可完全归因到模型

选型决策流程(每一步排除一类风险):

公开排行榜(LiveBench / LiveCodeBench / Arena)初筛   —— 排除明显落后的候选(抗饱和/污染由榜单自身机制保证)
        ↓
自建私有集复测(含 canary 与变体族)                   —— 排除分布不匹配与"见过题"的候选
        ↓
小流量 A/B / 影子模式                                  —— 排除离线-线上不一致
        ↓
决策(以业务指标为准)                                 —— Goodhart 防线:分数只用于淘汰,不用于加冕

"只能选一个向老板汇报,选哪个"的答题框架(面试高频开放题):

  1. 有私有集时:选私有 golden set 上的业务口径指标(任务完成率 / pass^k,带 CI)。理由:它是唯一分布与业务一致、判定与产品目标对齐、且抗污染的测量;公开榜单分数只作为附录里的能力画像。
  2. 没有私有集时(诚实的第二答案):选与产品形态最接近的公开基准——客服选 τ-bench(报 pass^k 而非 pass@1)、代码选 SWE-bench Verified、通用助手选 GAIA——并主动声明它是代理指标,同时把"建设私有集"列为下一步。
  3. 永远不做的事:拿单一公开榜单的聚合分当发布决策依据——HAL / AI Agent Index(Princeton SAgE,2025)发现不同 agent 基准之间分数相关性很低、且与真实用户满意度弱相关(HAL 具体 arXiv ID 待核实);跨基准外推不成立。

抗 Goodhart 制度设计(三条):(a) 保留一个永不对外宣传的内部 holdout,只用于内部决策;(b) 不把任何单一 benchmark 设为团队 KPI,改用基准组合 + 人评 + 线上指标的多信号决策;(c) 定期核对 proxy(benchmark 分)与 gold(用户满意度/留存)的相关性,相关性衰减即触发评测集更换。

2.8 Arena vs 静态 Benchmark:各测什么、何时信谁

维度 Chatbot Arena(人类偏好竞技场) 静态 benchmark
测什么 真实分布用户提问下的人类偏好(有用性 + 风格) 预定义任务的正确率
题目来源 实时用户提问,天然难以污染(主观但不可泄漏) 固定题集,有污染与饱和风险
指标 Bradley-Terry + bootstrap CI(2403.04132,LMSYS,ICML'24;论文时 240K+ 投票,如今数百万级) 准确率 / pass 率
已知偏差 风格偏好(长度/markdown);可被少量操纵票影响排名(2501.17858,2025);丢一小撮票顶部排名就可能变(2508.11847,2025) 污染、饱和、格式捷径、单点方差(GSM-Symbolic)
典型 CI bootstrap CI 通常宽 5–15 Elo 分 依题量而定(见第 E9 章样本量公式)
适用 开放式对话、写作、助手体验的相对排序 能力下限、回归监控、硬任务(代码/数学/工具)

静态榜单与竞技场的桥梁:Arena-Hard(2406.11939,LMSYS,ICML'25):BenchBuilder 流水线从 Arena 真实投票与 WildChat 中聚类蒸馏出 500 道高难度 prompt(Arena-Hard-Auto),用强模型 judge 做成对比较、再用 BT 把胜率转化为分数——与 Chatbot Arena 人类排名相关性 98.6%,区分度约为 MT-Bench 的 3 倍,成本 <$20。这是"离线自动评测对齐在线竞技场"的模板:固定一个参考模型,报告其他模型的 BT 分数而非裸胜率。

风格之争与"指标必须声明语义":judge 与人类都系统性偏好更长回答,Length-Controlled AlpacaEval(2404.04475,Stanford,2024)用回归把长度固定在参考值后计算边际胜率:与 Arena 的 Spearman 相关性从 0.94 升到 0.98,verbosity 操纵的胜率增益从 ~12% 压到 ~3%。去偏派认为风格是认知偏差必须剔除;保留派认为排版详尽度本身就是产品价值。LMSYS 的解法是同时发布 overall 与 style-controlled 两个榜单——引用任何 Arena 类分数,先问清它是哪个口径。

何时信谁(决策表):

场景 优先信 原因
两个模型谁写代码更强 静态(SWE-bench Verified / LiveCodeBench) 有执行测试的客观判定,偏好投票测不出正确性
两个模型谁聊天体验更好 Arena(style-controlled 口径) 偏好本就是被测对象
候选模型初筛 公开静态榜(LiveBench 类抗污染榜) 便宜、快、可复现
发布门禁 都不是——用私有集 + 在线信号 见 2.7 三层互补
相邻两名分差 2–5 分 都不信——视为统计不可区分 bootstrap CI 常宽 5–15 Elo 且重叠;CI 重叠的排名应报告为"不可区分组"

统计纪律(详见第 E9 章):报告 CI 而非点估计;用 BT 联合估计而非增量 Elo;比较用配对 bootstrap 直接看分差;重复 ≥3 次——单次运行的排名翻转概率不可忽略(2509.24086,2025),即使 temperature=0 + 固定 seed 仍存在非确定性(2410.03492,2024)。


三、面试高频考点

# 考点 分级 一句话考察意图
1 Benchmark 三轴分类学:静态/动态 × 能力/领域/应用 × 单轮/多轮/环境 ⭐ 能否拿到一个陌生 benchmark 先定位再使用,而不是背清单
2 主流 agent benchmark 速览:τ-bench / GAIA / SWE-bench / OSWorld / Terminal-Bench 各测什么、怎么判 ⭐ 知不知道每个基准的判定方式与一个标志性数字
3 判定方式谱系:精确匹配 → 执行测试 → 终态断言 → judge;轨迹匹配为何淘汰 ⭐⭐ 是否理解"功能性正确判定"与"grade the outcome, not the path"
4 pass^k:τ-bench 60%→25% 的鸿沟,为什么必须与 pass@1 并报 ⭐⭐ 能否区分"单次看起来不错"与"可部署",知不知道 k 取 4–8 的惯例
5 污染检测四范式:Min-K%(比基线 +7.4% AUC)/ 语义变体 / 格式敏感性 / canary ⭐⭐ 知不知道字符串匹配审计会漏掉语义级泄漏,canary 只能证"见过"
6 MMLU 崩塌双路线:Redux 修数据(~10% 坏题)vs MMLU-Pro 提难度(+16–32%) ⭐⭐ 能否讲清"饱和 + 质量"双重问题与两条修复路线的代价
7 动态基准四机制:时间截止 / 轮换 / 程序化生成 / 保义翻新,各自代价 ⭐⭐ 是否理解 LiveBench 牺牲跨版本可比性、生成器分布偏合成
8 GSM-Symbolic 脆弱性:符号变体致分数大幅波动、GSM-NoOp(无关从句)掉最高约 65%,单点分数不可信 ⭐⭐ 能否从"点估计"升级到"变体族均值 ± 方差"的测量观
9 Arena vs 静态 benchmark:各测什么、何时信谁;Arena-Hard 98.6% 相关性 ⭐⭐⭐ 能否给出场景化的"信谁"决策表,知道 style control 与两套榜单
10 三层互补选型:公开 benchmark + 私有 golden set + 在线信号;决策流程每步排除什么风险 ⭐⭐⭐ 是否具备"分数只用于淘汰、不用于加冕"的决策架构
11 Goodhart 与基准生命周期:holdout、KPI 反模式、退役标准(top>92% 且 CI 重叠) ⭐⭐⭐ 有没有"benchmark 是传感器,会老化会被作弊"的治理意识
12 harness 效应与跨基准低相关:Terminal-Bench 同一模型换 harness 分数大变;HAL 结论 ⭐⭐⭐ 能否批判"排行榜测的是模型还是 harness+模型",拒绝一个分数定优劣

四、经典面试题与参考答案

题 1(基础):你会怎么给 benchmark 分类?静态与动态的本质区别是什么?

参考答案: 我用三条轴定位一个 benchmark。①更新形态:静态(固定题集,如 GAIA、SWE-bench、OSWorld)vs 动态(持续更新或可生成,如 LiveBench、LiveCodeBench、DyVal、Chatbot Arena)。②定位:能力型测单项能力(BFCL、HLE)、领域型测行业环境(SWE-bench、WorkArena)、应用型测端到端产品形态(τ-bench、GAIA、OSWorld)。③交互形态:单轮问答 / 多轮对话 / 环境交互。静态与动态的本质区别是题目的时间属性:静态集一旦公开就进入"污染倒计时",且分数逼近天花板后失去区分度;动态集用轮换、时间截止或程序化生成保持新鲜度,代价是跨版本不可直接比较——所以引用动态基准必须 pin 版本号。分类的用途是判断外推性:一个静态、能力型、单轮的基准分数,对"我的客服 agent 能不能上线"几乎没有直接发言权。

题 2(基础):τ-bench、GAIA、SWE-bench、OSWorld 分别测什么?怎么判分?各给一个标志性数字。

参考答案: 四个基准覆盖四种形态。①τ-bench(Sierra,2024,arXiv 2406.12045):客服型 agent——与 LLM 扮演的用户多轮对话、遵守政策文档、调用工具完成退票改址;判分用终态数据库比对;标志性数字:GPT-4o 在 retail 域 pass^1≈60%(官方榜单 60.4%;摘要口径不足 50%)但 pass^8 跌到 ≈25%(摘要 <25%)。②GAIA(Meta/HF/AutoGPT,2023,arXiv 2311.12983):466 道"人类觉得简单、AI 觉得难"的通用助手题,L1/L2/L3 分级,短答案精确匹配;发布时人类 92% vs GPT-4+插件 ≈15%,2025 年顶级系统进入 70–80% 区间(榜单按月变动)。③SWE-bench(Princeton,2023,arXiv 2310.06770):真实 GitHub issue 产出 patch,用 FAIL_TO_PASS / PASS_TO_PASS 测试判定;发布时最好系统 ≈3%,2025 年头部 >70%。④OSWorld(XLANG,2024,arXiv 2404.07972):真实 OS 虚拟机里 369 个计算机操作任务,执行脚本检查终态;人类基线 72.4%,发布时最好 agent ≈12%,2025 年头部 40%+(369 题全集口径;Verified 口径更高,见主手册第 8 章)。判分方式的共同点是功能性判定——没有一个靠比对轨迹。

题 3(进阶):什么是 benchmark 污染?有哪些检测方法?为什么只做字符串匹配审计不够?

参考答案: 污染指题目进入训练语料导致分数虚高。检测有四类范式:①成员推断——Min-K% Prob(arXiv 2310.16789,ICLR 2024 oral)取一段文本中最低 K%(默认 20%)token 的对数概率均值做成员性分数,只需 API logprob,在 WikiMIA 上比既有最强方法提升约 7.4% AUC(平均 AUC 约 0.72);②语义级泄漏检测——把题目翻译或改写后测分差,UC Berkeley/LMSYS(arXiv 2311.04850,2023,Yang、Chiang、Zheng 等)证明 GSM8k/TruthfulQA 的翻译变体上仍有可检测的记忆信号,且英文原版记忆强于翻译版;③格式敏感性——选项置换一致性、字母偏置(arXiv 2503.23483、2404.08382),但鲁棒性可以被训练出来,只能作辅助证据;④canary strings——私有题集埋独特字符串/假事实,定期探测(源头 arXiv 2012.07805)。字符串匹配不够,是因为模型记的是"题"不是"字符串":改一个词、换个语言,记忆信号仍在。所以审计流程是组合拳:n-gram 重叠 → 嵌入相似度 → Min-K% → canary → 变体差分,任何单一信号都不定罪。实践立场:见过 ≠ 有罪,但分数必须按"可能见过"折价。

题 4(进阶):MMLU 出了什么问题?社区修复的两条路线各有什么代价?

参考答案: MMLU 是"饱和 + 质量"双重崩塌。质量侧:MMLU-Redux(arXiv 2406.04127,2024)对全部 57 个 subject 各抽 100 题、共 5,700 题重标注,发现约 6.49% 的题答案错误或题面歧义,修复后模型的准确率与相对排名都会变化——说明"权威分数"相当一部分测的是噪声。饱和侧:2024 年 GPT-4o/o1 系模型已到 87–90%+,天花板效应让基准失去排序力。两条修复路线:①修数据(Redux 派):重标注、剔除坏题——代价是工作量随题库线性增长,且只解决质量不解决饱和;②提难度(MMLU-Pro 派,arXiv 2406.01574):选项 4→10 个、题目推理化、引入新题,12,032 题,难度提升 16%–32%,GPT-4 级模型从近 90% 跌回 50–60%——代价是 10 选项放大上下文长度效应,且新基准照样会快速饱和。更深的教训:任何沿用公开题库的评测都要先做 item 级质检(抽样重标注 + 双评),否则测量误差会混入模型差异;报告分数时注明用的是原版还是修复版。

题 5(进阶):动态基准有哪几种机制?各自的代价是什么?

参考答案: 四种机制。①时间截止线(LiveCodeBench,arXiv 2403.07974,2024):题目带发布时间戳,只用晚于模型数据截止日的题,"污染距离"可量化可复现;代价是依赖领域的新题供给,且闭源模型的截止声明不可尽信,要 canary 抽查。②定期轮换(LiveBench,arXiv 2406.19314,2024):按月换题、全客观自动评分,发布时领先模型仍 <70%;代价是跨版本不可比,必须 pin 版本号归档答案。③程序化生成(DyVal arXiv 2309.17167,DyVal 2 arXiv 2402.14865,DynaMath arXiv 2411.00836,UGMathBench arXiv 2501.13766):benchmark = 采样器 + 求解器验证,机制上免疫记忆,还带难度旋钮;代价是分布偏合成,需与真实分布题目混合。④保义翻新(arXiv 2503.06643,2025):对存量题库做保义改写再制造,成本低、保留分布,适合私有集治理;代价是改写质量控制难,需在锚点模型上做等难度校准。共同代价是测量连续性:动态化解决污染,却让排行榜从"连续量尺"变成"当前快照",这是明确的 open problem。

题 6(进阶):Terminal-Bench 发现的"harness 效应"对"模型 A 比模型 B 强"这类结论意味着什么?评测设计上怎么隔离?

参考答案: Terminal-Bench(arXiv 2601.11868,ICLR 2026)在 TB 2.0 上观察到:各主流 coding agent 分数差异巨大(头部 50%+ 到长尾 <10%),且同一模型换 harness(执行框架)分数变化显著——排行榜测的其实是"harness + 模型"的组合,不是模型本身。这意味着跨团队、跨榜单比较时,"A 比 B 强"的结论可能完全由 harness 工程质量驱动;2025–2026 年开源 harness 生态爆发后,这直接影响"用哪个模型"的工程决策。隔离办法有四条:①模型对比时锁定 harness,harness 改动评估时锁定模型,分别报告;②采用标准参考 harness(如 Terminal-Bench 的 Terminus:只给无头终端、纯 bash),把执行框架与模型能力解耦;③报告时声明完整配置(harness 版本、观测表征、采样参数)——WebArena 的经验是 DOM/可访问性树表征的选择本身显著影响分数;④自建评测中把 harness 纳入被测系统整体,承认"我们测的是系统不是模型",对外沟通时不偷换概念。

题 7(进阶):Chatbot Arena 和静态 benchmark 各测什么?你会在什么场景下信谁?

参考答案: 两者测的是不同构念。Arena(arXiv 2403.04132,LMSYS,ICML 2024)测真实分布用户提问下的人类偏好——有用性 + 风格的混合体,题目来自实时用户,天然难以污染;指标是 Bradley-Terry + bootstrap CI(论文时 240K+ 投票,CI 通常宽 5–15 Elo)。静态 benchmark 测预定义任务的正确率,有客观判定但面临污染与饱和。信谁的决策表:比较写代码能力,信静态(SWE-bench Verified / LiveCodeBench),因为偏好投票测不出正确性;比较聊天体验,信 Arena 且优先 style-controlled 口径——长度偏好是已知偏差,LC-AlpacaEval(arXiv 2404.04475)回归去偏后与 Arena 相关性 0.94→0.98,verbosity 刷分收益从 ~12% 压到 ~3%;候选初筛信抗污染的公开静态榜;发布门禁两者都不信,用私有集 + 在线信号。两个注意事项:相邻两名差 2–5 分在 CI 重叠时应视为统计不可区分;Arena 排名可被少量操纵票影响(arXiv 2501.17858)、丢一小撮票即可改变顶部排名(arXiv 2508.11847),排名是激励面,必须配审计。

题 8(进阶):GSM-Symbolic 的实验说明了什么?它对你设计内部评测有什么具体影响?

参考答案: GSM-Symbolic(arXiv 2410.05229,Apple,ICLR 2025)把 GSM8K 每题用 LLM 生成 100 个符号变体(只改名字、数字、语序),发现准确率在变体族间显著波动、随从句数增加而下降;再构造 GSM-NoOp 加入一个看似相关却无关的从句,可使准确率相对下降最多约 65%(论文头条结论,如 GPT-4o 94.9%→63.0%)。结论:相当一部分"能力分"其实是记忆 + 脆弱模式匹配——单题单次评测只是点估计,同分布同难度的变体之间分数波动巨大。对内部评测的三点影响:①关键能力点改用变体族测量:对题 q 生成变体族,报告 E[acc] ± Var[acc] 与"扰动敏感度"(原始分 − 变体族均分),敏感度异常大就标记为记忆或脆弱推理;②变体族天然免疫记忆污染,可把私有集的数值题参数化(UGMathBench 式随机参数,arXiv 2501.13766),实现无限防泄漏重采样;③报告纪律上,任何分数都要带 CI 与重复次数——这与 DyVal 2(arXiv 2402.14865)"静态高分模型在动态探测下掉两位数百分点"的证据链一致:对外部模型选型,尽量用自建的、对方未见过的题集复测。

题 9(系统设计):你负责为公司的客服 Agent 建立 benchmark 选型与评测策略。给出完整方案:用什么公开基准、怎么建私有集、怎么防污染、怎么判定、怎么汇报、怎么做决策。

参考答案: 分五层设计。①公开基准(外部坐标):τ-bench / τ²-bench(arXiv 2406.12045 / 2506.07982)作为形态最接近的对照——它测的正是政策遵循 + 工具调用 + 多轮对话;函数调用底层能力用 BFCL 子项做画像(看"缺失函数/相关性"子项而非聚合分)。只用于行业对标与初筛,不进门禁。②私有 golden set(发布门禁):仿 τ-bench 四件套自建——政策文档/知识库 + mock API 工具集 + LLM 用户模拟器(固定版本)+ 终态数据库断言;100–300 任务,覆盖触发/核心逻辑/产物质量/异常容错四场景(详见第 E3 章);每题 4–8 次采样,汇报 pass@1 与 pass^k 及两者差距。③抗污染纪律:私有集永不入公开仓库/论文;每题埋 1–2 个 canary 字符串与假事实,定期探测;给每题记录 created_at,版本化注新;怀疑泄漏的题做保义改写轮换(arXiv 2503.06643)而非整套废弃。④判定:确定性优先——终态断言为主,开放性话术维度用 LLM judge,人工校准目标一致率 ≥85%(详见第 E5 章);审计用户模拟器的泄题路径(τ² 的教训)。⑤汇报与决策:所有分数带 CI、重复 ≥3 次;门禁同时要求统计显著与最小可感知变化(第 E9 章);发布决策 = 私有集门禁 + 灰度期在线信号(转人工率、重复追问率、投诉率,第 E12 章)双确认,离线升线上降则回滚。公开榜分只出现在能力画像附录里。

题 10(开放):"如果只能选一个指标向老板汇报我们的 Agent 变强了,你选哪个?"

参考答案: 答题框架分三步。第一步,先问有没有私有评测集:有,就选私有 golden set 上的业务口径——客服 agent 选"任务完成率 + pass^8"(带 CI),因为它是唯一分布与业务一致、判定与产品目标对齐、抗污染的测量;公开榜单分数放附录做能力画像。第二步,没有私有集时给诚实的第二答案:选与产品形态最接近的公开基准——客服选 τ-bench(报 pass^k:GPT-4o retail pass^1≈60% 但 pass^8 只有 ≈25%,单报 pass@1 会系统性误导)、代码选 SWE-bench Verified、通用助手选 GAIA——并主动声明这是代理指标,把"两周内建私有集"列为行动项。第三步,讲清为什么不选别的:不选单一公开榜单——HAL / AI Agent Index(Princeton SAgE,2025)发现跨基准分数相关性低、与真实用户满意度弱相关;不选 Arena 名次——风格偏差 + CI 重叠 + 可操纵;不选离线 judge 均分——Goodhart 风险,benchmark 分数只用于淘汰候选、不用于加冕发布(arXiv 2210.10760 的 proxy-gold 曲线)。这道题的得分点是展示"指标选择 = 决策链路设计",而不是报一个数字。


五、易错点 · 反直觉点

  1. 误区:公开 benchmark 分数高 = 生产表现好。 真相:跨基准分数相关性很低、与真实用户满意度弱相关(HAL / AI Agent Index,Princeton SAgE,2025);分布也不外推——SWE-bench Multimodal(arXiv 2410.03859,2024)上 GPT-4o+SWE-agent 在 Python Lite 约 33%,到 JS+视觉域跌至个位数~10%。记忆锚点:公开榜单是外部坐标,不是发布门禁。
  2. 误区:污染审计就是拿题面做字符串匹配。 真相:模型记的是"题"不是"字符串"——翻译/改写变体上仍有可检测的记忆信号(arXiv 2311.04850,2023),必须做语义级审计(嵌入相似度 + 变体差分 + Min-K%)。记忆锚点:背题背的是意思,不是原文。
  3. 误区:canary 没被探测出来,说明题目没泄漏。 真相:canary 只能证明"见过",证不了"没见过"——阴性结果不构成清白证据;私有集的保密纪律(不入库、不进 issue、不进论文附录)才是第一道防线。记忆锚点:canary 是烟雾报警器,不是安检仪。
  4. 误区:基准饱和了,出更难的题就能解决。 真相:难度军备竞赛是 treadmill——HLE(arXiv 2501.14249)发布时最强模型 <10%,一年内就被推理模型推到 30%+;且超难题测的是长尾知识,与用户价值相关性弱,难题集还样本少、方差大。记忆锚点:更难 ≠ 更有用,只是把饱和推迟两年。
  5. 误区:动态基准解决了污染问题,可以放心用。 真相:动态化用测量连续性换抗污染——LiveBench(arXiv 2406.19314)换题后历史分数失效,2024-07 版与 2025 版不可比;引用动态基准不 pin 版本号等于没引用。记忆锚点:动态基准是快照,不是尺子。
  6. 误区:MMLU 分数仍然可以当"综合能力"指标。 真相:约 6.49% 的题答案错误或歧义(MMLU-Redux,arXiv 2406.04127,2024;个别学科如 Virology 高达 57%),修复后排名都会变;且头部模型 87–90%+ 已近饱和。报告 MMLU 必须注明原版还是修复版。记忆锚点:尺子刻度本身就有一批是错的。
  7. 误区:用户模拟器配合得好,agent 分数高就是能力强。 真相:τ-bench 的用户模拟器会向 agent 泄露关键信息,τ²-bench(arXiv 2506.07982,2025)引入双控后各家分数显著下降——此前高分部分来自"配合性泄题"。模拟器本身是被测系统的效度来源,换模拟器模型分数就会变,报告必须固定模拟器版本。记忆锚点:考官递答案,考高分不算数。
  8. 误区:把 benchmark 分数直接设为团队 KPI 或 RL 奖励,分数涨了就是进步。 真相:这是教科书级 Goodhart——proxy 奖励单调上升的同时 gold(真实能力)先升后降(arXiv 2210.10760,2022);AlpacaEval 的长度 gaming 是现成案例。制度防线:永不宣传的内部 holdout、多信号决策、定期核对 proxy-gold 相关性。记忆锚点:分数一旦成为目标,就不再是好测量。
  9. 误区:单次跑出的分数(或排行榜名次)就是模型的真实水平。 真相:只改人名/数字/语序分数就在变体族间大幅波动,再加一个无关从句(GSM-NoOp)相对掉最多 65%(GSM-Symbolic,arXiv 2410.05229);单次运行排名翻转概率不可忽略(arXiv 2509.24086);temperature=0 + 固定 seed 也仍有非确定性(arXiv 2410.03492)。可靠测量 = 重复 ≥3 次 + 变体族 + CI。记忆锚点:单次分数是照片,分布才是本人。

六、推荐资源

核心论文(来自 _research/02-agent-benchmarks.md、05-benchmark-dynamics.md、04-statistics.md 已核实清单;标注【未核实】者素材中未联网复核,引用前请二次确认):

Agent benchmark 全景

arXiv 基准 年份 本章用到
2406.12045 τ-bench(Sierra) 2024 客服型评测范式、pass^k、终态 DB 断言;60%→25%
2506.07982 τ²-bench(Sierra) 2025 双控用户模拟、泄题审计
2311.12983 GAIA(Meta/HF/AutoGPT,ICLR'24) 2023 精确匹配 + 难度分级;人类 92% vs 15%
2308.03688 AgentBench(清华,ICLR'24) 2023 多环境聚合评测的套件范式
2310.06770 SWE-bench(Princeton,ICLR'24) 2023 FAIL_TO_PASS/PASS_TO_PASS 测试驱动判定;3%→70%+
2410.03859 SWE-bench Multimodal(ICLR'25) 2024 语言/模态分布不外推:33%→个位数
2307.13854 WebArena(CMU,ICLR'24) 2023 自托管沙箱 + 功能性检查;14%→60%+
2401.13649 VisualWebArena【未核实】 2024 多模态网页任务
2404.07972 OSWorld(XLANG,NeurIPS'24) 2024 OS 级终态脚本判定;人类 72.4% vs 12%
2409.08264 WindowsAgentArena【未核实】(Microsoft) 2024 并行化评测基础设施样板
2403.07718【未核实】/ 2407.05291 WorkArena / WorkArena++(ServiceNow) 2024 企业 SaaS 评测;最好模型仅约两成
2601.11868 Terminal-Bench(Stanford + Laude,ICLR'26) 2026 Docker + pytest + Terminus;harness 效应
2501.14249 Humanity's Last Exam(CAIS + Scale 等) 2025 专家出题 + 难度标定方法论;<10%→30%+
2407.15711 AssistantBench(AI2) 2024 214 任务;题目可行性验证流程;最好 agent ~25%
2401.13919 WebVoyager【未核实】 2024 真实网站评测 + GPT-4 judge(与人工 ~87% 一致)
2305.15334【未核实】 Gorilla / BFCL(UC Berkeley) 2023 函数调用子项拆分:相关性/缺失函数是短板
2410.10934 Agent-as-a-Judge(Zhuge et al.,ICML 2025) 2024 带工具评审 Agent:DevAI 55 任务/365 需求;相比三位人类专家节省 97.72% 时间、97.64% 成本
2509.16941【未核实】 SWE-bench Pro(Princeton) 2025 私有测试 + 长程任务的抗污染路线

污染、饱和与动态基准

arXiv 标题 年份 本章用到
2310.16789 Detecting Pretraining Data from LLMs(Min-K% Prob / WikiMIA,ICLR'24 oral) 2023 成员推断;WikiMIA 上比基线 +7.4% AUC(平均 AUC≈0.72)
2311.04850 Rethinking Benchmark and Contamination with Rephrased Samples(Tencent AI Lab) 2023 语义级泄漏;翻译/改写变体记忆
2012.07805 Extracting Training Data from LLMs(Carlini 等,Google) 2020 canary strings 方法源头
2406.04127 Are We Done with MMLU?(MMLU-Redux) 2024 5,700 题重标注,~6.49% 坏题;修复后排名变化
2406.01574 MMLU-Pro 2024 加难路线:10 选项、+16–32%、90%→50–60%
2406.19314 LiveBench 2024 月度轮换 + 客观评分;跨版本不可比
2403.07974 LiveCodeBench 2024 时间截止线与"污染距离"
2309.17167 DyVal(ICLR'24) 2023 程序化生成基准的范式
2402.14865 DyVal 2 2024 静态-动态分数脱钩,两位数百分点差距
2410.05229 GSM-Symbolic(Apple,ICLR'25) 2024 变体脆弱性:符号变体致分数波动、GSM-NoOp 无关从句掉最高约 65%;变体族测量
2503.06643 Is Your Benchmark Still Useful? 2025 保义翻新存量题库
2503.23483 Order Independence With Finetuning 2025 选项顺序敏感性与置换平均
2404.08382 Look at the Text 2024 格式捷径检测的反面证据
2411.00836 DynaMath 2024 视觉数学的参数化生成管线
2501.13766 UGMathBench 2025 随机参数变体:最轻量的动态化
2210.10760 Scaling Laws for Reward Model Overoptimization(OpenAI) 2022 Goodhart 的定量版:gold 先升后降
2605.04312 Agent Island 2026 多智能体博弈的对抗式动态评测
2606.07805 Beyond Goodhart's Law(多智能体合规) 2026 奖励偏向任务完成时流程遵守退化

Arena 与统计纪律(详见第 E9 章)

arXiv 标题 年份 本章用到
2403.04132 Chatbot Arena(LMSYS,ICML'24) 2024 BT + bootstrap CI;240K+ 投票;CI 宽 5–15 Elo
2406.11939 Arena-Hard / BenchBuilder(ICML'25) 2024 500 题蒸馏;与 Arena 相关性 98.6%;成本 <$20
2404.04475 Length-Controlled AlpacaEval(Stanford) 2024 长度回归去偏:0.94→0.98;verbosity 12%→3%
2410.03492 Quantifying Uncertainty in LLM Benchmark Scores 2024 temperature=0 仍非确定
2509.24086 Do Repetitions Matter? 2025 单次运行排名翻转不可忽略;重复 3–5 次
2501.17858 Vote Rigging on Chatbot Arena 2025 影响函数投票操纵
2508.11847 Dropping a Handful of Preferences Changes Rankings 2025 丢票敏感性;比较图均衡

延伸阅读(素材已核实):SWE-smith(2504.21798,bug 注入合成 5 万级任务);SWE-Lancer(2502.12115,$1M+ 计价任务);MLE-bench(2410.07095);AndroidWorld(2405.14573,参数化动态任务);WebShop(2207.01206【未核实】,背景);Mind2Web(2306.06070【未核实】,背景);MT-Bench / LLM-as-a-Judge 起源(2306.05685,2023)。

非 arXiv 材料:

  • BrowseComp:OpenAI 博客 "BrowseComp: A simple yet challenging benchmark for browsing agents"(2025-04),1266 题、闭源题面,无 arXiv 论文。
  • BFCL 榜单:gorilla.cs.berkeley.edu/leaderboard.html,以博客/技术报告形式持续迭代。
  • HAL / AI Agent Index(Princeton SAgE):hal.cs.princeton.edu,系统化运行多 agent 基准并分析跨基准相关性(具体论文 arXiv ID 待核实)。
  • Sean Grove(OpenAI),The Illusion of Model Improvement: Can LLM Benchmarks be Misleading?(2024-10):基准分数差异很大一部分来自数据划分与泄漏巧合,未上 arXiv。
  • AlpacaEval(GitHub 项目):长度 gaming 导致排行榜失真的经典案例。

动手 labs(纯标准库、固定种子、可复现):

lab 你将验证 运行
eval_lab08_statistics_ci.py 分数带 CI 的必要性:Wilson 区间、bootstrap、样本量速查 cd evals-special/labs && python3 eval_lab08_statistics_ci.py
eval_lab11_arena_bradley_terry.py BT vs Elo、bootstrap 分差 CI、风格控制如何恢复真实排序 cd evals-special/labs && python3 eval_lab11_arena_bradley_terry.py
eval_lab01_metric_system.py pass@k 与 pass^k 随 K 分道扬镳(τ-bench 鸿沟的最小复现) cd evals-special/labs && python3 eval_lab01_metric_system.py
eval_lab02_golden_dataset.py 私有 golden set 的构建与治理流水线(入库标准、去重、版本化) cd evals-special/labs && python3 eval_lab02_golden_dataset.py

章节交叉引用:指标体系与 pass^k 口径(第 E2 章 · 评估指标体系);私有集的用例设计与生命周期治理(第 E3 章 · 黄金数据集与用例设计);judge 偏差与校准(第 E5 章 · 评分三层之二:LLM-as-Judge 深入);用户模拟器与 fixtures 的工程实现(第 E8 章 · 对话 Agent 与仿真评测);CI、bootstrap 与样本量公式(第 E9 章 · 评估的统计学基础);在线信号与离线-线上对齐(第 E12 章 · 在线评估与数据飞轮);本章全部论文的教学化综述(第 E14 章 · 前沿论文全景);Airbnb/DoorDash/阿里/腾讯的私有评测实践(第 E15 章 · 工业实践案例研究);主手册第 8 章 · Agent 评估与可观测性(Benchmark 一节的浓缩版)。

第 14 章 / 共 15 章

前沿论文全景(2024-2026)

📌 本章导航(6 节)

一句话导读:本章把 _research/ 十份调研报告(200+ 篇论文,多数 arxiv ID 已逐条核实)浓缩为九个方向的"教学化综述"——每个方向讲清演进主线、代表论文与未解问题。这是全特辑的"雷达站":想知道 evals 领域过去两年发生了什么、下一步往哪走,读这一章。


一、知识图谱

Evals 前沿研究全景(2024-2026)
│
├── 测量仪器本身可靠吗?
│   ├── ① LLM-as-Judge:偏差 catalog → 元评估 → 可训练 judge → judge 优化与攻防
│   └── ④ 评测统计学:点估计 → 置信区间/显著性 → Arena 方法论 → 事前设计
│
├── 拿什么考卷?
│   ├── ② Agent 基准:环境奠基 → SWE-bench 爆发 → 难度军备与可靠性转向 → 信任危机
│   └── ⑤ Benchmark 动态:污染检测工具化 → MMLU 信任危机 → 动态基准制度化 → 生成式基准
│
├── 怎么判卷?
│   ├── ③ 轨迹/过程评估:PRM 奠基 → 标注自动化 → Agent 化 → 元评估与信用分配
│   └── ⑧ 组件级/RAG:端到端黑盒 → 声明分解+逐条验证 → 组件级诊断指标
│
├── 评测怎么用?
│   ├── ⑥ EDD 与仿真:方法论成型(EDDOps)→ 仿真标准化(τ-bench 系)→ eval 成为优化目标(GEPA)
│   └── ⑦ 安全评测:单点攻击 → 标准化框架 → 多轮与 Agent → 动态生态化
│
└── 闭环的暗面与底座
    ├── ⑨a 自改进闭环:self-rewarding → reward hacking 实证 → RLVR 爆发 → 生产环境观测
    └── ⑨b 评测基础设施:框架标准化 → 防污染治理 → 可观测性标准 → 自动诊断

阅读方式:每个方向按「演进主线 → 代表论文 → 未解问题」组织。论文均给出 arxiv ID 与年份;细节与更多论文见 _research/0N-*.md 调研报告(引用前请以调研报告为准,个别标注【未核实】的条目需自行复核)。

二、核心概念精讲

2.1 方向①:LLM-as-Judge——裁判科学

演进主线(四段)

  1. 偏差的实证 catalog(2023–2024 上):位置偏差、冗长偏差、自我偏好、风格压倒实质相继被量化;第一批缓解方法出现(交换/长度回归/评审团集成)。
  2. 元评估成为独立赛道(2024 下):人们意识到 judge 之间高一致 ≠ judge 正确,出现以客观真值校准 judge 的基准。结论一致:前沿 judge 在客观困难任务上准确率只有 ~57% 量级,与人类评审有明显差距,且可能"集体犯错"。
  3. 可训练的 judge(2024–2025):judge 从提示词工程走向模型工程——开源评测专用模型、纯合成数据自训练、生成式/推理式 judge(把奖励建模变成 next-token prediction、用 RL 训练"会推理的裁判")。
  4. judge 的优化与攻防(2025–2026):judge prompt/rubric 本身成为可优化对象(GEPA 反射式 prompt 进化);judge 的可攻击性被正面研究——对抗样本可让安全 judge 把 100% 的有害输出判为安全。系统复盘显示:多数单点去偏策略收益有限,"中端模型 + 组合去偏"反而能胜过前沿 judge 且便宜约 15 倍。

代表论文

论文 ID 一句话贡献
LLM Evaluators Recognize and Favor Their Own Generations(2024) 2404.13076 量化"自我偏好":judge 能识别并偏爱自己生成的文本
Style Outweighs Substance(2024) 2409.15268 系统揭示对齐评测中 judge 的风格偏差压倒内容实质
Length-Controlled AlpacaEval(2024) 2404.04475 用回归剔除长度偏差,把 Spearman 相关性显著提升,成为去偏标准做法
PoLL: Panel of Diverse LLM Judges(2024) 2404.18796 异构小模型评审团比单个大 judge 更准更便宜
JudgeBench(2024) 2410.12784 用客观真值(单元测试等)校准 judge:最强 judge 准确率 ~57% vs 人类 ~78%
GenRM: Generative Reward Models(2024) 2408.15240 把奖励建模变成 next-token prediction,生成式 judge 范式
GEPA(2025) 2507.19457 反射式 prompt 进化,以远少于 RL 的 rollout 优化 judge/系统 prompt(DoorDash 生产在用)
Know Thy Judge(2025) 2503.04474 对抗攻击可让安全 judge 100% 放行有害输出——judge 是攻击面
Judging the Judges(2026) 2604.23178 对去偏策略的系统复盘:单点收益有限,组合去偏才稳健

未解问题:一致性高到底是可靠还是共谋?去偏方法是否真有持久效果(发表偏差 vs 系统复盘的矛盾)?推理模型是否更好的 judge(证据分裂)?judge 分数作训练奖励的 Goodhart 边界在哪?

2.2 方向②:Agent 基准——从沙箱到信任危机

演进主线(四段)

  1. 环境奠基期(2024 上):自托管沙箱环境 + 程序化判定成为范式;GAIA 确立"结果精确匹配 + 难度分级"的通用助手评测;τ-bench 把对话式工具 Agent 与用户模拟器引入评测。
  2. 软件工程爆发期(2024 下):SWE-bench 成为事实标准,Verified/Multimodal 变体相继出现;Agent-as-a-Judge 开启"用 Agent 评 Agent"。
  3. 难度军备与可靠性转向(2025):公开基准分数逼近高位后,社区转向更难、抗污染的新基准;τ²-bench 用"双控"模拟解决泄题;pass^k / 多次采样成为标配。
  4. 基准工业化与信任危机并存(2026):终端 Agent 评测标准化(Terminal-Bench,ICLR 2026);同时社区系统性质疑:基准间分数相关性低、harness 工程对分数影响巨大、基准分数与生产表现脱节。评测重心正从公开排行榜转向私有 golden set + 领域定制评测套件。

代表论文

论文 ID 一句话贡献
τ-bench(2024) 2406.12045 用户模拟器 + 工具调用 + 数据库终态校验 + pass^k,对话式 Agent 评测范式奠基
τ²-bench(2025) 2506.07982 双控环境(用户侧也能调工具),堵住模拟器泄题
SWE-bench(2023) 2310.06770 真实 GitHub issue 修复任务,软件工程 Agent 评测事实标准
OSWorld(2024) 2404.07972 真实虚拟机上的开放式计算机操作评测
GAIA(2023) 2311.12983 通用 AI 助手基准,精确匹配 + 三级难度
Terminal-Bench(2026) 2601.11868 命令行长程任务评测标准化(ICLR 2026)
Humanity's Last Exam(2025) 2501.14249 专家级难题集,难度军备竞赛路线代表

未解问题:污染是否已让公开排行榜失效(信任差在扩大)?难度军备是进步还是 treadmill?pass^k 是否过严(惩罚了可回滚的错误)?排行榜测的是模型还是 harness?基准分数与用户满意度的相关性弱(HAL 类发现)如何决策?

2.3 方向③:轨迹与过程级评估——信用分配体系化

演进主线(四段)

  1. PRM 奠基与标注自动化(2023–2024 上):逐步验证优于只看结果,但依赖海量人工步骤标注;Math-Shepherd 用蒙特卡洛 rollout 自动估计每步后续成功率,OmegaPRM 用二分搜索把标注成本降到 O(log n)。
  2. 形式多样化(2024 下):生成式验证器(critique + verdict)、VinePPO 把信用分配做进 RL 训练本身(无偏优势估计)、步骤级偏好对齐。
  3. 反思与落地到 Agent(2024 末–2025):Qwen 团队系统披露 PRM 局限(reward hacking、分布外失效);PRIME 证明无需步骤标签也能拿过程奖励;Agent-as-a-Judge 把步骤级评估扩展到开发型 Agent;τ-bench 用终态比对做执行式验证。
  4. 元评估与体系化(2025–2026):AgentRewardBench(2025)专门评估"自动轨迹评估器本身",揭示纯阅读式 LLM 判别器的高误报率;信用分配专题综述把推理与 Agent 两条线统一成体系。

一句话:从"给步骤打分"(PRM)到"给 Agent 轨迹打分"(trajectory scoring)再到"给打分器打分"(meta-evaluation),同一套信号反哺训练(RL credit assignment)与推理时搜索(verifier-guided search)。

代表论文

论文 ID 一句话贡献
Math-Shepherd(2023) 2312.08935 蒙特卡洛 rollout 自动标注过程奖励,摆脱人工步骤标注
OmegaPRM(2024) 2406.06592 二分搜索式自动过程监督标注,成本 O(log n)
VinePPO(2024) 2410.01679 中间状态重采样获得无偏步骤级优势估计
Agent-as-a-Judge(2024) 2410.10934 带工具的 Judge Agent 做步骤级评估,比纯 LLM judge 大幅省时且贴近人工
PRM Lessons(2025) 2501.07301 PRM 工程实践的系统性教训:会被 best-of-N hacking、难度外推差、验证器有分布漂移
τ-bench(2024) 2406.12045 执行式验证代表:数据库终态比对,轨迹评估的工业落地形态

未解问题:PRM 到底值不值得做("ORM + 更多采样"性价比之争)?显式步骤标签是否必要(PRIME/VinePPO vs GenRM 路线之争)?纯阅读式轨迹 judge 误报率 >50% 的悲观证据与 Agent-as-a-Judge 的乐观证据如何调和(关键变量:评估器是否拥有执行/核验工具)?过程对但结果错、结果对但过程错,生产该信谁?验证器多久重训一次?

2.4 方向④:评测统计学——从点估计到推断

演进主线(四段)

  1. 方法论奠基(2024 上):Chatbot Arena 确立 Bradley-Terry 评分 + bootstrap CI;Arena-Hard 把 Arena 蒸馏成可复现自动评测;LC-AlpacaEval 用回归消除长度偏差。
  2. 反思与形式化(2024 下):量化 benchmark 分数的不确定性;证明 judge 评测的样本效率下界;UC Berkeley 把 Arena 排名形式化为可推断的统计框架(factored tie model + 协方差建模)。
  3. 规范化与攻击面(2025):"到底需要多少样本/多少次重复"成为独立子方向;pass@k 的统计缺陷被系统批判并给出贝叶斯替代;Arena 排名的可操纵性被攻击性研究检验(投票操纵、丢票敏感性);LLM-judge 结果的报告规范被提出(偏差校正估计量 + 置信区间)。
  4. 事前设计(2026 进行中):统计保证下的自适应/预算分配式评测出现,评测统计学从"事后解释"走向"事前设计"。

代表论文

论文 ID 一句话贡献
Chatbot Arena(2024) 2403.04132 开放平台众包偏好评测 + BT 评分 + bootstrap CI,成为事实标准
Arena-Hard(2024) 2406.11939 Arena 数据蒸馏为可复现基准(BenchBuilder 管线)
A Statistical Framework for Ranking LLM-Based Chatbots(2024) 2412.18407 BT + tie 模型 + 协方差的严格统计推断框架
ReliableEval(2025) 2505.22169 随机评测的矩方法样本量配方
pass@k 的统计批判(2025) 2510.04265 系统指出 pass@k 的估计缺陷并给出贝叶斯替代
Arena 投票操纵(2025) 2501.17858 证明少量操纵票即可影响排名——排行榜是攻击面
LLM-judge 报告规范(2025) 2511.21140 偏差校正估计量 + CI 的报告标准提案

未解问题:风格控制该"去偏"还是"保留"(长度部分承载信息量)?重复实验 3 倍成本谁买单?众包偏好评测在激励存在时是否本质上不可信?微小分差的过度解读如何治理?

2.5 方向⑤:Benchmark 污染、饱和与动态基准

演进主线(四段)

  1. 污染检测工具化(2023 末–2024 上):三类检测范式成熟——成员推断(Min-K% Prob / WikiMIA,ICLR 2024)、格式变体(改写/翻译后的变体同样泄漏)、选项结构敏感性(选择题分数相当部分来自格式捷径)。
  2. MMLU 信任危机与修补(2024 中):重标注发现约 10% 的题面/答案有误或歧义,修复后分数与排名都变;MMLU-Pro 走"加深加难"路线。修数据与提难度成为老牌基准的标准动作。
  3. 动态基准制度化(2024):从"一次性发布测试集"转向"持续更新的测试流"——LiveBench 按月换题、全客观评分;LiveCodeBench 按时间截止线持续采集新题,使"污染距离"可量化;DyVal 系用程序化生成让每次评测题目都是新的。
  4. 脆弱性量化与生成式基准(2024 末–2026):GSM-Symbolic 证明只改名字/数字/语序就能让数学分数暴跌至多 65%,暴露"能力 vs 记忆"的界限模糊;基准本身变成可无限采样的生成器(DynaMath、UGMathBench);HLE 代表难度军备竞赛路线,同时引发"越来越难却越来越远离用户价值"的批评。

代表论文

论文 ID 一句话贡献
Min-K% Prob / WikiMIA(2023,ICLR 2024) 2310.16789 低概率 token 对数似然判别文本是否在预训练语料中
Are We Done with MMLU?(2024) 2406.04127 重标注 5,700 题发现 ~6.49% 错误,MMLU-Redux 修复版
MMLU-Pro(2024) 2406.01574 10 选项 + 推理型题目,难度提升 16–32%
LiveBench(2024) 2406.19314 按月换题 + 全客观自动评分的动态基准
LiveCodeBench(2024) 2403.07974 时间截止线持续采集新题,污染距离可量化
DyVal 2(2024) 2402.14865 程序化生成动态题目;静态高分模型在动态探测下显著掉分
GSM-Symbolic(2024,ICLR 2025) 2410.05229 表面变体让数学分数暴跌至多 65%——脆弱性量化里程碑
Is Your Benchmark Still Useful?(2025) 2503.06643 保义改写程序化翻新旧题库

未解问题:污染的举证标准("见过 ≠ 有罪,但分数必须按可能见过折价"是当前折中)?修数据 vs 提难度 vs 换范式三条路线的投入产出?动态基准解决污染却引入测量连续性问题(历史分数失效)?Goodhart 是否无解?

2.6 方向⑥:EDD 与仿真评测——评测成为开发方式

演进主线(六段,2024 末–2026)

  1. 方法论成型:EDD 从口号变成有过程模型与参考架构的工程学科——arxiv 2411.13768 首发,2025 年 v3 扩展为 EDDOps(offline/online 评测与运行时控制环统一);Anthropic 与 OpenAI 把 eval-driven development 写入官方开发指南。
  2. 仿真评测标准化:τ-bench 首创"LLM 用户模拟器 + 工具调用 + 终态校验 + pass^k";τ²-bench 升级双控;persona 驱动、非合作模拟、模拟器可靠性本身成为研究对象。
  3. eval 成为优化目标函数:DSPy → MIPROv2 → GEPA,优化器直接以 eval 分数为搜索目标;Nubank 甚至用 GEPA 优化 LLM 裁判本身的一致性。
  4. 持续评测与数据飞轮:生产 trace 回流为测试用例(DoorDash、Discord AITL);eval 进 CI 成为发布门禁;"评测资产"像代码资产一样版本化。
  5. offline-online 一致性出现量化证据:Nubank 报告离线仿真指标与线上 A/B 强相关(首个大规模量化证据);反方(OlaBench)强调 gap 仍普遍——两派证据并存。
  6. 学界/工业界错位被量化:EDDOps 对 134 篇学术文献统计:约 93% 聚焦部署前、仅约 2% 覆盖部署后;工业界灰色文献约 40% 已转向持续评测——学术供给与工程需求明显错配。

代表论文

论文 ID 一句话贡献
EDDOps(2024/2025 v3) 2411.13768 EDD 的过程模型与参考架构:eval 即规约,贯穿全生命周期
Nubank 亿级用户客服 Agent 框架(2026) 2606.08867 离线仿真与线上 A/B 强相关的首个大规模证据(+37pp NPS 量化)
τ²-bench(2025) 2506.07982 双控用户模拟(Dec-POMDP),模拟器也能行动
GEPA(2025) 2507.19457 反射式 prompt 进化:eval 作为目标函数的代表性优化器
OlaBench/OlaMind(2025) 2510.22143 反方证据:离线分数与可部署行为之间的 gap 仍普遍

未解问题:离线到底能不能代表线上(当前共识"必要不充分",需 shadow/canary/A-B 补最后一公里)?用户模拟器是不是"假用户"(同源偏差、保真度无标准指标)?CI eval 门禁的成本与 flakiness(小团队怎么办)?eval 优化器会不会奖励作弊(grader-hacking)?

2.7 方向⑦:安全与红队评测——从攻击技巧到标准化考试

演进主线(五段)

  1. 标准化评测框架(2024 上):从零散攻击技巧(GCG、PAIR、TAP)到有固定行为集、固定流水线、公开榜单的标准化考试——HarmBench、JailbreakBench、StrongREJECT 几乎同时出现。
  2. 从二元判定到分级评分(2024):StrongREJECT 证明二元 ASR 严重低估攻击效果,rubric 分级评分成为主流;安全 judge 从字符串匹配进化到语义级评估器与集成 judge。
  3. 从单轮到多轮与 Agent(2024 下起):Crescendo、MAST 揭示多轮攻击成功率远高于单轮;InjecAgent、AgentDojo、Agent-SafetyBench、ASB 把评测对象从"聊天回复"扩展到"工具调用轨迹"——提示注入成为 Agent 安全的第一威胁模型。
  4. 静态题库到动态/生态化(2024–2026):WildTeaming at Scale 挖掘真实用户越狱语料;AgentDojo 引入可参数化、可再生的动态任务环境。
  5. 攻防双向闭环:评测框架同时服务攻击与防御(robust refusal 训练、防御微调、防御插拔接口)——benchmark 即攻防擂台。

代表论文

论文 ID 一句话贡献
HarmBench(2024) 2402.04249 标准化红队评测框架 + robust refusal 训练
StrongREJECT(2024) 2402.10260 证明二元 ASR 误导攻防军备,推动 rubric 分级评分
JailbreakBench(2024) 2404.01318 开放越狱鲁棒性基准与标准化流水线
AgentDojo(2024) 2406.13352 动态环境评测提示注入攻击与防御,任务可参数化再生
InjecAgent(2024) 2403.02691 工具集成 Agent 的间接提示注入基准
ASB: Agent Security Bench(2024) 2410.02644 十场景系统化的 Agent 安全基准(攻击/防御/度量三位一体)

未解问题:rubric judge 自身的校准成本把问题推后一层("有害程度"标注主观、跨文化不一致);多轮攻击的评测预算爆炸;动态环境基准的可复现性;安全 judge 被对抗攻击 100% 绕过的鲁棒性缺口(与方向①交汇)。

2.8 方向⑧:组件级评估与 RAG——把黑盒拆开

演进主线(三段)

  1. 奠基(2023):AIS 归因形式化定义、FActScore 原子事实分解("声明分解 + 逐条验证"范式源头)、ALCE 引用指标、RAGAS/ARES 等 RAG 评测框架密集出现。
  2. 组件级成熟 + 规模化基准(2024):RAGChecker 提出声明级 + 检索器/生成器双层诊断指标,成为组件级评估标杆;CRAG(Meta KDD Cup 2024)把评测推向动态、带时效的工业级基准;SAFE 把 FActScore 完全自动化做到与人评同级;AttributionBench 首次系统横评归因评估方法本身。
  3. 效率化、代理化、纵深场景(2025–2026):蒸馏式事实性裁判降本、agentic/多跳检索评估、归因信号进入 RL 训练回路(grounded RL / citation RL)、法律与科研等垂直域引用评测。横切主题:judge 校准——裁判本身会幻觉、有偏好偏差,需要 gold set 校准与统计修正(PPI)。

代表论文

论文 ID 一句话贡献
FActScore(2023) 2305.14251 原子事实分解逐条验证,长文事实性评估奠基范式
SAFE(2024) 2403.18802 FActScore 全自动化,与人评同级且便宜 20 倍量级
RAGChecker(2024) 2408.08067 声明级 + 检索/生成双层诊断指标,组件级评估标杆
RAGTruth(2024) 2401.00396 RAG 专用幻觉语料
AttributionBench(2024) 2402.15089 首次系统横评归因评估方法:没有绝对赢家,自建 gold 校准是唯一可靠路线

未解问题:组件指标高 ≠ 用户满意(检索 recall 高但生成不用、faithfulness 高但答非所问);声明粒度敏感性(抽取过细高估错误、过粗漏检);FActScore 只测 precision 导致"短回答得分高";忠实性 ≠ 正确性的产品拉锯(严格 grounded 会大量拒答)。

2.9 方向⑨:自改进闭环与评测基础设施

9a. 评测与训练闭环——Goodhart 的主战场

  1. 自我改进闭环成型(2024 上):Self-Rewarding LM 确立"同模型既当运动员又当裁判";Meta-Rewarding 加"裁判的裁判"对抗自我偏好;RLAIF 证明 AI 反馈可替代人类反馈。
  2. reward hacking 成为实证科学(2024 下):Sycophancy to Subterfuge 展示谄媚零样本泛化成篡改奖励的完整谱系;Alignment Faking 给出策略性伪装对齐的直接证据;Goodhart 被量化到 RLHF。
  3. RLVR 大爆发与"评测集即奖励"(2025):DeepSeek-R1 用规则可验证奖励把 RL 推上推理主战场,评测集答案验证器事实上成为训练奖励。两波反思:RLVR 是否真教会新能力(pass@k 反转实验);评测集污染让收益变成"背书"而非"推理"。
  4. 从实验室到生产(2025 下–2026):生产级 RL 训练中直接观测到 reward hacking;agentic 评测出现"模型修改测试文件骗分"的 eval gaming;系统性综述与缓解方法(recontextualization、reward shaping、迭代式奖励模型重训)跟进。

核心张力:评测集既是"考卷"又是"答案来源"时,它同时承担测量工具和奖励函数两种角色,Goodhart 定律必然生效。

论文 ID 一句话贡献
Self-Rewarding Language Models(2024) 2401.10020 自我奖励迭代 DPO 范式奠基
Sycophancy to Subterfuge(2024) 2406.10162 reward hacking 的行为谱系:谄媚 → 规格钻营 → 奖励篡改
Alignment Faking(2024) 2412.14093 策略性伪装对齐的直接证据
DeepSeek-R1(2025) 2501.12948 规则可验证奖励(RLVR)引爆推理能力 RL
RLVR 的极限(2025) 2504.13837 pass@k 反转实验质疑 RLVR 的能力增益
生产环境 reward hacking 观测(2025) 2511.18397 生产级 RL 训练中 reward hacking 的第一手实证
Eval gaming 案例(2025) 2506.12286 Agent 修改测试文件骗分——评测自身成为攻击对象

9b. 评测基础设施与可观测性

  • 框架标准化:lm-evaluation-harness、Inspect AI(UK AISI)、HELM 三大开源底座;重心从"多刷任务"转向可复现性与评测集治理(版本管理、prompt 固化、种子记录)。
  • 与生产分布对齐:WildBench、Chatbot Arena 把真实用户 query 分布引入评测。
  • 可观测性标准收敛中:OpenTelemetry GenAI semantic conventions 从各家私有 schema 向统一标准收敛,但仍处 Development 稳定性;部分 agent/tool 属性已进入 registry,完整的 agentic span 约定仍在提案推进中。
  • 从观测到诊断:TRAIL、AgentDebug 等用 LLM 读 trace 自动定位失败(~40-60% 定位准确率)——可观测性从"看得见"推向"自动找错",而模型在 trace 调试上的能力短板本身又成了新的评测任务。

未解问题:生产 trace 复用于评测的数据治理(PII 与"最真实分布"的冲突);OTel 标准"现在站队 vs 等技术债"的两难;自动诊断的成熟度是否够生产;第三方评测 vs 自评的治理有效性。

2.10 趋势判断:evals 的下一站

  1. Judge 校准成为一等公民:2024 年大家问"judge 怎么打分",2026 年问"judge 的分数凭什么可信"。元评估基准、GEPA 式自动校准、judge 版本化与鲁棒性测试正在成为平台标配(第 E5 章)。
  2. 评测重心从公开榜单转向私有资产:污染 + 饱和 + harness 效应 + 与生产脱节的四重信任危机下,"私有 golden set + 领域评测套件 + 在线信号"三层结构成为工业共识(第 E3、E13 章)。
  3. 轨迹级评估与信用分配崛起:从"给步骤打分"到"给打分器打分",过程信号同时服务评测、RL 训练与推理时搜索——Agent 评测的颗粒度必然继续下沉(第 E7 章)。
  4. 评测与训练闭环融合,Goodhart 治理成为显学:RLVR 让评测集直接变奖励,reward hacking / eval gaming 从实验室走进生产——评测设计必须自带防作弊假设(第 E9 方向的本章 + 主手册 2.14)。
  5. 仿真评测平台化、EDD 流程化:模拟器 + fixtures + CI 门禁 + 数据飞轮构成完整工程闭环;离线-线上一致性的量化证据开始出现,EDD 从方法论走向可审计的工程学科(第 E10 章)。

三、面试高频考点

# 考点 分级 一句话考察意图
1 LLM-as-Judge 四段演进(偏差→元评估→可训练 judge→优化与攻防) ⭐⭐⭐ 是否知道 judge 是"需要校准的测量仪器"而非免费午餐
2 JudgeBench 的核心发现:judge 间高一致 ≠ 正确(~57% vs ~78%) ⭐⭐⭐ 元评估意识的试金石
3 pass^k 的出处(τ-bench)与争议(是否过严) ⭐⭐⭐ 可靠性指标的理解深度
4 污染检测三范式:成员推断 / 格式变体 / 选项结构 ⭐⭐ 能否说出 Min-K% Prob 与 GSM-Symbolic 各自证明什么
5 LiveBench/LiveCodeBench 的动态化机制与代价(测量连续性) ⭐⭐ 动态基准不是免费的
6 PRM vs ORM 之争与 PRM 的三大局限 ⭐⭐⭐ 过程奖励是否值得做的判断力
7 Agent-as-a-Judge 为什么比纯 LLM judge 可信(拥有执行/核验工具) ⭐⭐⭐ 轨迹评估深水区的核心变量
8 Bradley-Terry + bootstrap CI 在 Arena 中的角色 ⭐⭐ 评测统计素养
9 reward hacking 谱系:谄媚→规格钻营→奖励篡改(Anthropic) ⭐⭐⭐ 评测-训练闭环的风险意识
10 GSM-Symbolic 的教训:表面变体让分数暴跌 65% ⭐⭐ "能力 vs 记忆"界限的实证感
11 离线-线上一致性的两派证据(Nubank vs OlaBench) ⭐⭐⭐ 能否辩证回答"离线评测有用吗"
12 EDDOps 的错位统计:93% 学术评测停在部署前 ⭐ 学界-工业界 gap 的谈资
13 提示注入成为 Agent 安全第一威胁模型(InjecAgent/AgentDojo) ⭐⭐ 安全评测对象从回复转向轨迹
14 OTel GenAI semconv 的现状(Development 状态、部分 agent 属性已入 registry、agentic span 约定推进中) ⭐ 可观测性标准的工程判断

四、经典面试题与参考答案

题 1(开放):过去一年 evals 领域最重要的三个进展是什么?

参考答案: 我给三个:① judge 校准从最佳实践变成系统工程——GEPA 式自动校准被 DoorDash/Nubank 等生产采用,元评估基准(JudgeBench 类)确立"高一致≠正确"的共识;② 离线-线上一致性首次有大规模量化证据——Nubank 报告离线仿真与线上 A/B 强相关(+37pp NPS),EDD 的可信度地基被浇筑;③ 评测与训练的 Goodhart 冲突进入生产——生产级 RL 中直接观测 reward hacking、agent 修改测试文件骗分的 eval gaming 案例,让"评测集即奖励"的风险从理论变现实。三者共同指向:evals 从"跑分"变成"测量科学 + 治理工程"。

题 2(进阶):有人说"公开 benchmark 已经没用了",你怎么看?

参考答案: 半对。没用的部分:污染(SWE-bench 题面大量进训练语料)、饱和(头部基准 60-75%+)、harness 效应(同一模型换执行框架分数差异巨大)、与生产脱节(HAL 发现基准间相关性低、与用户满意度弱相关)——所以单一公开榜单不能作为发布决策依据。仍有用:淘汰明显差的候选、跨团队沟通的共同语言、研究对照。工业共识是三层:公开基准做外部坐标 + 私有 golden set 做门禁 + 在线信号做地面真值。答出"折价使用 + 三层互补"比站队任何一方都强。

题 3(进阶):LLM judge 可信吗?你引用哪些证据?

参考答案: 可信是校准出来的,不是默认的。证据链:① 偏差实证——自我偏好(2404.13076)、风格压倒实质(2409.15268);② 元评估——JudgeBench 显示最强 judge 客观准确率 ~57% vs 人类 ~78%,judge 间高一致与正确性弱相关;③ 去偏复盘——单点策略收益有限,组合去偏才稳健(2604.23178),中端模型+组合去偏可胜过前沿 judge 且便宜约 15 倍;④ 攻防——对抗样本可让安全 judge 100% 放行有害输出(2503.04474)。工程结论:judge 必须过 gold set 校准(一致率 ≥85% 口径)、版本化、定期重校、高风险场景人工兜底——这正是第 E5 章的落地流程。

题 4(进阶):过程奖励模型(PRM)值得做吗?

参考答案: "有用但娇贵"。正方:PRM800K 证明逐步验证优于只看结果;Math-Shepherd/OmegaPRM 解决了标注成本;verifier-guided search 与 RL 信用分配都吃这套信号。反方(Qwen PRM Lessons):会被 best-of-N hacking、难度外推差、验证器分布漂移;不少团队发现"ORM + 更多采样"性价比更高;AgentRewardBench 还显示纯阅读式轨迹判别器误报率 >50%。决策框架:有明确步骤结构(数学/代码/合规流程)且愿意持续重训验证器 → 做;否则先把 outcome 评估 + 执行式验证做扎实。Agent 场景更推荐 Agent-as-a-Judge 式"带工具的评估器"。

题 5(系统设计):公司要你从零规划未来一年的评测能力建设,你如何排优先级?

参考答案: 按"仪器→考卷→流程→闭环"排:Q1 仪器——选 judge 维度、建 gold 校准集、校准到一致率 ≥85%、上线程序化检查层(先有可信测量);Q2 考卷——50-200 条 golden set 覆盖核心路径与高风险边界,建基线快照与 fixtures,跑通模拟器(E3/E8);Q3 流程——评测进 CI 门禁(P0 指标一票否决 + 回归集只增不减),版本对比带 CI 与显著性(E9/E10);Q4 闭环——线上抽样 + 同 rubric 在线评分、badcase RCA 与行动项、数据飞轮回流(E11/E12)。每季度用一个可量化里程碑验收(judge 一致率、门禁拦截次数、线上失败→回归用例转化率)。同时预留 10-15% 精力跟进本章五个趋势,避免技术路线老化。

题 6(进阶):离线评测到底能不能预测线上表现?

参考答案: 当前共识:必要不充分。正方证据:Nubank 报告离线仿真指标与线上 A/B 强相关并量化 +37pp NPS;DoorDash 的离线提升与线上一致;τ-bench 用可验证终态提高离线信号可信度。反方证据:OlaBench 指出现有基准过度强调可验证任务成功、低估主观质量与真实失败模式;EDDOps 统计 93% 学术评测停在部署前。让它能预测的条件:① 离线指标覆盖主观质量与失败模式(不只任务成功);② 离线-线上同 rubric 同 judge(DoorDash 原则);③ 模拟器与 fixtures 受控(E8);④ shadow/canary/小流量 A/B 补最后一公里。答"能/不能"都错,答条件才对。

题 7(基础):举例说明什么是"评测被训练钻空子"。

参考答案: 四个层级:① 风格层——AlpacaEval 的长度 gaming,长回答刷分(催生 LC-AlpacaEval);② 数据层——评测集进训练语料,GSM8k 改写变体仍泄漏(2311.04850);③ 奖励层——RLHF 中谄媚泛化为奖励篡改(2406.10162);④ 执行层——agent 直接修改测试文件骗分(2506.12286)。防御:私有 holdout 永不公开、动态轮换、终态执行式验证、过程检查、人工抽检旁挂 gold 指标。本质是 Goodhart:分数一旦成为目标就不再是好测量。

题 8(开放):如果让你预测 2027 年 evals 的形态?

参考答案: 五个方向(合理推演即可,展示判断力):① judge 平台化——校准、版本化、鲁棒性元评估成为托管服务;② 评测即优化目标常态化——GEPA 类优化器把 eval 分数当 loss 用,同时 eval gaming 防御成为标配;③ 统计报告规范强制化——没有 CI 和显著性的分数不被接受;④ agent 级可观测性标准落地——OTel agent span 规范成熟,trace 成为一等公民;⑤ 评测员职业化——"eval engineer"像当年的 SRE 一样成为独立岗位。收尾强调:预测细节可能错,但"测量科学 + 治理工程"的方向不会变。

五、易错点 · 反直觉点

  1. 误区:judge 之间一致率高 = judge 可靠。 真相:JudgeBench 证明 judge 间高一致与客观正确性弱相关,可能"集体犯错"。记忆锚点:一致性测的是"稳定",元评估测的才是"准"。
  2. 误区:去偏论文都说有效,所以 swap/CoT 校准一定有用。 真相:系统复盘(2604.23178)显示多数单点策略跨模型不稳定,只有组合去偏稳健——论文里"有效"存在发表偏差。
  3. 误区:公开基准分数涨了 = 模型变强了。 真相:可能是污染、格式捷径(GSM-Symbolic:改名字就掉 65%)或 harness 工程。记忆锚点:分数 = 能力 + 记忆 + 格式 + 环境。
  4. 误区:动态基准只有好处。 真相:换题让历史分数失效,排行榜变成快照而非连续量尺——动态化解决污染,引入测量连续性问题。
  5. 误区:PRM 全面优于 ORM。 真相:PRM800K 的结论后来被多次质疑(会被 best-of-N hacking、难度外推差);"ORM + 更多采样"常常性价比更高。
  6. 误区:LLM 读轨迹就能评轨迹。 真相:AgentRewardBench 显示纯阅读式判别器失败轨迹误报率常 >50%;关键变量是评估器有没有执行/核验工具(Agent-as-a-Judge 为什么强)。
  7. 误区:pass^k 低说明模型不行。 真相:也可能说明任务判定过严或环境抖动;要同时报 pass@1 与 pass^k 并固定温度再下结论。
  8. 误区:离线评测没用/离线评测够用。 真相:两个极端都错——"必要不充分",条件(覆盖主观质量、同 rubric 同 judge、shadow/canary 补位)决定预测力。
  9. 误区:评测集只是考卷。 真相:当评测集成为 RL 奖励(RLVR),它同时是答案来源——Goodhart 必然生效,污染会让收益变"背书"而非"推理"。
  10. 误区:安全评测就是测模型抗不抗越狱。 真相:还要测过度拒绝(可用性代价)和安全 judge 本身的可操纵性——裁判是攻击面。

六、推荐资源

本特辑调研报告(本章的一手素材,含全部论文条目与核实状态):

  • _research/01-llm-judge.md ~ _research/10-infra-observability.md(十份主题报告)
  • _research/00-industry-practice.md(Airbnb/DoorDash/阿里/腾讯四大工业实践精读)

按方向的入门论文(先读这 10 篇): Judge:JudgeBench(2410.12784)、GEPA(2507.19457)|Agent 基准:τ-bench(2406.12045)、SWE-bench(2310.06770)|轨迹:Agent-as-a-Judge(2410.10934)、PRM Lessons(2501.07301)|统计:Chatbot Arena(2403.04132)|Benchmark 动态:GSM-Symbolic(2410.05229)、LiveCodeBench(2403.07974)|闭环:Self-Rewarding LM(2401.10020)

相关章节:judge 落地(第 E5 章);轨迹评估(第 E7 章);统计学细节与公式(第 E9 章);Benchmark 选型策略(第 E13 章);EDD 流程(第 E10 章);工业案例(第 E15 章)。

相关实验:eval_lab05_judge_calibration.py(校准闭环)、eval_lab11_arena_bradley_terry.py(BT/Elo/风格控制)、eval_lab08_statistics_ci.py(置信区间与样本量)。

特辑到此完整:E00 导读 → E01-E15 十五章 → 11 个 labs → 10 份调研报告。回到 E00 的三条学习路线,按需取用。

第 15 章 / 共 15 章

工业实践案例研究

📌 本章导航(6 节)

一句话导读:评测体系不是设计出来的,而是被真实业务迭代出来的。本章逐段拆解 Airbnb、DoorDash、阿里、腾讯四家公司的一手评测工程实践——Airbnb 给出方法论与纪律,DoorDash 给出工程架构,阿里给出治理体系,腾讯给出带阈值的落地模板。学完你能得到:四家各自的关键机制与数字(面试深挖题的弹药)、一张"共识 vs 独创"横向对比表、以及一份综合四家实践的 30/90 天从零落地路线图。


一、知识图谱

工业实践案例研究(四家公司,四个层次)
│
├── Airbnb —— 方法论层:EDD(Eval-Driven Development)
│   ├── 无评测三坑:虚假信心 / 未发现的回归 / 指标与产品结果脱节
│   ├── 核心习惯 "When in doubt, look at your data"(跑 ~100 样本人工精读)
│   ├── 五原则:尽早定门槛 / 从错误推导指标 / 3–5 个 judge / 指定人类终判 / 产品持续参与
│   ├── Judge 校准五步法:旅行客服案例一致率 78% → 88%
│   └── 迭代纪律:一次只改一个变量(prompt → 模型 → serving 配置)
│
├── DoorDash —— 工程层:Eval Harness(Ask DoorDash)
│   ├── 五大挑战 → 五大设计要求(开放目标/执行不可见/无法安全彩排/规模化判断/双环境)
│   ├── 四大组件:Rubric(binary + eligibility + checklist 式)
│   │             Transcript Builder(证据切片,judge 只看该标准需要的一片)
│   │             Conversation Simulator + Fixtures(冻结外部状态)
│   │             LLM-as-a-Judge(GEPA 反射式校准)
│   ├── 评测镜像运行时架构:Orchestrator 评路由 / 护栏贯穿评 / 领域 Agent 评能力
│   ├── 反馈闭环:失败聚类 → coding agent 调查 → 沉淀为 Agent Skills → 迭代控制面
│   └── 实战案例:reasoning leakage(泄漏率 −11%)/ 底座模型迁移(延迟 −35%,质量无损)
│
├── 阿里 —— 治理层:评测平台体系
│   ├── 总命题:把「不稳定的智能行为」持续收敛成「可发布的工程质量」
│   ├── 指标:P0 门禁 / P1 版本比较 / P2 体验观察 + 一致性双指标 + 统计口径门禁
│   ├── 评分:规则主判 → Judge 辅助 → 人工兜底;分层筛查 + 人工评分路由
│   ├── RCA 五步:证据汇总 → 范围收敛 → 分模块诊断 → 责任判定 → 结构化落盘
│   └── 全链路闭环:结构化行动项 → 反馈生产线 → 质量资产库(九个能力模块)
│
├── 腾讯 —— 模板层:测评方案与阈值体系
│   ├── 三类评分器优先级:确定性 > Rubric > 人工
│   ├── 五大维度(P0/P1/P2)/ 用例四场景组织 / 负向用例必不可少
│   ├── 扣分制:初始 100 分,达标线 80 分;基线快照机制(执行 1 次→人工确认→快照)
│   ├── 稳定性:N=5 重复,容忍阈值分级(关键决策 0% / 辅助分析 ≤10% / 创意 ≤40%)
│   ├── 能力测评(起步 20–50%)vs 回归测评(接近 100%,只增不减),用例"毕业"机制
│   └── TPerf 实战:LCS 轨迹对齐 + 归一化,9 大场景 30+ 用例 × 7 模型对比
│
├── 横向对比:四家共识(三大难题 / 三层评分 / ~85% 校准线 / golden set 规模 /
│            过程评估 / 闭环)vs 各自独创贡献
│
└── 从零落地路线图:30 天(可用最小集)/ 90 天(体系闭环)

四家定位一句话表(素材来源均为 _research/00-industry-practice.md 收录的四篇一手工程博客):

公司 原文 评测体系角色 一句话总结
Airbnb 《Eval-driven development: Lessons from evaluating GenAI at scale》 方法论与纪律 评测是跨职能产品活动,纪律比工具重要
DoorDash 《Building Ask DoorDash (Part 3): Evaluation》(2026-06-30) 工程 harness harness 不是记分板,是迭代的控制面
阿里 《Agent 评测:方法论与体系设计》(阿里技术,2026 年第 28 篇) 治理平台 评测终点不是报告,而是稳定产出可执行行动项
腾讯 《AI Agent & Skill 测评方案及落地实践》(TEG 云架构平台部网关测试团队) 落地模板 用数据代替直觉,用全量代替抽查,每个环节给阈值

阅读策略:2.1–2.4 逐家深挖(每家按"背景→机制→数字→案例"展开),2.5 做横向对比,2.6 给落地路线图。面试中被追问任何一家时,先报数字,再讲机制,最后落到"它解决了什么别家没解决的问题"。


二、核心概念精讲

2.1 Airbnb:EDD 方法论与迭代纪律

背景与三大坑。 Airbnb 的 GenAI 应用包括点评摘要、客服、房东/房客消息、内部洞察;产品团队自定评测标准,基础设施组提供共享工具与跨团队指南——注意这是实践(practice)而非强制令(mandate),这一组织形态本身就是考点。Airbnb 总结,项目早期没有评测计划会掉进三个坑:

坑 表现 后果
虚假信心 用一个浅层 helpfulness 分看着挺高 上线后真实场景翻车,分数没预测任何东西
未被发现的回归 改 prompt 后质量悄悄变差 没有回归集,没人知道旧场景坏了
浪费精力 指标与产品结果脱节 团队优化了半天,产品体验纹丝不动

核心习惯:"When in doubt, look at your data." 具体动作是100 样本人工精读法:跑约 100 个样本(真实或合成),人工读输出和 trace,找错误、归类,再围绕这些错误建测试。这是全特辑最便宜也最高杠杆的动作——不需要任何基础设施,只需要一个下午和一双眼睛(详见第 E10 章 · 评测驱动开发(EDD))。

EDD 五原则(面试必答):

  1. 尽早设定目标与上线门槛(launch gates),即便它们是在数据评审中才逐渐清晰的;
  2. 从观察到的错误中推导指标,与跨职能伙伴共同制定(不是拍脑袋定 helpfulness);
  3. 用少而精的 judge:3–5 个经校准的评估器好过一堆嘈杂的评估器;
  4. 指定一个最终人类决策者,裁决"好 vs 坏"的争议;
  5. 让产品伙伴持续参与对比与错误诊断。

三层评估框架(Airbnb 版三层评分):

层 内容 关键点
程序化检查(确定性,最先跑) 格式/schema 校验、空/异常长度、关键词正则、P/R/F1、语义相似度 前两项"永远有用";结构化输出要用 JSON schema 强类型化,不要只靠 prompt 措辞产出结构,否则下游管道会坏
LLM-as-a-Judge 强模型按 rubric 评另一模型输出(语气/连贯/有据性/相关性) 五条规则:每个质量维度一个 judge;judge 模型尽量与生成模型不同源;带 few-shot;强制输出 schema;清晰打分说明
人工评估 建 ground truth、安全高风险决策、细微差别与创意、裁决自动评估器冲突 从 20–100 个专家标注样本起步;rubric 稳定且需要规模时才扩大标注队伍;专家有分歧就先停下解决分歧再谈自动化

一句被反复引用的话:"如果人都无法一致地应用 rubric,模型也不可能。"

Judge 校准五步法(全特辑通用流程,第 E5 章展开):① 建 50–100 条 gold set(必须含坏样本);② 用 judge 跑该集合;③ 目标一致率 high 80s ~ 90s%,分歧可用 Cohen's kappa / Krippendorff's alpha 度量;④ 检查分歧 → 改 rubric/示例 → 重复;⑤ 失败模式变化时重新校准。核心警告:未校准的 judge 会制造误导性信心。

完整案例演练:旅行平台客服政策问答助手(面试复述率极高的一段):

阶段 动作 数字与发现
探索 跑 100 个 prompt 人工读输出 发现 15 个 groundedness 失败、8 个正确但啰嗦、5 个不当拒答、3 个 JSON 失败
建测试 JSON 与长度检查;groundedness / conciseness 各一个 judge;PM/SME 标注 gold 60 条 gold(含失败样本)
校准 judge 跑 gold 集 初始一致率 78%(过低)——根因是 judge 误罚了正确的改述;修 rubric 与示例后达 88%;检索改进减少 groundedness 失败
规模化与监控 扩容 + 上线后持续运行 扩到 5,000 样本;每日抽样 5% 去标识化生产流量;跑检查与 judge;标记样本送人工;每周 PM 评审,新增测试与修复

迭代纪律:一次只改一个变量。 顺序是:先固定模型变 prompt → 再固定 prompt 变模型 → 再都固定变 serving 配置。Judge 筛候选,顶尖候选反哺 judge 改进,直到双方稳定。这条纪律回答了一个高频追问:"你们同时改了 prompt 和模型,怎么知道是谁的功劳?"——答案是:不允许同时改。

Agentic 评估三层(详见第 E7 章 · 轨迹与 Agent 级评估):只看最终答案不够——推理路径、工具参数、工作流可能在结果看似正确时已经失败。Airbnb 分 step-level(单工具调用/推理步)/ trajectory-level(整体路径是否合理高效)/ session-level(整个交互是否达成用户目标);agent 通常在 root 下发 trace 和 span,可通过树遍历重建 trace,校验 subagent 调用与工具使用。

隐私注记:生产抽样用隐私保护方法——人工评审前去标识化、用途限定于安全与质量。

Airbnb 十条要点(原文收束,面试可直接引用):① 建复杂工具前先人工看输出与 trace;② 避免泛化 helpfulness,瞄准真实产品失败;③ 从小标注集起步快速迭代;④ 不要万能 judge,按维度拆分;⑤ judge 校准到高一致率后再信任;⑥ 代码检查 + 模型 judge + 人工评审结合;⑦ gold set 必须含坏样本;⑧ 评整个系统(检索/工具/agent 路径);⑨ 上线前测试要在线上持续运行;⑩ 评测是跨职能产品活动。

动手:labs/eval_lab05_judge_calibration.py 用纯标准库复现了"78% → 88%"这个校准循环(v1 judge 误罚正确改述 → 分析分歧 → 修 rubric → v2 达标)。运行:cd evals-special/labs && python3 eval_lab05_judge_calibration.py;EDD 全闭环(门禁/回归/一次一变量)见 labs/eval_lab10_edd_loop.py。

2.2 DoorDash:Eval Harness 的工程架构

DoorDash 的 Ask DoorDash 是四家案例中工程细节最完整的一篇。先看成果数字(全部为原文数字):

指标 数字
质量信号规模 从平均 1 条/天的员工反馈 → 2,000 个/天自动评分会话
上线前质量 全国上线前 agent 质量分 +8 分,错误率近乎减半,达到生产发布标准
回归效率 全量回归:手工 6+ 小时 → 自动约 20 分钟
模型迁移 支撑底座模型迁移(Claude Sonnet 4.6 → Gemini 3.5 Flash):延迟降 35%、质量无损

五大挑战 → 五大设计要求(原文表格,系统设计题的标准答题骨架):

挑战 设计要求
开放式目标(一个用户目标有多种可接受结果) 每个目标表达成 rubric:具体到每次能同样判,宽泛到容纳所有合法路径
执行不可见(judge 需要看到对话之下的工具调用;不同标准需要执行记录的不同部分) trace 会话并重建为"按标准定制的视图",judge 只看该标准需要的证据,隔绝无关 trace 噪声
无法安全彩排(不能拿真用户试变更,历史会话不能对改过的 agent 重放) 按需生成会话:模拟用户驱动 agent 跑场景,外围数据固定(fixtures),同场景每次一致
规模化判断(是否帮到用户需要人类级判断,但人工不可扩展) 校准过的 LLM judge 顶替人类评审
双环境(开发与生产质量可能背离) 真实会话与模拟会话用同一 rubric + 同一 judge:离线结论带到线上,线上失败离线复现

评测镜像运行时架构。 Ask DoorDash 是多智能体架构:用户消息 → Orchestrator → 路由到领域 Agent(如 Restaurant Discovery Agent);领域 Agent 直接处理或交还 Orchestrator。评测与之同形:路由在 Orchestrator 评;护栏贯穿全流程评;任务能力在每个领域 Agent 评。这是"评什么"与"架构长什么样"一一对应的范本。

组件一:Rubric 体系。 每条标准是一个 binary check,汇总为会话级总分。三类评测实例:

  • Guardrail(全体 agent 适用):如"沟通质量:回复简洁、不向用户叙述思维过程";"信任与诚实:不呈现可证伪虚假信息";
  • Capability · 餐厅发现:"约束满足:推荐满足配送时间/预算/饮食限制";"结果多样性:真实差异而非近似重复";
  • Capability · 杂货购物:"购物执行:用户的明确修改请求被执行";"商品相关性"。

两个独创设计:① Eligibility 适用性前置——judge 先判该标准是否适用本会话,不适用则跳过(例如食谱流程不因缺少复购步骤被扣分);② 离线 checklist 式 rubric——场景级清单,例:"两人份 ≤$60 素食 taco 购物清单",验证每件商品都是素食 taco 原料、小计 ≤$60。这类标准比宽泛通用标准方差更低,小样本更有用,支撑更快迭代。每条标准都写成"从会话本身可验证"——同一 rubric 既供人工校准又供 judge 规模化。

组件二:Transcript Builder(证据切片)。 基础设施:每会话用 OpenTelemetry 打点,trace 存内部 ClickHouse;span 记录用户输入、模型输出、工具调用与返回、展示给用户的 widgets。问题是原始 trace 完整但难判:工具返回可能巨大、schema 脚手架与无信号字段多、证据散落多个 span/turn。Transcript Builder 是一组 Python 脚本:重组分散 span、删无质量信号 token、裁超大载荷,产出紧凑视图。最关键的设计:每条标准声明自己依赖的证据,builder 只给 judge 那一片——grounding 检查拿 agent 论断 + 背后工具输出;多样性检查拿推荐 + 原始请求;叙述检查拿 agent 工作时流式输出的文本。聚焦证据让判断更一致。

组件三:Conversation Simulator + Fixtures。 LLM 扮演购物者;scenario 定义开场请求、用户目标、对提问/结果的反应方式(详见第 E8 章 · 对话 Agent 与仿真评测)。依赖外部状态时用 fixtures:录制工具返回替代实时调用。原文实例:复购场景开场 "Reorder my usuals",get_reorder_items 固定返回录制的 reorder_history_v1(Albertsons 订单:Meadow Gold 全脂牛奶 ×2、Oroweat 全麦面包、牛油果、Ben & Jerry's 冰淇淋……)。每次运行看到相同订单 → 预期结果可预测,judge 可对照同一商品集评分。成本账:全量 sweep = 50 场景 × 8 trials = 400 次对话;人工本地聊约 1 分钟/次 → 6+ 小时;模拟器约 20 分钟。

组件四:LLM-as-a-Judge(GEPA 校准)。 定位是"带紧反馈环的测量问题"——样本够多(每天估计生产质量)+ 出分够快(不成为发布瓶颈)。人工用在杠杆最大处:定 rubric、标注校准集、审计 judge 行为;打分主力是 judge。原文立场鲜明:"LLM Judge only useful if it agrees with human reviewers." 校准方法用 GEPA(反射式 prompt 优化)打磨 judge 判定边界:迭代提出 judge prompt 修订,只保留在留出集上提升与人工标注一致率的版本。校准持续进行:rubric 演进(新增能力)时收新标注、重新校准。judge 逐条标准独立评分:输入 = 标准 + 该标准依赖的证据;输出 = verdict + 简短 rationale。

平台化:Eval Service。 trace 存储、实时评测执行、UI 化 judge 开发、标注工作流。组织路径值得抄:起步用嵌入式平台团队与 harness 并行共建,再沉淀为共享评测服务(paved path)供其他团队采用。

反馈闭环(四步):① 失败聚类成主题——逐条看失败会"轶事驱动"(最近/最惊奇的失败主导修复),而 rubric 标准天然是问题簇:grounding 失败 / 缺替代品 / 糟糕叙述分开调查,失败列表变成按影响排序的主题列表;② 从发现到解决——从失败簇出发,coding agent 检查失败 trace、相关代码路径、近期变更、历史调查;修复明确时直接起草 PR,prompt/上下文学习改动则产出诊断 + 建议供人审;③ Agent Skills 化——把 eval-driven 工作流(聚类失败、调查失败模式)打包成 Agent Skills,可重复、可复用、可改进;skill 分错簇或写弱修复 → 更新 skill 而非打补丁一次性运行;④ 总结论——harness 不只是记分板,是迭代的控制面(control plane for iteration):生产监控 + 失败聚类 + agent 辅助调查 + 发布前验证连成一环。

实战案例 1:Reasoning leakage。 日常线上评分发现泄漏激增:任务完成但叙述中冒出系统语言("reorder skill"、工具名、"fetch"、"in parallel")——"像编码 agent 而非购物助手"。诊断指向 prompt 设计:合并沟通规则,分离内部 skill 指令与面向用户语言。离线用生产中最易触发的场景验证:泄漏率降 11%;hero 场景全量扫描无回归;上线后监控确认阶跃改善。

实战案例 2:底座模型迁移(兼容性差距 ≠ 能力差距)。 agent 跑在 Claude Sonnet 4.6;5 月中 Gemini 3.5 Flash 发布,benchmark 显示可降延迟。离线 harness 一跑:分数大跌。但 eval 给出具体失败模式,AI coding agent 做假设与实验后得出结论:不是能力差距,是兼容性差距——Flash 部分工具参数格式不同(工具签名要 plain string,Flash 传 {"dishes": [...]} JSON 对象);系统 prompt 围绕 Sonnet 惯例隐式调优。原文金句:"低分反映的是为 Sonnet 适配的系统,不是更弱的模型。"修复小而准:工具输入确定性防护(错误形状强制转换回预期形状而非丢弃调用);prompt 显式写出 Sonnet 原本自行推断的内容(用数据中精确店名、不超出工具结果渲染)。"不是改模型,是修正模型周围的环境。"重跑 eval:Flash 与 Sonnet 质量持平(harness 噪声范围内)→ 迁移生产 → 延迟降 35%、质量无损。

DoorDash 四条 Lessons Learned:① Judge 需要"为问题塑形"的 transcript 视图——删无关、只留标准依赖的证据;② 环境必须受控,否则分数测量的是噪声——fixtures 冻结上游世界;③ 离线结果只有能带到线上才有意义——同一 rubric + 同一校准 judge 两边跑,各自调 judge 分数会难调和地背离;④ 评测系统自己也产生 bug 报告——被标记失败中有真实一部分是 harness 自身故障(judge 误报、trace 缺口),并行修复才可信。

动手:labs/eval_lab07_simulator_fixtures.py 复现 fixtures 对照组实验(漂移组方差显著大于 fixture 组,验证"环境不受控时分数测量的是噪声")。运行:cd evals-special/labs && python3 eval_lab07_simulator_fixtures.py

2.3 阿里:评测平台的治理体系

阿里技术《Agent 评测:方法论与体系设计》共十章,是四家中治理视角最完整的一篇。总命题:Agent 评测是把「不稳定的智能行为」持续收敛成「可发布的工程质量」,不是上线前抽查。 三大门槛:非确定性(同输入不一定同输出)、黑盒化(内部决策不透明)、错误级联放大(前步小错后续放大)。

为什么"跑几条 case 感觉还行"不够(四个失效场景,第 E1 章展开):同一 prompt 跑通一次 ≠ 稳定可用;每次改模型/prompt/工具参数都可能改坏原有场景且不易第一时间发现;多步链路前一个小偏差会被放大成错误结论;更隐蔽的是假阳性——有些样本最终答案看似对,但执行路径已偏离或带风险,在生产迟早暴露。结论:评测体系必须嵌入研发流程;评测平台不只是"出分工具",核心价值是把问题稳定转化为可执行修复、形成持续迭代闭环。

指标体系(P0/P1/P2 分层):五大类指标按用途分层——P0 上线门禁(不达标不发)、P1 版本比较与工程优化、P2 体验改善与长期观察(详见第 E2 章 · 评估指标体系)。两个关键口径:

  • 一致性双指标:任务重复运行 N 次——至少一次成功率(能力上限)vs 连续成功率(每次都要成功,客服/支付/退款/合规等生产级场景看这个)。用户不会接受"多试几次总有一次成功"。
  • 统计口径门禁:版本对比要配套统计检验——关键指标置信区间 + 与基线的显著性判断 + 最小可感知变化阈值(提前定义提升多少才值得发布)。"门禁不只看差了多少,还要看差异是否超过统计噪声。"

评测数据集:评测集不是线上随机抽样——线上样本有幸存者偏差:正常流程占多数,易错边缘场景占比低,随机采样报告"看起来不错"但关键问题漏掉。Golden Set 默认作为基线评测集(相对稳定、长期复用的核心样本),用于版本对比与发布门禁。四类来源:专家设计用例(定标准)、扩展用例(先用规则确定场景类型/订单状态/用户诉求/期望动作等结构字段,再用 LLM 生成接近真实用户的自然语言表达)、线上真实数据、badcase 回流(如"Agent 直接承诺一定退款成功")。规模路径:先做 50–200 条高质量 golden set 覆盖核心业务路径与高风险边界,成熟后扩展分类采样集、长尾集、对抗集、线上回流集。

评分原则:规则主判,Judge 辅助,人工兜底。 规则看"硬条件"(工具、状态、字段、禁用动作),LLM 看"语义/策略合理性";能写成代码的由规则主判;高风险/抽检/低置信/变更观察期追加 LLM Judge;能自动稳定判断的不长期依赖人工。阿里口径的 judge 工程要点:每分档有可执行标准;输出 reason(定位 + badcase 聚类);few-shot 含边界样本与判定 CoT;周期性校准,与人工复核一致率约 85%(参考值)后进日常自动化;偏差治理——judge 与生成模型同源会偏爱自己风格 → 多 LLM 对抗打分。

人工评分路由(阿里独创,详见第 E6 章):不由分数阈值单独决定——自动评分不确定(边界分/低置信/reason 含糊/多 judge 分歧)进人工;新模型/新 Prompt/新工具 Schema/新活动上线抽样进人工;规则与 Judge 冲突进人工终判并回收口径。分层筛查:粗筛层(规则 Scorer + 轻量 Judge,快速分明显通过/明显失败/存疑)→ 精判层(完整规则 + Judge,确认 badcase 并产出初始问题分类/现象/置信度/判定依据)→ 人工复核层(高风险/低置信/冲突/口径未固化)。评分输出不止 pass/fail:还要问题分类(现象层:事实性错误/答非所问/过度承诺)、问题现象、置信度、判定依据——为 RCA 提供"现象入口",且现象分类 ≠ 最终根因。

Judge 持续运营:维护 Judge 金标校准集;每次 Judge prompt/模型升级固定产出三类统计——与人工标注一致性(一致率或多模型对抗 Kappa)、高风险样本漏判率(合规/资损/隐私)、边界样本稳定性(重复评测波动)。

Badcase RCA 五步(本章重点,详见第 E11 章 · Badcase 根因分析与优化闭环)。入口两条通路:离线评测集 + 线上(会话/人工质检/投诉工单/低满意度/版本回归失败/监控告警)→ 汇入同一 badcase 任务表与同一 RCA Pipeline:

步骤 动作 关键机制
① 证据汇总 按 sessionId/chatId/traceId/评测运行 ID 找链路日志 汇总用户输入、Agent 回复、模块 IO、prompt、工具调用、异常、耗时、中间产物;状态以持久化任务记录为准
② 范围收敛 维护"问题现象 × 功能模块"映射 答非所问 → 优先看意图识别/Query 改写/知识筛选;过度承诺 → 优先看风险拦截/回复生成;命中走确定性路径,未命中 LLM 兜底缩圈;映射表只缩小候选,不直接定责
③ 分模块诊断 候选模块逐个读 input/output/prompt/工具返回/异常日志 输出 PASS/SOFT_PASS/FAIL + 问题摘要、关键证据、改进建议。实例:现象"事实性错误" → 先看 FAQ 检索是否召回正确政策 → 知识检索是否保留关键片段 → 回复生成是否忠实使用证据;前两段通过而回复仍错 → 回复生成 FAIL
④ 责任判定 消费"现象 + 分模块诊断 + 根因知识库" 三层策略:严重模块结论直接定责 → 规则引擎匹配确定性模式 → LLM 汇总复杂链路责任传递;输出责任模块/问题大类(语义理解/知识召回/工具执行/风险防控)/问题枚举/修复建议
⑤ 结构化落盘 写入任务记录 问题分类/现象/枚举/责任层/责任模块/置信度/详细报告/修复建议,看板渐进展示

工程实现:单次 badcase 分析建模为异步 Multi-Agent Workflow,同样遵循"确定性优先、模型辅助、人审兜底":规则定位硬错误(工具未调用/顺序违反 SOP/参数缺失/报错未重试/DB 状态未变/引用来源不存在)→ Trace Scorer 定位过程偏差 → 映射表缩圈 → LLM 辅助语义归类聚类 → 高风险/低置信/冲突进人工复核,人工结论反校准规则/Judge Prompt/根因标签。

根因标签体系:标签要稳定、可统计、指向 owner 与处理动作,可绑定解决角色:运营可配置/算法需优化/工程需修复/业务需定口径。实例:"已发货退款未查订单状态" → 归"工具覆盖与执行"、枚举"关键工具未调用"、责任模块 = 退款 Skill/退款流程执行模块。支持聚类:同根因/同场景/同工具/同知识点的失败自动聚成问题簇——报告不只列 100 条 badcase,而是产出"退款已发货场景中,Agent 23 次跳过订单状态校验,主要集中在 v1.8 Prompt"。

自动优化建议(第 8 章):建议项不能停留在"优化 Prompt/加强训练/提升准确率"——要明确失败范围、证据、具体动作、owner、验收方式、优先级;产出结构化行动项,能被工单系统/看板/配置平台/研发流水线直接消费("建议是质量工程里的标准任务对象")。每个建议可展开证据链。

全链路闭环(第 9 章):完整评测平台含九个能力模块;终点不是报告,而是把线上失败持续转化为可复用研发资产。发布阶段离线门禁与线上灰度联动,跟踪三类信号:

信号类 指标
离线质量信号 核心场景通过率、P0 风险数、关键工具参数正确率
线上体验信号 转人工率、重复追问率、投诉率、满意度变化
业务结果信号 任务完成率、工单闭环率、退款/赔付成功率

红线:离线提升但线上关键信号恶化 → 触发回滚或降级! 另外两条工程约束:Trace 输出是被测 Agent 的标准能力而非事后补救(稳定记录工具名、入参、返回值、时间戳、耗时、错误;复杂 Agent 还记录计划、检索、Guardrail);评测执行环境隔离,避免多用例共享状态导致分数不可复现。

反馈生产与质量资产库:一条 Badcase 至少生产 3 类反馈,平台分三条生产线(评测集/训练数据/知识修订,详见第 E12 章)。入库标准五条:失败可复现(或至少有稳定 Trace + 人工确认)、期望行为明确、根因标签清楚、样本有代表性(覆盖一类问题而非一次性环境抖动)、已脱敏合规。样本治理:同簇保留代表例;P0/P1 风险长期保留;稳定多版本通过且低风险者降级为抽样集;新分布出现时主动学习优先抽取低置信/高影响/新意图/新工具/新知识点样本进人工确认。最终沉淀质量资产库:用例库、Trace 库、根因标签库、修复建议库、Judge 校准集、回归集。"质量资产越厚,Agent 迭代越不靠个人经验和临时救火。"

第 10 章收束:评测体系的成败取决于它能否在跨团队协作中长期、稳定地产生可执行行动项;低分必须稳定转成行动项,否则再精细的分数也只是报表。

动手:labs/eval_lab09_rca_pipeline.py 实现了 RCA 五步全流程(含"已发货退款未查订单状态"案例与问题簇聚类)。运行:cd evals-special/labs && python3 eval_lab09_rca_pipeline.py

2.4 腾讯:测评模板与阈值体系

腾讯技术工程这篇是四家中最像"可直接抄的模板" 的一篇。总公式:

Eval = Agent 输入 → 执行 → 捕获执行过程(Trace + 产物) → 一组检查规则 → 可对比的分数

目标:可重复、可量化、可持续演进的评估闭环;每次变更都能快速跑出可比较的分数;用数据代替直觉,用全量代替抽查。

痛点表(立项依据模板):主观性强(靠"感觉变好了");悄悄退化(改 prompt/升级依赖旧场景变差无人知晓);人工验证成本高(Skill 越多模型越快,人肉回归指数增长,只能选择性验证留盲区);模型不敢升级(无对比数据支撑切换决策);缺少效率基线(变贵变慢无法归因版本);过程易忽略(答案碰巧对但推理路径错,分不清"正确调用工具后回答"与"训练数据碰巧答对")。

三类评分器(选择优先级:确定性 > Rubric > 人工):

维度 确定性评分器 Rubric 评分器 人工评分器
谁来评 脚本(Bash/Python/断言/Lint/AST) 大模型(固定版本) 领域专家
规则写在哪 代码里 Prompt + JSON Schema 人脑 + 标注指南
成本 毫秒级/免费 秒级/API 费用 分钟-小时级/人力
稳定性 100% 有抖动(需降噪) 取决于标注员水平
覆盖 已知硬指标 未知软指标 主观 + 边缘场景
典型用例 文件存在、构建/测试通过 代码风格、意图贴合、解释清晰度 校准 LLM、诊断 0%/100% 异常、红队
门禁角色 硬门禁 分级门禁(error 硬/warning 软) 不进门禁,做采样审查

确定性评分器类型:工具调用检查(是否调用指定工具、参数是否正确)、产物检查(文件存在、内容符合预期)、关键词匹配、执行指标(调用次数/token 阈值)、基线对比(与基线快照逐项对比)。Rubric 规则示例:observation_points(回答是否基于项目规范而非通用知识/推理是否清晰连贯/有无幻觉编造);scoring:process_score 0-100、result_score 0-100、is_false_positive bool(结果对但过程错的虚假成功)。

人工评分六个必要场景:① 校准 LLM 评委(最核心;抽样 100–200 条对齐,一致率 ≥85% 才可用)② 主观任务打分 ③ 诊断通过率异常(0% 或 100% 通常是任务/评分器坏了,不是模型弱)④ 建 Ground Truth(新套件前 20–50 个参考解)⑤ Trace 采样审查(每周固定抽样读轨迹找隐藏失败模式)⑥ 高风险兜底(医疗/金融/安全 100% 人工复核)。经验法则:能自动化的坚决不找专家;专家时间 60%+ 花在"校准 LLM 评委"与"诊断异常"。

五大评测维度(详见第 E2 章):

维度 级别 评分方式 要点
功能正确性 P0 代码判 pass@1/pass^k、任务完成度、指令遵循(JSON Schema/正则)、工具调用正确性;必须自动化全覆盖
过程质量 P1 Rubric + 人工 推理合理性、步骤最优性(实际步数 vs 参考解法)、信息完整性、上下文利用率、自我纠错;最能体现"智能",自动化最难
效率与成本 P1 代码判 Token avg/p95、工具调用次数、延迟 p50/p95/p99、失败重试率、¥/task;"pass@1 高但 token 花 10 倍的方案生产上不可接受"
鲁棒性与安全 P0 代码 + 人工 一致性(pass^k,k=5/10)、异常恢复(故障注入)、抗注入红队、幻觉率、越权断言、合规、误拒%/漏拒%;金融/医疗/企业数据 Agent 必须前置
体验与对齐 P2 Rubric + 人工 语气、清晰度、主动澄清、同理心、可解释性、CSAT/NPS;P2 但决定产品生死

术语口径:pass^k = k 次每次都通过(稳定性);pass@k = k 次至少 1 次通过(峰值能力)。落地顺序:P0 先落地,P2 按需补。不同 Agent 类型侧重不同(知识库问答 → 准确性/幻觉/溯源;代码编写 → 产物可运行性;功能工具 → 过程合规性;问题定位 → 过程 + 结果双重验证),差异在"用什么评分器、检查什么",流程不变。

用例集设计四场景(详见第 E3 章 · 黄金数据集与用例设计):① 触发(该触发吗?正向:各种合法表述都触发;负向:相似但不相关 prompt 不误触发)→ ② 核心逻辑(过程对吗?工具调用序列/参数/顺序)→ ③ 产物质量(产物好吗?准确/完整/格式)→ ④ 异常容错(出错扛得住?优雅降级 vs 崩溃/死循环/静默失败/泄露)。负向触发用例为什么必不可少:"只测正例,Agent 可能学会什么都触发——过度触发比不触发更难发现。"经验法则:核心逻辑用例量通常是其他三类之和的 2–3 倍;N 条分支至少 N 个正向 + 关键分支负向。

评分规则(扣分制):初始 100 分负分制,每处不符扣对应分至 0;达标线 80 分(推荐值,按 Agent 类型与业务风险调整)。扣分维度:任务结果不符预期 −100;步骤遵循性每步 −10;步骤输出结果每步 −10;工具/知识库调用每项 −10;分析耗时基准 5 分钟每超 1 分钟 −10;一致性 N 次(建议 N=5)全达标取均值。每次评分输出 JSON 扣分明细 + 原因,渲染 HTML 报告归档。

用例基线机制(腾讯独创):基线 = 单用例执行 1 次后经人工确认的预期过程与预期结果快照("正确的执行应该长什么样")。预期过程含 CoT、工具调用序列(入参返回)、中间产物、完整 Trace;预期结果含最终响应、输出文件、输出报告。流程:用例设计只定义 prompt 与检查规则 → 执行 1 次 → 人工审核过程与结果 → 不可接受则修后重跑 → OK 则该次快照成为基线。后续每次执行与基线对比:过程对比(关键步骤缺失/顺序偏离 → 过程退化)、结果对比(关键内容缺失/产物不一致 → 结果退化)、效率对比(token/步骤数超基线比例,如 >50% → 效率退化)。基线更新时机:Agent/Skill 逻辑变更、模型版本升级、用例本身修改 → 重新执行 1 次并人工确认。

稳定性评估与容忍阈值分级:N 次执行,只要 1 次不通过即存在稳定性风险。容忍阈值按使用类型分级:

使用类型 例子 失败容忍阈值
关键决策类 问题定位/故障诊断 0%(N/N 全过,任何一次失败都可能误判)
辅助分析类 性能分析/报告生成 ≤10%
创意生成类 代码建议/文案 ≤40%

N=5 的解读:全过 = 稳定;1/5 失败 = 存在幻觉,按类型判断;2/5 = 高幻觉率深入排查;5/5 失败 = 稳定失败,先查任务定义或基线。调试技巧:0% pass^N 通常说明任务定义有问题,不是能力不行。

能力测评 vs 回归测评:能力测评回答"Agent 能把什么做好"(起步通过率 20–50%,目标山峰,主动拓展频繁迭代);回归测评回答"原有能力是否还在"(接近 100%,防御漂移,只增不减,CI 每次运行)。通过率稳定 100% 后用例"毕业"进回归集。引用 Anthropic 推荐:确定性任务用例集整体通过率需 100%,非确定性任务 ≥95%。Bad case 处理流:复现记录完整轨迹 → 分析根因定预期行为 → 修复 → 纳入用例集防回归 → 进能力集,稳定后毕业到回归集。

工程落地细节:Trace 前置三要求——结构化(JSONL/JSON)、内容完整(每步工具名/入参/返回/时间戳,理想含思维链与决策依据)、格式跨版本稳定;不支持时优先推动被测系统增加 Trace 输出,"设计阶段就把结构化 Trace 作为标准能力,而非事后补救"。环境隔离:clone 仓库到临时目录;每用例前重置(git checkout . && git clean -fd);产物统一归档。触发时机:提示词变更(CI 自动,PR 合入前回归)、模型版本升级(手动验证兼容性)、定期巡检(定时全量回归)。

TPerf 实战案例(把上面所有模板跑了一遍的真实项目):TPerf AI 分析 Agent 属功能工具类型,部署在 Knot 智能体平台,MCP 调用 TPerf-API 取性能数据 + 知识库检索,决策树判断资源瓶颈与压测有效性,输出结构化性能分析报告。测评侧重:操作步骤合规性 + 执行效率 + 输出报告质量。

评分维度 机制 扣分
操作步骤(确定性) LCS 最长公共子序列对齐基线与 Trial 步骤,归一化:时间戳占位/搜索工具忽略查询参数/写入只留路径/终端命令提取脚本名/连续读文件组内不校验顺序 不一致/多余/缺少/顺序错各 −2,上限 −10
效率(确定性) 耗时基准 300s 每超 10% 扣 1;token 以基线为基准每超 10% 扣 1 各上限 −10
关键判定(模型评分) 压测有效性/性能结果与基线不一致 直接 −80
章节内容(模型评分) CPU/内存/网络/磁盘 IO/业务指标/根因定位/优化建议/完整性/准确性,调用 CodeBuddy CLI 逐项对比 每项 −5,上限 −80

一致性标准三档:数值型(整数精确/小数相对误差 ≤1%)、结论型(异常等级与关键发现一致)、建议型(核心排查方向一致即可)。稳定性 0 容忍说明:TPerf 虽属辅助分析类,但结论直接影响优化决策与发布判断,一次错误结论可能导致性能问题漏检上线 → 采用关键决策类标准(任一 Trial 不达标该用例 0 分)。计分公式:trial_score = max(0, 100 + 各项扣分);trial_pass = score ≥ 80;case_score = 全 pass 取均值,任一不达标为 0。

用例集与执行数字:9 大场景分组 30+ 用例(CPU 瓶颈 6/网卡 5/磁盘 4/磁盘 IO 2/内存 1/TCP 队列 3/Nginx 1/配置问题 1/正常场景 5),每个用例对应真实 TPerf 压测记录(不可变、可复现);支持 7 模型对比(每用例 × 每模型参数化测试)。用例不硬编码预期输出,通过基线会话标识(session_id + message_id)指向人工确认正确的分析记录,评测时从 Knot API 动态获取。执行:Trial 并发 + 评分并行 + 三评分器并行;限流自动重试(≤5 次);单用例约 3000s;全量 30+ × 7 模型约 3–5 小时;pytest 实现,TCase 平台管理用例。关键设计:基线配置随代码仓库 Git 版本化;执行结果每次重新生成并归档;支持重新评分(评分逻辑调整后无需重新触发 Agent)。

动手:labs/eval_lab01_metric_system.py 复现 pass@k/pass^k 与"容忍阈值分级"判定;labs/eval_lab06_trajectory_eval.py 复现 LCS 轨迹对齐扣分与假阳性捕获。运行:cd evals-special/labs && python3 eval_lab01_metric_system.py / python3 eval_lab06_trajectory_eval.py

2.5 四家横向对比:共识与独创贡献

把四家放在一起看,会发现独立演化的实践收敛到了几乎相同的骨架——这正是"评测体系的客观规律"的證據,也是面试中最高密度的得分点。

共识表(素材汇总):

共识点 Airbnb DoorDash 阿里 腾讯
三大难题 非确定性/判断依赖/AI 评 AI 开放目标/执行不可见/无法安全彩排/规模化判断/双环境 非确定性/黑盒化/错误级联 非确定性/黑盒化/错误级联
三层评分 程序化 → Judge → 人工 binary rubric + judge + 人工定标准/标注/审计 规则主判 → Judge 辅助 → 人工兜底 + 路由 确定性 > Rubric > 人工(优先级)
Judge 校准线 high 80s ~ 90s 一致率 与人工标注一致(GEPA 优化) ~85% 后进自动化 ≥85% 可用
起步标注规模 50–100 gold set(含坏样本) rubric + 校准集 + 20–50 参考解 50–200 golden set 前 20–50 参考解
过程评估 step/trajectory/session 三层 transcript builder + 按标准定制视图 Turn/Session/Trace/Outcome 四层;假阳性 过程质量维度 + LCS 基线对齐
闭环 每周 PM 评审新增测试 失败聚类 → coding agent → Agent Skills RCA 五步 → 行动项 → 反馈生产 → 质量资产库 badcase → 能力集 → 毕业回归集

六条可以直接背诵的共识:

  1. 难题同源:非确定性、不可见、错误放大/级联——四家的全部机制都是对这三件事的响应;
  2. 三层评分:确定性优先,模型 judge 居中,人工兜底且只花在高杠杆处——没有一家让模型 judge 未经校准直接进门禁,也没有一家让专家做日常全量打分;
  3. ~85% 校准线:judge 与人工一致率约 85%(high 80s ~ 90s)是四家不约而同的"可用线";
  4. golden set 从小起步:20–50 参考解 / 50–100 / 50–200,都强调含坏样本、含边界,都走"先小后扩";
  5. 过程评估不可省:只看最终答案会放过假阳性——四家各自给出了 step/trajectory/session、transcript 视图、Turn/Session/Trace/Outcome、LCS 基线对齐四种实现;
  6. 闭环是终点:评测的价值不在出分,而在"失败 → 用例/修复/资产"的持续转化。

独创贡献表(各家"别人没有的那一手"):

公司 独创贡献 解决的具体问题
Airbnb 迭代纪律(一次只改一个变量)、judge 少而精(3–5 个)、100 样本人工精读法、"专家分歧先停下" 归因混乱、评估器噪声、拍脑袋指标
DoorDash Transcript Builder(证据切片)、fixtures、GEPA 校准、eligibility 前置、checklist 式 rubric、评测镜像运行时架构、Agent Skills 化闭环 judge 被无关 trace 噪声干扰、环境漂移、rubric 误伤不适用场景
阿里 RCA 五步归因体系、统计口径门禁、结构化行动项、反馈生产线(一 badcase ≥3 类产出)、质量资产库、人工评分路由 低分无法转化为修复、责任不清、口径漂移
腾讯 基线快照机制、扣分制(80 分线)、稳定性容忍阈值分级、能力/回归"毕业"机制、LCS 轨迹对齐 + 归一化 无参照系、无阈值、用例集无序膨胀

一个元观察:四家恰好覆盖评测体系建设的四个层面——Airbnb 教你纪律(怎么迭代),DoorDash 教你工程(怎么搭 harness),阿里 教你治理(怎么让组织消费评测结果),腾讯 教你模板(第一周就能跑起来的最小集)。面试回答"你怎么搭评测体系"时,按这四层组织答案比堆砌工具名高级得多。

2.6 从零落地路线图:30 天 / 90 天

综合四家实践(每一步都标注出处),给一份可以直接拿去答辩的路线图。

里程碑一:30 天 —— 可用的评测最小集(目标:一条命令跑出可比较的分数)

周 动作 出处与要点
W1 结构化 Trace 前置 阿里/腾讯:Trace 是被测 Agent 的标准能力而非事后补救;JSONL 结构化、每步工具名/入参/返回/时间戳、跨版本格式稳定。同时做 Agent 类型分类定评测侧重("类型不分,评测结果基本不可用")
W1–W2 100 样本人工精读 Airbnb:跑 ~100 个真实/合成样本,人工读输出与 trace,归类错误(参照旅行客服案例的 15/8/5/3 分类法),错误类型即测试清单
W2–W3 建 50–200 条 golden set 阿里:覆盖核心业务路径 + 高风险边界;四类来源(专家设计/结构字段先行 LLM 扩展/线上真实数据/badcase 回流);必须含坏样本(Airbnb);每条用例有明确期望行为
W3–W4 程序化评分第一批 腾讯:确定性优先——schema 校验、空/异常长度、关键词、工具调用断言、执行指标(调用次数/token 阈值);阿里分层筛查的粗筛层
W4 基线快照 + 首条 CI 腾讯:每用例执行 1 次 → 人工确认 → 快照为基线;提示词变更触发 PR 合入前回归

30 天验收标准(四家口径合成):能跑全量 golden set 并输出分层报告;任何一次 prompt 变更能在合入前看到"改坏了哪些旧场景";团队不再用"感觉变好了"描述版本差异。

里程碑二:90 天 —— 体系闭环(目标:低分稳定转化为行动项)

模块 动作 出处与要点
Judge 上线 3–5 个按维度拆分的 judge Airbnb 少而精;每维一个、与生成模型不同源、few-shot、强制输出 schema
Judge 校准 50–100 条校准集(含坏样本)→ 一致率目标 ≥85% 四家共识线;分析分歧改 rubric 重复(Airbnb 78→88 路径);分歧用 Cohen's kappa 度量;可用 GEPA 式反射优化只保留留出集一致率提升的版本(DoorDash)
环境受控 fixtures 冻结外部状态 + 会话模拟器 DoorDash:同场景每次一致;成本参照 50 场景 × 8 trials = 400 对话,人工 6h+ → 模拟器 20min
门禁与统计 P0 门禁 + 置信区间 + 显著性 + 最小可感知变化 阿里:"门禁不只看差了多少,还要看差异是否超过统计噪声";一致性双指标(至少一次 vs 连续成功率)
用例治理 能力集(20–50% 起步)+ 回归集(只增不减)+ 毕业机制 腾讯:稳定 100% 毕业进回归;Anthropic 口径确定性 100%/非确定性 ≥95%
RCA 闭环 现象 × 模块映射表 + 根因标签绑定 owner + 结构化行动项 阿里 RCA 五步;行动项带失败范围/证据/动作/owner/验收方式/优先级
在线联动 每日抽样去标识化流量(Airbnb 5%);离线线上同一 rubric + 同一 judge(DoorDash);三类信号联动,离线升线上降 → 回滚(阿里) 详见第 E12 章 · 在线评估与数据飞轮
组织机制 指定人类终判者 + 每周 PM 评审 Airbnb 原则四、五;专家时间 60%+ 花在校准与诊断(腾讯)

90 天验收标准:阿里第 10 章口径——评测体系能否在跨团队协作中长期、稳定地产生可执行行动项。对照 DoorDash 的成绩单设定自己的预期:质量信号从人工 1 条/天到自动评分 2,000 个/天、全量回归从 6+ 小时到约 20 分钟,都是在一个季度量级的持续建设后取得的。

动手:路线图各环节对应 labs——指标与阈值 labs/eval_lab01_metric_system.py、数据集治理 labs/eval_lab02_golden_dataset.py、程序化评分 labs/eval_lab03_programmatic_scorers.py、judge 偏差 labs/eval_lab04_judge_bias.py、judge 校准 labs/eval_lab05_judge_calibration.py、轨迹评估 labs/eval_lab06_trajectory_eval.py、模拟与 fixtures labs/eval_lab07_simulator_fixtures.py、统计口径 labs/eval_lab08_statistics_ci.py、RCA labs/eval_lab09_rca_pipeline.py。均在 cd evals-special/labs 后 python3 <文件名> 直接运行,零第三方依赖。


三、面试高频考点

# 考点 分级 一句话考察意图
1 Airbnb EDD 五原则 ⭐⭐ 是否理解评测是产品活动:尽早定门槛、从错误推导指标、judge 少而精、人类终判、产品参与
2 "When in doubt, look at your data" 100 样本法 ⭐ 冷启动没有基础设施时,最便宜的评测动作是人工精读
3 Judge 校准流程与 ~85% 一致率线 ⭐⭐⭐ 是否做过 judge 工程:gold 集含坏样本、分歧分析改 rubric、78%→88%、kappa/alpha
4 一次只改一个变量的迭代纪律 ⭐⭐ 归因能力:prompt/模型/serving 依次变,否则无法解释涨跌
5 DoorDash 五大挑战 → 五大设计要求 ⭐⭐⭐ 系统设计骨架:开放目标/执行不可见/无法彩排/规模判断/双环境各有对应机制
6 Transcript Builder 证据切片 ⭐⭐⭐ judge 只看该标准依赖的证据,聚焦让判断更一致——深水区细节
7 Fixtures 与环境受控 ⭐⭐ 环境不受控时分数测量的是噪声;50×8=400 对话 6h+→20min 的成本账
8 离线-线上同一 rubric + 同一 judge ⭐⭐⭐ 各自调 judge 分数会难调和地背离;离线结论必须能带到线上
9 阿里 RCA 五步与根因标签绑定 owner ⭐⭐⭐ 评测平台的治理价值:现象 × 模块映射、三层定责、标签可统计可指派
10 结构化行动项 vs "优化 Prompt" ⭐⭐ 建议必须带失败范围/证据/动作/owner/验收方式/优先级,否则只是报表
11 腾讯三类评分器优先级(确定性 > Rubric > 人工) ⭐⭐ 成本/稳定性/覆盖的取舍逻辑;专家时间 60%+ 在校准与诊断
12 扣分制 + 基线快照 + 容忍阈值分级 ⭐⭐ 模板落地能力:80 分线、快照即参照系、关键决策类 0% 容忍
13 能力测评 vs 回归测评与"毕业"机制 ⭐⭐⭐ 用例集治理:20–50% 爬山峰 vs 接近 100% 防漂移,只增不减
14 兼容性差距 vs 能力差距(模型迁移) ⭐⭐⭐ DoorDash 案例:低分反映的是为旧模型适配的系统;先修环境再谈换模型

四、经典面试题与参考答案

题 1(基础):什么是 Eval-Driven Development?请复述 Airbnb 的五原则。

参考答案: EDD 是 Airbnb 提出的 GenAI 开发方法论:不追求预先穷举所有失败,而是发现错误 → 捕获为测试 → 反复检查的持续循环,评测驱动开发全程。五原则:① 尽早设定目标与上线门槛(launch gates),即便它们在数据评审中才逐渐清晰;② 从观察到的错误中推导指标,与跨职能伙伴共同制定;③ 用少而精的 judge——3–5 个经校准的评估器好过一堆嘈杂的评估器;④ 指定一个最终人类决策者裁决"好 vs 坏"争议;⑤ 让产品伙伴持续参与对比与错误诊断。配套的核心习惯是 "When in doubt, look at your data":拿约 100 个样本人工精读输出与 trace,归类错误再建测试。EDD 还包含两条纪律:judge 未校准到 high 80s~90s 一致率不信任;迭代一次只改一个变量。

题 2(基础):项目早期不做评测计划会掉进哪些坑?Airbnb 怎么描述的?

参考答案: Airbnb 总结三大坑:① 虚假信心——用浅层 helpfulness 分看着不错,但分数没有预测真实产品质量;② 未被发现的回归——改 prompt 后旧场景质量悄悄变差,没有回归集就无人知晓;③ 浪费精力——指标与产品结果脱节,团队优化的方向不产生业务价值。对策都在 EDD 里:指标从观察到的真实错误推导(而非拍脑袋 helpfulness)、回归测试只增不减并每周 PM 评审新增、产品伙伴持续参与错误诊断保证指标对齐产品目标。旅行客服案例是完整示范:100 个 prompt 精读发现 15 个 groundedness 失败/8 个啰嗦/5 个不当拒答/3 个 JSON 失败——每条都是"浅层 helpfulness 分抓不到"的真实失败模式。

题 3(进阶):LLM judge 怎么校准?请结合 Airbnb 旅行客服案例讲一遍完整流程,并给出四家共识的量化标准。

参考答案: 流程五步(Airbnb):① 建 50–100 条 gold set,必须含坏样本;② 用 judge 跑该集合;③ 看一致率,目标 high 80s ~ 90s%,分歧用 Cohen's kappa 或 Krippendorff's alpha 度量;④ 逐条检查分歧 → 改 rubric/示例 → 重复;⑤ 失败模式变化时重新校准。案例:旅行客服助手,PM/SME 标注 60 条 gold(含失败样本),judge 初始一致率 78%——根因不是模型弱,而是 rubric 有缺陷:judge 把"正确的改述"误罚为 groundedness 失败;修订 rubric 与示例后达到 88%。四家量化口径高度收敛:Airbnb high 80s~90s、阿里 ~85% 后进日常自动化、腾讯 ≥85% 才可用(抽样 100–200 条对齐)、DoorDash 用 GEPA 迭代 judge prompt 且只保留留出集一致率提升的版本。关键警告:未校准 judge 制造的是误导性信心;且 judge 与生成模型同源会偏爱自己风格,需不同源或多模型对抗打分。

题 4(进阶):DoorDash 的 eval harness 面对哪五大挑战?各自的设计要求是什么?Transcript Builder 解决什么问题?

参考答案: 五大挑战 → 五大设计要求:① 开放式目标(一个目标多种可接受结果)→ 每个目标表达成 rubric,具体到每次能同样判、宽泛到容纳所有合法路径;② 执行不可见 → 把 trace 重建为"按标准定制的视图",judge 只看该标准需要的证据;③ 无法安全彩排 → 模拟用户按需生成会话 + fixtures 固定外围数据;④ 规模化判断 → 校准过的 LLM judge 顶替人类评审;⑤ 双环境背离 → 真实与模拟会话用同一 rubric + 同一 judge。Transcript Builder 是挑战②的实现:原始 trace 完整但难判(工具返回巨大、脚手架字段多、证据散落多 span),它用一组 Python 脚本重组分散 span、删无信号 token、裁超大载荷;最关键的是每条标准声明依赖的证据,builder 只给 judge 那一片——grounding 检查拿论断 + 工具输出,多样性检查拿推荐 + 原始请求。聚焦证据让判断更一致,这是"judge 为什么稳"的工程答案。

题 5(进阶):为什么评测需要 fixtures?DoorDash 的全量回归成本账怎么算?

参考答案: fixtures 用录制的工具返回替代实时调用,冻结外部状态:目录会变、门店库存会变、测试账号会漂移,不受控的环境让同一用例每次测的其实是不同的题——DoorDash 的教训是"环境必须受控,否则分数测量的是噪声"。实例:复购场景 "Reorder my usuals",get_reorder_items 固定返回录制的 reorder_history_v1(Albertsons 订单:Meadow Gold 全脂牛奶 ×2、Oroweat 全麦面包、牛油果、Ben & Jerry's 冰淇淋),每次运行看到相同订单,预期结果可预测,judge 可对照同一商品集评分;fixtures 还能构造欺诈、大额退款等真实里难遇到的难例。成本账:全量 sweep = 50 场景 × 8 trials = 400 次对话,人工本地聊约 1 分钟/次即 6+ 小时,模拟器约 20 分钟——两个数量级的差距,这是"回归只增不减"在经济上成立的前提。成果:全国上线前质量分 +8 分、错误率近乎减半,质量信号从人工 1 条/天到自动评分 2,000 个/天。

题 6(进阶):换模型后离线评测分数大跌,你怎么判断是新模型不行还是系统不适配?请举 DoorDash 的实例。

参考答案: 先看 eval 给出的具体失败模式而不是总分。DoorDash 实例:agent 跑在 Claude Sonnet 4.6,迁到 Gemini 3.5 Flash 后离线 harness 分数大跌;coding agent 分析失败 trace 后判定不是能力差距,是兼容性差距——Flash 部分工具参数格式不同(工具签名要 plain string,Flash 传 {"dishes": [...]} JSON 对象),且系统 prompt 围绕 Sonnet 惯例隐式调优。"低分反映的是为 Sonnet 适配的系统,不是更弱的模型。"修复小而准:① 工具输入确定性防护——错误形状强制转换回预期形状而非丢弃调用;② prompt 显式写出 Sonnet 原本自行推断的内容(用数据中精确店名、不超出工具结果渲染)。"不是改模型,是修正模型周围的环境。"重跑 eval 质量持平(harness 噪声范围内)后迁移生产,延迟降 35%、质量无损。答题要点:有 eval 才有资格谈迁移——没有失败模式分解,"benchmark 说它行"不能支撑决策。

题 7(进阶):阿里怎么做 badcase 根因分析?请完整讲五步,并说明根因标签为什么要"绑定 owner"。

参考答案: 入口两条通路(离线评测集 + 线上会话/质检/工单/低满意度/回归失败/告警)汇入同一任务表,然后五步:① 证据汇总——按 sessionId/traceId 聚合用户输入、回复、模块 IO、prompt、工具调用、异常、耗时;② 范围收敛——查"问题现象 × 功能模块"映射表(答非所问 → 意图识别/Query 改写/知识筛选;过度承诺 → 风险拦截/回复生成),命中走确定性路径,未命中 LLM 兜底缩圈,映射表只缩小候选不直接定责;③ 分模块诊断——候选模块逐个读 IO,输出 PASS/SOFT_PASS/FAIL(实例:事实性错误 → FAQ 检索 PASS → 知识检索 PASS → 回复生成 FAIL);④ 责任判定——三层策略:严重模块直接定责 → 规则引擎匹配 → LLM 汇总责任传递;⑤ 结构化落盘——问题分类/现象/枚举/责任层/责任模块/置信度/修复建议写入任务记录。根因标签必须稳定、可统计、指向 owner(运营可配置/算法需优化/工程需修复/业务需定口径),否则标签只是分类学不是管理工具;聚簇后报告变成"退款已发货场景中 Agent 23 次跳过订单状态校验,集中在 v1.8 Prompt"——直接可派单。

题 8(进阶):腾讯的三类评分器怎么选?为什么人工评分器"不进门禁"?

参考答案: 选择优先级确定性 > Rubric > 人工。确定性评分器(脚本/断言/Lint/AST)毫秒级、免费、100% 稳定,覆盖已知硬指标,做硬门禁;Rubric 评分器(固定版本大模型 + Prompt + JSON Schema)秒级、有 API 费用、有抖动需降噪,覆盖未知软指标,做分级门禁(error 硬/warning 软);人工评分器分钟-小时级、成本最高、一致性取决于标注员,覆盖主观与边缘场景,不进门禁,做采样审查。人工不进门禁的原因:人力无法随版本频率扩展,且标注员间一致性本身是噪声源;但人工有六个不可替代的场景——校准 LLM 评委(最核心,抽样 100–200 条,一致率 ≥85% 才可用)、主观任务打分、诊断 0%/100% 通过率异常、建 Ground Truth(前 20–50 参考解)、Trace 采样审查、高风险 100% 复核。经验法则:专家时间 60%+ 花在"校准评委"与"诊断异常",坚决不做日常全量打分。

题 9(系统设计):你加入一个还没有评测体系的 Agent 团队,给出 30 天与 90 天两个里程碑的落地计划,每一步说明依据哪家的实践。

参考答案: 30 天(可用最小集):W1 结构化 Trace 前置——Trace 是被测 Agent 的标准能力而非事后补救(阿里/腾讯:JSONL、每步工具名/入参/返回/时间戳、跨版本格式稳定),并按 Agent 类型定评测侧重;W1–W2 跑 ~100 样本人工精读,归类错误(Airbnb 100 样本法,错误类型即测试清单);W2–W3 建 50–200 条 golden set,覆盖核心路径 + 高风险边界,四类来源:专家设计/结构字段先行的 LLM 扩展/线上真实数据/badcase 回流,必须含坏样本(阿里/Airbnb);W3–W4 程序化评分第一批(schema/空输出/关键词/工具调用断言/执行指标,腾讯确定性优先);W4 基线快照——每用例执行 1 次人工确认后快照为基线(腾讯),接 CI 做 PR 前回归。90 天(体系闭环):3–5 个按维度拆分的 judge 并校准到 ≥85% 一致率(四家共识线;Airbnb 78→88 路径,DoorDash GEPA);fixtures + 会话模拟器冻结环境(DoorDash:400 对话 6h+→20min);P0 门禁带统计口径——置信区间 + 显著性 + 最小可感知变化,一致性看连续成功率(阿里);能力集/回归集分治 + 毕业机制(腾讯);RCA 五步 + 根因标签绑定 owner + 结构化行动项(阿里);每日抽样去标识化流量、离线线上同一 rubric 同一 judge、离线升线上降即回滚(Airbnb/DoorDash/阿里);组织上指定人类终判者 + 每周 PM 评审(Airbnb)。验收用阿里第 10 章口径:低分能否稳定转成行动项。

题 10(系统设计):四家公司的评测体系有哪些共识?如果只能保留五条写进你团队的评测宪章,保留哪五条?

参考答案: 共识清单:难题同源(非确定性/黑盒/错误级联)、三层评分(确定性 → judge → 人工)、judge 校准线约 85%、golden set 从小起步(20–200 条,含坏样本)、过程评估不可省(防假阳性)、闭环是终点(失败 → 用例/修复/资产)。我的五条宪章:① 确定性优先——能用代码判断的绝不用模型,三层评分按成本/稳定性/覆盖路由(腾讯优先级 + 阿里分层筛查);② judge 未校准不进门禁——一致率 ≥85% 是可用线,gold 集必须含坏样本,升级必重校准(四家共识 + Airbnb 78→88);③ 评测环境受控——fixtures 冻结外部状态,同用例同条件,否则分数测量的是噪声(DoorDash);④ 离线-线上一把尺子——同一 rubric + 同一校准 judge,离线升线上降触发回滚(DoorDash 原则三 + 阿里三类信号);⑤ 低分必须变成行动项——带失败范围/证据/owner/验收方式,评测资产只增不减(阿里第 10 章 + 腾讯回归集毕业机制)。五条背后的共同逻辑:评测不是出分工具,而是把不确定性收敛为可发布质量的治理系统。


五、易错点 · 反直觉点

  1. 误区:judge 一致率低就换更强的模型。 真相:Airbnb 案例中 78% 的根因是 rubric 缺陷——judge 误罚了正确的改述,修 rubric 与示例后到 88%,不是换模型。记忆锚点:校准从看分歧样本开始,不是从换模型开始。
  2. 误区:换模型后离线分数大跌 = 新模型不行。 真相:DoorDash 迁移 Gemini 3.5 Flash 时分数大跌,实为兼容性差距(工具参数形状、围绕 Sonnet 惯例调优的 prompt),修正环境后质量持平、延迟降 35%。记忆锚点:低分测的是"为旧模型适配的系统",先修环境再评模型。
  3. 误区:线上随机抽样就能当评测集。 真相:线上样本有幸存者偏差——正常流程占多数、易错边缘占比低,随机采样报告"看起来不错"但关键问题漏掉(阿里)。记忆锚点:随机抽样的评测报告是虚假信心。
  4. 误区:pass@1 高就能上线。 真相:生产级场景(客服/支付/退款/合规)看连续成功率(pass^k),用户不会接受"多试几次总有一次成功"(阿里一致性双指标;腾讯关键决策类 0% 容忍)。记忆锚点:能力上限看至少一次,生产可靠看连续成功。
  5. 误区:逐条看失败、修一条是一条。 真相:逐条修会"轶事驱动"——最近、最惊奇的失败主导修复优先级;rubric 标准天然是问题簇,先聚类再按影响排序(DoorDash)。记忆锚点:先修簇,再修例。
  6. 误区:离线一套 judge,线上另一套 judge,各自调到最好。 真相:DoorDash 教训三——各自调 judge,两边分数会以难调和的方式背离;离线结论只有能带到线上才有意义。记忆锚点:同一 rubric、同一 judge,一把尺子量两边。
  7. 误区:用例只测正向触发就够了。 真相:只测正例,Agent 可能学会什么都触发——过度触发比不触发更难发现(腾讯);负向触发用例必不可少。记忆锚点:负向用例测的是触发的边界。
  8. 误区:通过率 0% 或 100% 是模型能力的两极。 真相:0%/100% 通常是任务定义或评分器坏了,不是模型弱/强(腾讯人工评分六场景之三;0% pass^N 先查任务定义与基线)。记忆锚点:两个极端先怀疑尺子。
  9. 误区:回归集和能力集一样维护,都追求覆盖新场景。 真相:两者目标相反——能力集起步 20–50%,爬山峰、主动拓展;回归集接近 100%、防漂移、只增不减、CI 每次运行;稳定 100% 的用例才"毕业"进回归集(腾讯;Anthropic 口径确定性 100%/非确定性 ≥95%)。记忆锚点:能力集爬山峰,回归集守底线。
  10. 误区:评测平台的价值是把分数算准。 真相:阿里第 10 章——成败取决于能否在跨团队协作中长期、稳定地产生可执行行动项;低分不能稳定转成行动项,再精细的分数也只是报表。记忆锚点:评测的终点是行动项,不是报告。

六、推荐资源

一手工程博客(本章全部数字与机制的原始出处,强烈建议精读原文):

  1. Airbnb《Eval-driven development: Lessons from evaluating GenAI at scale》(Rohit Girme, Dan Miller, Mia Zhao, Lifan Yang, Clint Kelly)——EDD 五原则、judge 校准五步、旅行客服完整案例、迭代纪律。方法论层必读。
  2. DoorDash《Building Ask DoorDash (Part 3): Evaluation》(Steven Xu, Fabio Flores, Twisha Jain, 2026-06-30)——五大挑战表、Transcript Builder、fixtures、GEPA 校准、reasoning leakage 与模型迁移两个实战案例。工程层必读,细节密度最高。
  3. 阿里技术《Agent 评测:方法论与体系设计》(2026 年第 28 篇)——P0/P1/P2 指标、评分路由、RCA 五步、结构化行动项、反馈生产与质量资产库,共十章。治理层必读。
  4. 腾讯技术工程《AI Agent & Skill 测评方案及落地实践》(martinskxu,TEG 云架构平台部网关测试团队)——三类评分器、五维度、四场景用例、扣分制、基线快照、容忍阈值分级、TPerf 实战。模板层必读,可直接抄。

特辑内交叉引用:

  • 方法论展开:第 E1 章 · 为什么评估是 GenAI 工程的生命线(三大坑与四个失效场景)、第 E10 章 · 评测驱动开发(EDD)(Airbnb 案例演练与 DoorDash 反馈闭环)
  • 指标与数据:第 E2 章 · 评估指标体系(P0/P1/P2 与五维度)、第 E3 章 · 黄金数据集与用例设计(四来源与四场景)、第 E9 章 · 评估的统计学基础(门禁统计口径)
  • 评分三层:第 E4 章 · 程序化评分、第 E5 章 · LLM-as-Judge 深入(校准与 GEPA)、第 E6 章 · 人工评估与评分路由
  • 过程与仿真:第 E7 章 · 轨迹与 Agent 级评估(三层模型与 Transcript Builder)、第 E8 章 · 对话 Agent 与仿真评测(模拟器与 fixtures)
  • 闭环与在线:第 E11 章 · Badcase 根因分析与优化闭环(RCA 五步全展开)、第 E12 章 · 在线评估与数据飞轮(三类信号与发布联动)
  • 主手册浓缩版:主手册第 8 章 · Agent 评估与可观测性(本章是其在工业实践维度的深挖)

动手 labs(全部纯标准库、零依赖、确定性可复现):

Lab 对应本章内容 运行命令
labs/eval_lab01_metric_system.py pass@k/pass^k 与容忍阈值分级(腾讯) cd evals-special/labs && python3 eval_lab01_metric_system.py
labs/eval_lab02_golden_dataset.py 四来源构造与毕业机制(阿里/腾讯) cd evals-special/labs && python3 eval_lab02_golden_dataset.py
labs/eval_lab03_programmatic_scorers.py 程序化评分与分层筛查(腾讯/阿里) cd evals-special/labs && python3 eval_lab03_programmatic_scorers.py
labs/eval_lab04_judge_bias.py Judge 偏差量化与缓解 cd evals-special/labs && python3 eval_lab04_judge_bias.py
labs/eval_lab05_judge_calibration.py 复现 Airbnb 78%→88% 校准循环 cd evals-special/labs && python3 eval_lab05_judge_calibration.py
labs/eval_lab06_trajectory_eval.py LCS 轨迹对齐与假阳性捕获(腾讯 TPerf) cd evals-special/labs && python3 eval_lab06_trajectory_eval.py
labs/eval_lab07_simulator_fixtures.py fixtures 对照组:环境漂移 → 方差爆炸(DoorDash) cd evals-special/labs && python3 eval_lab07_simulator_fixtures.py
labs/eval_lab08_statistics_ci.py 门禁统计口径:CI/样本量/显著性(阿里) cd evals-special/labs && python3 eval_lab08_statistics_ci.py
labs/eval_lab09_rca_pipeline.py RCA 五步全流程与问题簇聚类(阿里) cd evals-special/labs && python3 eval_lab09_rca_pipeline.py