09. Agent 应该怎么评测?
整理 Agent 的评测维度、核心指标与常用 Benchmark。
简单回答
Agent 评测比普通 LLM 评测复杂得多,因为需要评估的不只是最终输出的质量,还有决策过程的合理性、工具使用的正确性、以及端到端的任务完成率。核心指标包括任务成功率(task completion rate)、步骤效率(完成任务用了多少步)、工具调用准确率、以及延迟和成本。评测方法包括人工评测、基于 benchmark 的自动评测(如 WebArena、SWE-bench)、以及 LLM-as-Judge。
详细解释
Agent 评测为什么难
普通 LLM 评测主要看"给一个输入,输出好不好"——本质上是一个输入输出映射的质量评估。Agent 评测要复杂得多,因为 Agent 的"输出"不只是最终回答,还包括整个决策过程——调了什么工具、什么顺序、传了什么参数、中间推理对不对。
一个 Agent 可能最终给出了正确答案,但过程非常低效(调了 20 次工具才得到一个本该 3 次就搞定的结果)。或者最终答案看起来对,但中间有一步工具调用返回了错误数据,恰好被其他步骤的正确结果覆盖了——这种"侥幸正确"在工程上是不可接受的。
另一个难点是非确定性。同一个任务给同一个 Agent 跑两次,可能走完全不同的路径。评测需要多次运行取统计结果,成本很高。
核心评测维度
任务完成率(Task Completion Rate / Success Rate) 是最核心的指标。给 Agent 一批测试任务,看它能成功完成多少。"成功"的定义需要根据任务类型具体化——如果是信息检索任务,"正确回答了问题"算成功;如果是操作类任务(如"帮我创建一个 GitHub issue"),需要检查操作是否真的被执行了且参数正确。
步骤效率(Step Efficiency) 评估 Agent 完成任务用了多少步。同样的任务,A 用了 3 步完成、B 用了 10 步才完成,A 的效率更高。这个指标反映了 Agent 的规划能力和工具选择能力。
工具调用准确率 包括两个子维度:选择准确率(是否选了正确的工具)和参数准确率(是否传了正确的参数)。可以用标注的"黄金路径"(golden trajectory)作为参考——在这个任务上理想的工具调用序列是什么,Agent 的实际调用序列和它有多大偏差。
答案质量 对于最终生成回答的 Agent(比如 RAG Agent),还需要评估最终回答的准确性、完整性和忠实度——这和前面 RAG 评测的生成端指标是一样的。
延迟和成本 包括端到端的响应时间和 token 消耗。Agent 的延迟波动通常比较大(取决于工具调用次数和每次调用的耗时),需要看分位数(P50、P90、P99)而不只是均值。
评测方法
人工评测 最可靠但成本最高。让人类评审员给 Agent 出任务、检查执行过程和最终结果、打分。适合做小规模的深度评估,或者验证自动化评测方法的准确性。
基于 Benchmark 的自动评测 使用标准化的评测数据集。几个主流的 Agent Benchmark:
SWE-bench 专门测代码 Agent 的能力——给一个真实的 GitHub issue 和代码仓库,让 Agent 生成修复 patch,自动运行测试用例检查是否修复成功。这是目前最硬核的 Agent benchmark 之一。
WebArena 测 Web Agent——在真实的 Web 环境中让 Agent 完成任务(如"在 Reddit 上发一个帖子""在电商网站上找到最便宜的商品"),通过检查最终状态判断成功与否。
GAIA 是一个通用 Agent benchmark,包含一系列需要多步推理和工具使用的问题。
LLM-as-Judge 用一个更强的 LLM 来评估 Agent 的表现。可以评估最终回答的质量、工具选择的合理性、推理过程的逻辑性等。好处是可以大规模自动化,坏处是评判 LLM 本身也可能有偏差。
回归测试 在业务中积累 bad case 作为测试集,每次改动 Agent 的 Prompt、工具、模型后跑一遍回归测试,确保没有引入新问题。这在工程实践中非常重要。
评测环境
Agent 评测的一个难点是环境搭建。Agent 要调外部工具和 API,评测时要么用真实环境(有副作用、成本高、不可复现),要么搭模拟环境(mock 工具调用的返回结果)。模拟环境更可控但可能和真实情况有偏差。
实际做法通常是两层:开发阶段用模拟环境快速迭代,上线前在真实环境(staging 环境)做最终验证。
面试时可以这样答
Agent 评测比普通 LLM 评测复杂得多,需要评估的不只是最终输出,还有整个决策过程。核心指标我一般关注几个:任务完成率是最重要的——Agent 到底能不能把任务做对;步骤效率——做对了花了多少步;工具调用准确率——工具选对了没有、参数传对了没有;延迟和成本——Agent 的延迟波动通常很大,要看 P90 而不只是均值。
方法上,人工评测最可靠但成本高。自动化评测可以用标准 benchmark——代码 Agent 用 SWE-bench,通用 Agent 用 GAIA。LLM-as-Judge 可以做大规模的过程质量评估。工程上最重要的是建回归测试集——从线上 bad case 积累,每次改动后跑一遍确保没退步。
评测环境也要注意。Agent 要调外部工具,开发阶段用 mock 环境快速迭代,上线前在真实环境做验证。
常见追问
- SWE-bench 上目前最好的 Agent 成功率是多少?瓶颈在哪?
- 你怎么定义 Agent 任务的"成功"?有灰度的情况怎么处理?
- Agent 的 A/B 测试怎么做?和传统 A/B 有什么不同?