第 8 章 黄金数据集Golden DataEDD

第 8 章:如何为自己的 Agent 设计 Golden Data 和 Eval

第 8 章:如何为自己的 Agent 设计 Golden Data 和 Eval

本章核心

黄金数据集是评估的"源代码",其质量决定了评估信号的信噪比。构建黄金数据集不是"收集数据",而是"定义正确性"。

这是全书的实践章——把前 7 章的方法、框架、信号全部串成一套可落地的流程。读完这一章,你应该能为自己的 Agent 从零搭建一套完整的评估体系。

这一章回答三个问题:

  1. 黄金数据集怎么定义、怎么构建、怎么版本化?
  2. Eval 驱动的开发工作流怎么落地到团队流程?
  3. 一个端到端案例长什么样?

8.1 黄金数据集的定义与核心原则

什么是黄金数据集

黄金数据集(Golden Dataset) 是包含参考输出(ground truth)的数据集,作为性能基准,提供可靠的标准来衡量和比较 Agent 在不同迭代中的输出。

每个数据条目应包含三要素:

  • 输入(query):用户请求或任务描述
  • 期望输出(reference output):正确的输出/行为
  • 元数据(metadata):标签、错误类型、难度、领域

数据集应包含的样本类型

类型 说明 作用
正常案例 典型用户交互 覆盖主路径
边缘案例 历史上 Agent 表现不佳的场景 捕捉边界
标记的失败运行 从日志/反馈/tracing 提取的失败模式 驱动修复

黄金集/影子集/对抗集/合成集

一个完整的评估数据体系通常由四类数据集分工(来自 AI Agent Evaluation Pipeline):

  • 黄金集(Golden):人工挑选 + 人工标注,作为主门禁,决定能否 release
  • 影子集(Shadow):生产流量的影子回放,离线评测生产 case
  • 对抗集(Adversarial):专门为难 Agent 构造的用例
  • 合成集(Synthetic):LLM 生成的变体,用于规模扩展

8.2 构建流程:从错误分析到版本化

第一步:错误分析驱动

从生产 trace 中挖掘真实失败案例,而非套用通用指标。这是构建黄金集的起点——先看真实世界哪里出错,再决定测什么。

第二步:种子集构建

手工构造约 20 个高信号用例,然后从生产 trace 和合成生成中扩展。黄金集典型规模为 50-200 条人工挑选 + 人工标注的案例,作为主门禁决定能否 release。

一个务实的建议(来自 evaluation-first 博客):"80% 公共 Benchmark + 20% 私有黄金集"——公共集负责覆盖面和横向对比,私有集保证对齐内部真实需求。私有黄金集不要搞太大,100 道高质量 case 已经足够抓住 90% 的回归。

第三步:标注纪律

  • 领域专家以"仁慈独裁者"模式主导标注(一个人做最终裁决,避免众口难调)
  • 验证每条 LLM 建议的标签
  • 测量标注者间一致性(inter-annotator agreement)——标注者都不一致的条目,评估信号就是噪声

第四步:样本量与统计严谨性

  • ±5% margin 需要约 250 个用例
  • 关键路径用 pass^k(连续 k 次成功)而非 pass@k(k 次内至少一次成功)——前者保证稳定性,后者可能靠运气

第五步:版本化与防过拟合

  • 版本控制(my-bench@1.0my-bench@2.0,升级时保留旧版本,分数跨版本可比)
  • 保留 held-out split
  • 持续刷新(防数据污染:私有黄金集任何人不能把 case 放进训练数据)

将 evals 视为 first-class artifacts,与代码一同版本化。

第六步:合成数据扩增

人工标注成本高,2025 年的主流是用强模型造评测数据,但要防止污染与质量失控:

  • seed task 扩写:从 20 个人工种子用例出发,让强模型生成同分布变体,人工抽检
  • 仿真环境生成轨迹:在 τ-bench 式固定 API 环境中运行 Agent,收集真实轨迹作为 eval 集
  • 蒸馏大基准子集:从公开大基准中挑选与自家场景相关的高信号子集
  • 去污染与人工校验:合成数据必须去重(防与训练集重叠)并经过人工/半人工抽检

数据托管与版本化工具

  • Opik Datasets / LangSmith Datasets:数据集版本化、curation、实验对照
  • HuggingFace Hub Datasets:公开评测数据与结果的托管、浏览、多 split 管理
  • Arize Phoenix 实验:数据集 + 运行实验 + 对比,沉淀为可追溯的评估资产

8.3 Agent 评估的特殊设计考量

轨迹标注

不仅标注最终答案,还标注期望的工具调用序列(expected trajectory)

ADK 的 golden-path 方法:捕获 golden session → 定义 expected tool trajectory → 配置指标 → 运行评估。(详见第 2 章 2.3 与第 5 章 5.4。)

多轮对话设计

使用 ADK 的 ConversationScenario 替代硬编码脚本——定义 starting_prompt 和 conversation_plan,让 LLM 驱动的模拟用户动态生成对话。这使测试对 Agent 的对话风格变化具有鲁棒性。

中间步骤评估

捕获推理轨迹(reasoning trace)以区分"Agent 自己编造了数字"和"工具实际返回了该数字"。(经典案例:GPU 使用率 87% 来自 nvidia-smi 还是模型编造,见第 2 章 2.3。)

运行时 Schema 集成

通过 /agent-info 端点暴露实时工具定义,使评估器在运行时获取最新 schema,避免测试套件与实际代码漂移。评估器应该测试"现在的 Agent",而不是"上周的 Agent"。

8.4 Eval 驱动的开发工作流

四阶段工作流

Claude Code EDD 实践的核心原则:先定义 evals,再编码

  1. 定义阶段:编写 capability evals 和 regression evals 的检查清单
  2. 实现阶段:运行 evals 频繁捕获回归
  3. 验证阶段:track pass@k 趋势,监控可靠性变化
  4. 发布阶段:黄金集作为主门禁,决定能否 release

持续评估与 CI 门禁

把评估接进开发流水线:

  • PR Gate:任何改 Agent 的 PR 触发小型 smoke benchmark(10-20 tasks,10 分钟内跑完),Smoke 分数下降超过阈值(如 -3%)直接阻止合并
  • Nightly Gate:每晚跑完整 benchmark,连续两天下降就开 Issue 跟进
  • Release Gate:正式发布前必须过 Full benchmark + Safety suite + Cost audit

工具支撑:

  • Opik PyTest 集成:每次 commit 跑 LLM 管线评估,失败即阻止合并
  • curiocity / coding-agent-evals:用真实 CLI transcript 驱动并在 CI gate 编码 Agent 变更
  • 注意成本与噪音:在线评估需设计阈值、抽样率与告警,避免判官抖动触发无效告警

发布后的在线评估闭环

离线黄金集管"发布前",在线评估管"发布后":

  • 线上流量转 eval 集:把生产 trace 中高价值/失败样本回流成新 eval 用例,形成 data flywheel
  • 漂移检测:监控 prompt 分布、工具调用模式、反馈分数的漂移,及时发现"环境变了"
  • 灰度对比与 trace 回放:新版本上线前用历史 trace 回放对比,灰度期用 A/B 观察真实用户反馈
  • 工具支撑:LangSmith/Langfuse/Opik 的 trace 查询与在线评估器,Arize Phoenix 的 drift 检测

8.5 评分器的选择策略

优先使用代码评分器

确定性检查优于概率性检查。 代码评分器的典型场景:文件包含期望模式、测试通过、构建成功。

代码评分器为什么优先?因为它是确定性的——同一输入永远给同一结果,不存在判官偏差。这是第 2、3 章反复强调的原则在选型上的落地。

LLM 评分器处理开放式输出

使用 1-5 分制,附带推理说明。判官 prompt 应包含四要素:评估量表、上下文、具体标准、输出格式。(详见第 3 章 3.1。)

人工审查用于安全关键变更

永远不要完全自动化安全相关的评估。(呼应第 4 章铁律一。)安全相关变更的放行必须有强制人工审查环节。

混合策略

输出类型 评分方式
结构化输出 代码评分器
开放式输出 LLM 判官
安全相关 人工审查
高风险评估 多判官共识 + 人工

8.6 选型决策矩阵

当评估需求(对象、规模、资源)明确后,按以下矩阵快速定位工具:

场景 推荐起点 备选
单模型/开源模型对比 lighteval + Open LLM Leaderboard evaluate
RAG 系统评估 RAGAS Opik 内置判官指标
通用 Agent 观测 + 评估 + CI Opik Langfuse / LangSmith
编码 Agent(Claude Code/Codex)评估 Harbor ECC Eval Harness / coding-agent-evals
多轮对话模拟与轨迹评估 Google ADK 自建 ConversationScenario + LLM judge
判官质量与校准 RewardBench / Judge Arena Agent-as-a-Judge
Agent 安全评估 Inspect AI + AgentDojo Garak / ASB-2025
Skill 优化 SkillOpt / SkillEvaluator MUSE-Autoskill / skill-creator

8.7 端到端案例:为一个带工具的 RAG + 浏览器 Agent 搭建评测

用一个真实案例串起全书所有章节(从 0 到 1 的 walkthrough)。

背景:你有一个带工具的 RAG + 浏览器 Agent——它检索文档、调用工具、浏览网页来回答用户问题。现在要给它搭建完整评估体系。

第 1 步:数据采集

接入 Opik/LangSmith,对生产 Agent 打 trace,导出失败轨迹与用户反馈 → 形成错误分析原料。

对应章节:第 2 章(观测)、第 5 章(Opik)。

第 2 步:Golden 集构建

从错误分析挑 20 个种子用例,人工标注期望输出 + 期望工具调用序列,扩到 50-200 条。

对应章节:8.1-8.2。

第 3 步:合成数据扩增

用强模型扩写同分布变体,去重 + 人工抽检。

对应章节:8.2 第六步。

第 4 步:评分器校准

  • 代码评分器:必调工具检查(比如"回答前必须调用检索工具")
  • LLM 判官:回答质量 1-5 分,提示含四要素
  • RewardBench 式对齐测试:确认判官与人类判断一致

对应章节:8.5 / 第 3 章。

第 5 步:CI 接入

Opik PyTest / promptfoo 在每次 commit 跑评估,黄金集作为发布门禁。

对应章节:8.4。

第 6 步:成本与效率统计

记录 $/task、token/task、延迟,纳入看板。

对应章节:第 2 章 2.5(成本与效率指标)。

第 7 步:优化闭环

把失败样本喂给 GEPA / SkillOpt,用评估反馈迭代 prompt 与技能文档,held-out 验证通过才接受。

对应章节:第 6、7 章。

第 8 步:在线监控

上线后跑 online evaluation rules,trace 回流成新 eval 用例。

对应章节:8.4 发布后闭环。

这套 walkthrough 展示了本书的核心主张:评估不是终点,而是 Agent 持续进化的燃料。

30 条落地 Checklist(从 0 到 1)

基础设置(第 1-2 周)

  • 选好 1 个主公共 Benchmark(和你的任务类型对应)
  • 采集 50-100 条内部真实 case 做私有黄金集,每条都写确定性 Verifier
  • 定好 dataset@version 命名规则,版本不可变
  • 选好 Harness:代码 Agent → Harbor Framework;其他 → 按推荐表选
  • 沙箱环境跑通(本地 Docker 即可,并发先 4)
  • 定义 5 维度度量表(score/cost/latency/reliability/safety)
  • 跑一次 Baseline,把 5 维度数字 + CI 存进中心存储

迭代机制(第 3-6 周)

  • Prompt 模板代码化并纳入 git
  • 元数据 10 项(commit/harness/model/prompt-sha/image-sha/seed/…)自动记录
  • Ablation 模板:任何改动 PR 附消融表
  • PR Smoke Gate:<10 分钟小子集评测,> -3% 降分拒绝
  • Nightly Full Benchmark:自动贴结果到群聊
  • 分桶分析:难度桶、任务类型桶、失败原因桶
  • Pareto 前沿图定期生成
  • 每周一次 Failure Review(固定议程、固定节奏)

数据闭环(第 7 周起)

  • Harness 支持导出 ATIF 轨迹
  • SFT 导出命令:harbor traces export --fmt sft
  • SFT 数据集清洗:MinHash 去重 + 死步骤过滤
  • 建立独立 Hold-out Set(至少和训练集不重叠)
  • RL 训练管线打通(Flow-GRPO / GRPO / PPO 三选一)
  • 每个训练 checkpoint 自动过 Hold-out + 成本审计
  • Reward hacking 监控:Hard 子集分数变化
  • 训练产出 Agent 重新建立 Baseline,进入下一循环

团队与流程(持续)

  • 角色分工到位:Engineer/TrainEng/ResEng/TL/QA 各自职责明确
  • 发布 Release Gate 三条线过(Full/Safety/Cost)
  • Benchmark 相关性每季度审计一次(和线上 A/B 比)
  • 私有黄金集每季度新增 10-20 条(从生产 bad case 回灌)
  • 中心存储至少保留 90 天历史,支持多维查询
  • 新成员入职第一课:怎么读评测报告、怎么跑 baseline
  • 年度大版本:重新过一遍 Harness / Benchmark / Verifier 三件套是否依然合适

常见陷阱与反模式

陷阱 1:只追一个 Benchmark 的分数,上线翻车

征兆:团队把 Benchmark 分数作为单一 KPI,分数涨了 20 分但线上用户反馈没变好。 解药:20% 私有黄金集 + 定期生产 case 回灌 + 线上 A/B 测试和离线分数的相关性审计。相关系数 < 0.7 就该换 Benchmark。

陷阱 2:数据泄露 / Test Set Contamination

征兆:新模型从 60 分直接跳到 90 分,换个任务集立刻掉回 60 分。 解药:私有黄金集权限隔离、公共数据集定期换版本、训练前 n-gram overlap 检查。

陷阱 3:用 LLM-as-judge 做主 reward

征兆:同一个任务跑两次,reward 0.9 和 0.5 都出现,方差巨大。 解药:LLM-as-judge 最多用于失败原因聚类 / 开放式内容辅助检查,主 reward 用代码化、确定性 verifier。

陷阱 4:改 Prompt 不存版本

征兆:"上周这个 case 明明过的"——但没人知道上周 Prompt 是啥。 解药:Prompt 模板代码化,每次改都进 git,sha256 记录进评测元数据。

陷阱 5:RL 过拟合训练分布

征兆:训练 reward 一路飙升,但 hold-out 分数不涨甚至下降。 解药:每个 checkpoint 必过独立 hold-out;KL penalty 调大;多任务混合训练;self-play 定期 reset 采样池。

陷阱 6:把"更聪明的模型"当万能药

征兆:分数低就换更大的模型,不做进一步分析。 解药:任何模型升级都要做分桶 + 成本审计。很多时候 7B + 评测 + RL 训练出来的 Agent,在 (score, cost) 组合上比 Opus 级别模型更优。

陷阱 7:没人看失败 case,只看总分

征兆:团队只讨论总分变化曲线,没人点进失败 case 看一眼。 解药:每周一次 30 分钟 Failure Review——随机抽 5 个失败 case 看轨迹,讨论 Verifier 是否误判、Prompt 该补什么、环境缺什么。坚持 8 周,分数会自己涨。

本章小结

  • 黄金数据集是评估的"源代码",每个条目含输入/期望输出/元数据三要素
  • 构建六步:错误分析 → 种子集 → 标注纪律 → 统计严谨性 → 版本化 → 合成扩增
  • EDD 工作流四阶段 + CI 三级门禁(PR/Nightly/Release)+ 发布后在线闭环
  • 评分器策略:代码优先、LLM 判官补开放式、人工审安全、混合全覆盖
  • 选型决策矩阵覆盖 8 大场景
  • 端到端案例 + 30 条 Checklist + 7 个常见陷阱

参考资料

官方文档

  • Defining the Dataset That Powers Your Experiments(Arize Phoenix 文档)
  • Claude Code Eval Harness SKILL.md(ECC 项目)— EDD 原则、评分器类型、pass@k
  • Google ADK Evaluation 文档 — golden path、用户模拟、轨迹评估
  • From "Vibe Checks" to Continuous Evaluation(Google Cloud Blog, 2026)— 推理轨迹捕获、运行时 Schema 集成

GitHub 与工具

  • AI Agent Evaluation Pipeline(GitHub)— 黄金集/影子集/对抗集/合成集四种数据集的分工
  • METR AgentEvals / RE-Bench — 82 名人类专家对照实验,人类标注参考标准
  • promptfoo / DeepEval / Inspect AI 文档 — CI 门禁与在线评估实践

博客与文章

  • 基于 Evaluation 的 AI Agent 开发实践全景指南(本项目博客 2026-08-28)— 构建流程、Checklist、陷阱的数据来源
  • Reliable Evaluations for LLMs and AI Agents(Springer, 2026)