Eval / 测评体系:让 Agent 质量”有数可证”

一句话:Eval 是给 AI 系统做体检的整套办法——没有它,“我的 Agent 变好了”只是感觉;有了它,“变好了 8.3%“是事实。Eval 是 Agent 工程的命根子,是数据飞轮的方向盘,也是 Agent 架构师最容易被忽略的硬技能


目录


0. 为什么 Eval 是 Agent 工程的命根子

0.1 没有 Eval 的真实痛苦

设想你做了一个 AI 客服 Agent,已经上线 3 个月。今天你想:

  • 把模型从 GPT-4 换成 Claude Haiku(省钱)
  • 调一下 system prompt(让它更礼貌)
  • 加一个新工具(订单查询)

没有 Eval 的世界

“感觉好像变好了?” “有用户投诉,但不知道是这次改动导致的还是别的原因” “上线一周后回滚——但回滚到哪个版本?记不清了”

有 Eval 的世界

跑一遍 200 题的测评集 → 准确率从 87% → 91% ✅ 客服满意度模拟得分 4.2 → 4.5 ✅ 平均响应延迟 2.1s → 1.8s ✅ 数据说话,不用猜

0.2 三个直击灵魂的事实

🔥 没有 Eval,所有 prompt 调优都是玄学——你不知道改完是更好还是更差。

🔥 没有 Eval,数据飞轮根本转不起来——飞轮的核心是”知道自己变好了多少”。

🔥 没有 Eval,没法谈 SLA、谈交付、谈商业化——客户问”准确率多少”你只能说”挺好的”。


1. Eval 是什么

1.1 一句话定义

Eval(Evaluation,评测)= 用一套固定的”考题”,给 AI 系统打分。

1.2 三个生活类比

类比对应到 AI
体检一套固定项目(血压、血脂、肝功能)→ 报告 → 知道哪里不对
期末考试一套固定题(不是临时编的)→ 全班同一份 → 公平比较
车辆碰撞测试NCAP 五星标准 → 全行业可比 → 用户能选

1.3 Eval 的三件套

1. 测评集(Eval Set)—— 一组固定的"题目"
2. 评判标准(Metric)—— 怎么算"答对"
3. 测评流程(Pipeline)—— 怎么自动跑、出报告

2. 四大类 Eval

按”谁来评判”和”何时跑”两个维度,可以分成四大类:

                离线(开发/迭代时)        在线(生产环境)
              ┌──────────────────────┬──────────────────────┐
   人 来评    │  人工评测(贵但准)    │  用户反馈(👍/👎)     │
              ├──────────────────────┼──────────────────────┤
   机器评     │  离线 Eval(黄金集)   │  在线 A/B 测试        │
              │  + LLM-as-Judge       │                      │
              └──────────────────────┴──────────────────────┘

2.1 离线评测(Offline Eval)

怎么做:开发时跑一组固定测评集,看准确率/分数。

典型场景

  • 改了 prompt → 跑 eval set → 看分数有没有跌
  • 换了模型 → 跑 eval set → 对比新旧
  • 上线前最后一道闸——分数低于阈值就不让发布(CI 集成)

类比:高考前反复刷历年真题,刷分稳定了再上考场。

优势:快、便宜、可重复 痛点:只能反映 eval set 上的能力,不一定代表真实场景

2.2 在线 A/B 测试

怎么做:把流量按 50:50 分给新版本和旧版本,统计真实用户指标。

典型指标

  • 用户点 👍 / 👎 比例
  • 用户复用率
  • 任务完成率
  • 用户流失率

类比:两家餐厅同条街开张,看哪家半年后还开着。

优势:真实场景、真实用户、真实数据 痛点:要等(一般要跑几天到几周才统计显著)、要用户量

2.3 LLM-as-Judge(用 AI 当裁判)

怎么做:让一个**强大的 AI(如 GPT-4 / Claude Opus)**给被测系统的输出打分。

经典场景

  • 被测系统:用便宜的 Haiku 回答客户问题
  • 裁判 AI:用贵的 Opus 评判”回答是否准确、礼貌、相关”

为什么管用

  • 比人工便宜 100 倍
  • 比单纯字符串匹配灵活得多(能理解语义)
  • 在很多任务上和人类标注员一致率 > 80%

类比:找一个博士当家教给小学生改作文——不是最准的,但比”对答案”灵活,比”请专业作家”便宜。

陷阱

  • 裁判 AI 自身的偏见会被放大
  • 裁判可能”喜欢”和它风格相似的回答(自我偏好)
  • 复杂主观任务上还是要人工兜底

2.4 人工评测

怎么做:找标注员(或自己)对每个回答打分。

啥时候必用

  • 涉及法律、医疗、伦理的高风险场景
  • 主观审美(写作、诗歌、设计)
  • 验证 LLM-as-Judge 的可靠性(先用人工标 200 条做”金标”)

优势:最准、最贴近用户感受 痛点:贵、慢、一致性差(不同人标不一样)


3. Eval 数据集怎么构建

3.1 不是”随便挑 100 条”——而是分三类

┌────────────────────────────────────────────┐
│  ① 黄金集(Golden Set)                      │
│     20~100 条最高质量、最具代表性的样本       │
│     人工精挑细选,不能改                      │
│                                            │
│  ② 困难集(Hard Set)                        │
│     从用户日志里捞出"失败案例"、"边角问题"     │
│     专门考模型的弱点                          │
│                                            │
│  ③ 回归集(Regression Set)                   │
│     已经修复过的 bug 对应的样本               │
│     防止改新 bug 时把老 bug 改回来             │
└────────────────────────────────────────────┘

3.2 每条数据的标准格式

{
  "id": "eval-001",
  "input": "用户问题:北京今天天气?",
  "expected_output": "调用 weather 工具 → 返回当天数据",
  "tags": ["工具调用", "天气"],
  "difficulty": "easy",
  "criteria": [
    "是否调用了 weather 工具",
    "答案是否包含温度",
    "是否有当日日期"
  ]
}

3.3 几个建数据集的实用法则

法则说明
先小后大第一版 20 条就行,别一开始就 1000 条
真实优先用户日志 > 你脑补的题
覆盖场景简单 / 困难 / 边角各占 1/3
持续生长用户每报一个 bug,就新增一条 eval
版本管理eval set 也要 git 提交,每条都有创建日期

4. 关键指标

4.1 通用指标

指标含义例子
Accuracy(准确率)答对的比例100 题对 87 题 → 87%
Pass Rate(通过率)通过验收标准的比例代码题:能跑通测试用例的比例
F1 Score精确率与召回率的调和平均分类任务常用
Latency(延迟)响应时间p50 / p95 / p99 都要看
Cost(成本)平均每次调用消耗$/请求、Token/请求

4.2 RAG 系统专属指标

RAG = 检索增强生成。它的 Eval 必须分两段评:检索质量 + 生成质量。

指标含义
Context Precision(上下文精度)检索回的内容有多少是相关的
Context Recall(上下文召回)该被检索回的内容有多少被检索到了
Faithfulness(忠实度)生成的答案是否只基于检索到的内容(不胡编)
Answer Relevance(答案相关性)答案是否切题

📖 RAG Eval 的细节,可与 RAG 学习笔记 配合阅读。

4.3 生成任务指标

指标含义用途
BLEU / ROUGE生成文本与参考答案的字面相似度翻译、摘要
BERTScore语义相似度比 BLEU 更智能
Hallucination Rate(幻觉率)生成内容含错误事实的比例知识问答
Toxicity(毒性)生成内容是否有害安全合规(深入见 Agent 安全攻防

4.4 Agent 任务专属指标

Agent 不是一问一答——它要多轮规划、调工具、出最终结果。Eval 也得多维。

指标含义
Task Success Rate整个任务最终是否完成
Tool Call Accuracy工具调用是否选对了、参数对不对
Steps to Complete完成任务用了几步(越少越好)
Recovery Rate出错后能否自己恢复
Cost per Task完成一次任务花多少钱

💡 Agent 评测最大的特点是”过程也要看,不只看结果”——同一个最终答案,用 3 步走完和用 30 步走完,工程意义天差地别。


5. 实战工具

5.1 开源工具

工具主要用途特点
PromptfooPrompt 比较 / 回归测试YAML 配置、CI 友好、轻量
RagasRAG 系统评测专门针对 RAG 的 4 大指标
DeepEval类 Pytest 写法Python 开发者友好
OpenAI EvalsOpenAI 官方框架数据集格式标准化
lm-evaluation-harness学术 benchmark 跑分MMLU / HellaSwag 等

5.2 商用 / 托管平台

工具主要用途
LangSmithLangChain 全家桶配套,trace + eval
Braintrust团队协作、生产监控
HumanloopPrompt 版本管理 + Eval
Anthropic Console EvalsClaude 官方 eval 平台

5.3 选择建议

小项目 / 个人 → Promptfoo(YAML 一把梭)
RAG 项目     → Ragas
Python 团队   → DeepEval(写法熟悉)
LangChain 用户 → LangSmith(无缝集成)
企业级生产    → Braintrust 或自建

6. Eval 在数据飞轮里的位置

Eval 是飞轮的方向盘和刹车——没有它,飞轮越转越歪也没人发现。

              ┌────────────────────┐
              │   用户使用 Agent    │
              └─────────┬──────────┘
                        ↓ 真实数据
              ┌────────────────────┐
              │  数据收集 / 标注    │
              └─────────┬──────────┘
                        ↓
              ┌────────────────────┐
              │    Eval 评测 ⭐      │ ← 这里检查"有没有变好"
              │  (离线 + 在线 A/B)  │   "哪个版本更好"
              └─────────┬──────────┘
                        ↓
              ┌────────────────────┐
              │  改进决策(基于数据)│
              │ - 改 prompt         │
              │ - SFT / RLHF        │
              │ - 蒸馏              │
              └─────────┬──────────┘
                        ↓
              ┌────────────────────┐
              │    部署新版本       │
              └─────────┬──────────┘
                        ↓
              ┌────────────────────┐
              │  Eval 守门 ⭐        │ ← 这里阻止"变更糟"上线
              │  (回归测试 + CI)    │
              └─────────┬──────────┘
                        ↓
              (回到顶部,飞轮转一圈)

📖 数据飞轮的完整概念见 Agent 发展轨迹四阶段 § 10.7.2


7. Eval 在 Agent 架构里的位置

回顾 Agent 五层解剖图

┌────────────────────────────────┐
│         编排层                  │
├────────┬───────────┬───────────┤
│ 记忆层 │  大模型    │  执行层    │
├────────┴───────────┴───────────┤
│         反馈层 ⭐ ←—— Eval 在这里 │
└────────────────────────────────┘

反馈层(Sensors)= Eval 在 Agent 内部的实时化版本

7.1 两种时间尺度的 Eval

时间尺度名字在哪触发时机
微秒级Sensors(实时反馈)Agent 运行时工具调用失败、lint 报错 → Agent 自修复
小时/天级离线 EvalCI / 训练流水线改了 prompt / 模型后跑
天/周级在线 A/B生产环境灰度发布新版本

7.2 Eval 与回归测试

回归测试 = 软件工程的 Eval

每修一个 bug:

  1. 把这个 bug 抽象成一条 eval 样本
  2. 加进 Eval 回归集
  3. 以后每次改动都跑——确保老 bug 不会复活

这个习惯一旦养成,Agent 的稳定性会指数级提升。


8. 经典误区与陷阱

8.1 ⚠️ 过拟合 Eval Set

现象:你的 prompt 在 eval set 上准确率 99%,上线却拉胯。

原因:你不停看 eval set、改 prompt、再看 eval set——本质上是在 eval set 上”训练”了 prompt

对策

  • 留一个从来不看的私藏集(Holdout Set)
  • 定期换新数据进 eval set
  • Eval set 不能比真实分布偏太远

8.2 ⚠️ Goodhart’s Law(古德哈特定律)

“当一个指标变成目标,它就不再是个好指标。”

现象:你把”答案长度”当作质量指标 → 模型学会写长答案 → 长但啰嗦。

对策

  • 多个互相制衡的指标(准确率 + 简洁度 + 用户满意度)
  • 永远保留一个”无量化人工抽查”的兜底

8.3 ⚠️ 只看总分不看切片

现象:总准确率 87% 看着不错,但拆开看——

  • 简单任务 99% ✅
  • 困难任务 30% ❌
  • 边角任务 10% ❌

总分被简单任务”掩盖”了真实问题。

对策

  • 永远按 任务类型 / 难度 / 用户群 切片看
  • Dashboard 优先看最低分的切片

8.4 ⚠️ LLM-as-Judge 的隐藏偏见

偏见表现
位置偏见让裁判选 A 或 B,它倾向选第一个
冗长偏见长答案默认被认为质量高
自我偏好裁判 AI 倾向于自己风格的回答

对策

  • 让裁判 AI 评同一对答案两次(A vs B 和 B vs A),取一致结果
  • 设定明确评分维度(不让它笼统打分)
  • 用人工标 200 条做”金标”,校准 Judge 的可靠度

8.5 ⚠️ “我先把功能做完,最后再做 Eval”

现实:项目永远做不完,Eval 永远排不上。等你想做时,已经积累了 50 个版本,每个都不知道好坏。

对策

  • Day 1 就建 eval set(10 条就够)
  • 每加一个新功能,先加 5 条 eval
  • 把跑 Eval 加进 Git pre-commit / CI

9. 落地路径:小白怎么开始

9.1 第一周:手搓 10 题

1. 打开 Excel / Markdown 表格
2. 写下 10 个"我希望 Agent 能正确处理"的真实问题
3. 给每个问题写"标准答案"或"成功标准"
4. 手动跑一遍,记录得分
5. 改 prompt,再跑一遍,对比分数

这就是你的 v0 Eval。有比没有强 100 倍

9.2 第一月:自动化 + 切片

1. 把 Excel 转成 YAML / JSON
2. 用 Promptfoo 跑(10 行配置就够)
3. 把题目按"类型"打标签(工具调用 / 写作 / 数学)
4. 每次出报告时按标签切片看
5. 把 Eval 跑加到 Git pre-commit

9.3 持续:飞轮启动

1. 用户每报一个 bug → 加一条 eval
2. 每周一花 30 分钟看 Eval 趋势
3. 准确率开始下降时立刻定位(哪个切片在跌)
4. 发版前必跑 eval,分数低于阈值就阻止上线

9.4 进阶:LLM-as-Judge + A/B

1. 选一个强模型当裁判(GPT-4 / Claude Opus)
2. 给它写明确的评分 rubric
3. 用人工标 200 条做校准
4. 上线后跑在线 A/B 测试

10. 与本知识库其他章节的关联

关联点文档关系
Agent 反馈层Harness工程与Agent解剖 § 4Eval 是反馈层在”开发/上线时”的版本
数据飞轮Agent发展轨迹四阶段 § 10.7.2Eval 是飞轮的方向盘和刹车
Agent 架构师硬技能Agent发展轨迹四阶段 § 10.4Eval 是 PPT 漏掉、本库特别强调的核心硬技能
训练技术模型训练技术速查RFT 等训练方法严重依赖 Eval(用 Eval 当筛子)
RAG 系统RAG 学习笔记RAG 的 4 大评测指标(§ 4.2)
Token 经济上下文窗口与Token计费Cost 指标的物理基础
Multi-Agent 中的 Eval 角色Multi-Agent 工程实战与 Persona 设计7 人团队中的”复盘官”实际上就是在跑 LLM-as-Judge + 离线 Eval,可对照本文的四大类 Eval 看真实工程实现
LLM 失败模式与 Goodhart’s Law 的具象LLM 典型失败模式本文讲”度量层”问题,该文讲”度量对象本身”会因 Goodhart’s Law 表演性完成;两者必须搭配阅读

附:术语速查

术语含义
Eval Set测评数据集
Golden Set黄金集,最高质量的核心样本
Hard Set困难集,专门考弱点的样本
Holdout Set私藏集,永远不让模型/开发者看到
Regression Set回归集,已修 bug 对应的样本
LLM-as-Judge用 AI 当裁判
Faithfulness忠实度(生成内容是否基于检索内容)
Hallucination幻觉(生成虚假事实)
Goodhart’s Law指标一旦变成目标就不再是好指标
Rubric评分细则
Holdout留作最终验证的私有数据集

创建时间: 2026-05-04