ByteNoteByteNote
评估难题:怎么知道 Agent 好不好
字

字节笔记本

2026年10月24日 · 约 9 分钟读完

评估难题:怎么知道 Agent 好不好

API中转
¥120

专业水平的成功率与放弃率

本文是《从 0 写 Agent》系列第 44 章。这个系列基于开源项目 agents-go(OpenAI Agents SDK 的 Go 移植版),用 Go 从零实现一个生产级 Agent 运行时;本章讲「评估难题:怎么知道 Agent 好不好」。

你写了个 Agent,跑了几次感觉不错。但"感觉不错"不是评估,你怎么知道它对 1000 个不同的输入都能表现好?你怎么知道改了指令后是变好了还是变差了?

Agent 评估是工程化最难、也最被低估的问题。这一章讲为什么难,以及业界目前的实践方法。


引子:传统评估失效

传统软件的评估,测试覆盖率。写了 100 个单元测试全过,覆盖率 90%,你就有信心"代码是对的"。

Agent 不行。因为输出是概率性的(第 42 章),你没法写"输出必须等于 X"的断言。而且 Agent 的"好"是多维的,

  • 正确性,答得对不对
  • 效率,调了几次工具、花了几轮
  • 安全,有没有做危险操作
  • 体验,回答是否清晰、是否说人话

"好"是多维的,单一指标衡量不了。


用量与成本

为什么 Agent 评估难

难点一:输出非确定

同一个输入跑两次,输出可能不同。你测了一次"好",不代表每次都好。

难点二:正确性主观

"这个分析报告写得好不好",没有客观标准。不同人评判不同。

难点三:路径多样

同一个问题,Agent 可能用不同工具组合解决,调 A 再调 B,或调 C 再调 D。路径不同但结果都对,怎么评估"路径"?

难点四:长尾

Agent 可能在 95% 的情况表现好,但 5% 的边缘情况灾难性失败。你要测足够多的样本才能覆盖长尾。


业界实践:四种评估方法

方法一:回归测试集(离线 benchmark)

收集一批"已知好"的输入输出对,新版本跑这些输入,比较输出。

text
测试集:100 个 {输入, 期望特征} 对
新版本跑这 100 个输入
检查:输出是否仍然满足"期望特征"

"期望特征"不是精确输出(因为概率性),而是,

  • 结构正确(是合法 JSON、有必需字段)
  • 关键信息对(提到的数据正确)
  • 安全合规(不含 PII、没做危险操作)
  • 质量达标(由人或 LLM 评判)

agents-go 的 CollectingExporter(第 27 章)可以帮你收集 trace,作为测试集的基础。

方法二:LLM-as-Judge

用一个强模型评判另一个模型的输出质量。

go
// 评判 Agent 的输出
judgePrompt := `请给这个客服回答打分(1-10),标准:
- 准确性:信息对不对
- 完整性:有没有漏
- 语气:是否礼貌专业
Agent 的回答:{{output}}
用户的提问:{{input}}
打分:`

score := callLLM(judgePrompt)

这呼应前面 SkillOpt 那篇,"用模型验证模型"是 Agent 评估的主流方法。 人评判太慢,LLM 评判可以规模化。

局限,评判模型本身可能不准。 通常用比被评 Agent 更强的模型当 judge(比如用 GPT-5 评判 GPT-4-mini 的输出)。

方法三:在线评测(A/B 测试)

真实用户使用,收集反馈。 比"离线评测"更真实,

  • 用户点了"赞"还是"踩"
  • 用户有没有重新提问(不满意才重问)
  • 用户有没有手动修改 Agent 的输出
  • 任务完成率(用户最终解决问题了吗)

在线评测最可信,但最贵、最慢。 通常是最后一步,离线评测通过了,再上线上 A/B。

方法四:自动化属性检查

不断言具体内容,断言"属性",

go
// 属性检查(可自动化)
assert(validJSON(output))            // 是合法 JSON
assert(len(output) < maxLength)      // 不超长
assert(!containsPII(output))         // 不含 PII
assert(toolCalls < maxTools)         // 工具调用不过多
assert(duration < maxLatency)        // 延迟不超标

属性检查可以 CI 化,每次改 Agent 配置,自动跑属性检查。虽然不能保证"质量好",但能保证"不出低级问题"。


设计权衡:评估的投入产出

评估方法从便宜到贵:

方法成本可信度适合
属性检查低低(只查低级问题)CI 自动化
回归测试集中中版本对比
LLM-as-Judge中中-高规模化质量评测
人工评测高高关键场景
在线 A/B最高最高上线前最后验证

推荐组合,CI 跑属性检查 + 每次发版跑回归集 + LLM-as-Judge 定期评 + 关键更新做 A/B。


评估要测什么:多维指标

维度指标怎么测
正确性答案对不对人工/LLM judge
工具效率平均调几次工具trace 统计
成本平均花多少 tokenUsage 统计
延迟P50/P95/P99 响应时间trace 时间
安全危险操作拦截率guardrail 触发统计
用户满意点赞率/重问率在线反馈

不要只测"正确性"。 一个"每次都对但调 20 次工具花 10 秒"的 Agent,用户体验极差。多维评估才全面。


agents-go 支持评估的特性

特性怎么帮评估
Tracing(第 25-27 章)完整执行轨迹,可统计工具次数、延迟
Usage 记录token 消耗,成本评估
CollectingExporter收集 trace 做测试集
结构化输出输出可解析,便于属性检查
Lifecycle Hooks每步记录,便于路径分析

agents-go 的可观测性设计,本身就是为评估打基础。 没有 trace,你连"Agent 调了几次工具"都不知道,评估无从谈起。


小结:评估是被低估的核心能力

读完这一章,你应该理解:

  1. Agent 评估难,非确定、主观、路径多样、长尾
  2. 四种方法,属性检查、回归集、LLM-judge、在线 A/B
  3. 多维指标,不只测正确性,还要测效率/成本/延迟/安全/满意
  4. agents-go 的可观测性是评估基础,trace/usage/hooks 支撑评估数据收集

核心洞察,"能评估"比"能跑"更难、更重要。 很多团队能做出"看起来不错的 Agent demo",但无法评估"它到底有多好",这导致不敢上生产。建立评估体系,是 Agent 从 demo 到生产的关键一跃。


Part VIII 回顾

第 41-44 章,从"怎么写"深入到"为什么有效":

章节主题
41 ReActAgent 的认知科学基础
42 概率性系统给不确定性加边界
43 LLM 作为大脑为什么 LLM 适合做决策核心
44 评估难题怎么知道 Agent 好不好

理解了原理,你不仅能"写 Agent",更能"判断 Agent 该不该用、用得好不好"。


下一篇

第 45 章,进入 Part IX 实战案例,从 0 写一个客服 Agent。把前面学的所有东西(循环、工具、Session、HITL、Guardrails)组合起来,做一个真实可用的客服系统。


本文是《从 0 写 Agent》系列第 44 章,案例代码基于开源项目 agents-go(OpenAI Agents SDK 的 Go 移植版)。全系列目录见总览。

相关文章

分享: