技术 · 深入
Agent 到底行不行:不能只看一个分数
单个分数骗人,因为它在平均两件相反的事
上线前要给 Agent 一个"行不行"的答案,但单一 LLM Judge 或榜单分数代表不了线上可靠性。可用的做法是组合指标:端到端任务成功率 · 工具选择与参数正确率 · 状态一致性 · 引用准确率 · 幻觉 / 越权率 · 恢复率 · 轮数 · 延迟 · 成本 —— 九项里前六项管"对不对",后三项管"划不划算"。再配上评测集分层(按任务类型 / 难度 / 风险 / 工具路径 / 长度 / 失败模式分层,并按用户、文档、模板、时间切分以防近重复泄漏),这套东西才能在下一次改提示词之后告诉你"是变好了还是变贵了"。
方法 · 一图看懂
1
先分层建集 — 按任务类型 / 难度 / 风险 / 工具路径 / 长度 / 失败模式分层,再按用户、文档、模板、时间切分 —— 防近重复泄漏
2
定九项指标 — 任务成功率 · 工具选择与参数正确率 · 状态一致性 · 引用准确率 · 幻觉与越权率 · 恢复率 · 轮数 · 延迟 · 成本
3
前六项管对不对 — 幻觉率与越权率要分开记 —— 前者是编,后者是越界,补救手段完全不同
4
后三项管划不划算 — 轮数、延迟、成本一起看;只看成功率会鼓励"多跑几轮",那是最容易作弊的指标
5
按对象补硬校验 — 代码任务必须执行测试;交易与权限任务必须检查真实状态,这两类不许用模型自评
6
改完再跑同一套 — 换模型 / 改提示词后重跑同一评测集,看的是九项的位移,不是总分
为什么"一个分数"必然骗人
因为两个最常被引用的指标方向相反:planning 能力与 hallucination rate 经常互相矛盾 —— 规划得越激进、步骤拆得越多,幻觉与越权的机会也越多。把它们压成一个分数,等于把"敢不敢"和"准不准"平均掉,谁也没被衡量到。同理,"成功率"可以靠多跑几轮刷高,"幻觉率"可以靠少说话刷低 —— 所以指标必须成组看,并且要能看出它是用哪一项换了哪一项。
评测集自己也要被评测
用大模型生成评测题只能算候选 —— 必须经过去重、事实校验、规则验证和人工抽检才能进集。跨页文档类任务要先把文档结构恢复出来,把"问题 / 证据页 / 答案"绑定到同一个版本,否则一次文档更新就能让整组题失效。判断依据很朴素:这套题如果自己都在漂,它给出的分数就不值得信。
原理 · 为什么有效
这套指标之所以有效,是因为它把"行不行"拆成了三个互不替代的问题:做成了没有(任务成功率)· 做得对不对(工具选择与参数正确率 · 状态一致性 · 引用准确率)· 有没有越界或编造(幻觉率 · 越权率)。再加上"花了多少代价"(轮数 / 延迟 / 成本)与"坏了能不能自己恢复"(恢复率)。单一分数之所以危险,是因为它必然对这些项做隐式加权 —— 而加权系数从不公开,于是"分数涨了"既可能是真进步,也可能只是把成本转移到了延迟上。组合指标的价值不是更复杂,而是把隐式的取舍变成显式的。
适用场景
适用:① 已经把 Agent 跑通、准备上线或准备换模型的团队(有对比需求才有评测需求);② 有多个工具与多步决策的场景 —— 单轮问答不需要这套;③ 被"上次改完到底变好没变好"困扰过的项目。不适用:① 还在做原型的阶段 —— 先让它跑通,别先建评测集;② 任务本身没有可判定的成功标准(如"帮我写点东西")—— 没有判据就没有指标;③ 一次性脚本 —— 评测成本高于收益。
自测 · 5 问
我能说出评测集是按哪几个维度分层的,以及为什么还要按用户 / 文档 / 模板 / 时间切分?
我的九项指标里,哪一项是用来防止"多跑几轮刷成功率"的?
幻觉率和越权率我是分开记的,还是混成一个"错误率"?
代码类与权限类任务,我有没有用"执行测试 / 查真实状态"这种硬校验去替代模型自评?
上次改完提示词,我是看总分变化,还是看九项各自的位移?
怎么上手 · 验证步骤
按四步搭起来:① 从线上真实失败里挑出 30~50 个样本,按失败模式分成 5~6 层,每层至少 5 条;② 给每条写好"正确长什么样"的判据,能机械判的写成断言,不能的留人工或 LLM Judge 但标注依据;③ 跑一遍基线,把九项指标都填上;④ 之后每次改提示词 / 换模型,重跑同一套,记录九项的位移。
做完回看两条:① 有没有哪一项指标悄悄消失了 —— 比如成本不记了、延迟不记了,那说明这套评测正在往"好看"的方向退化;② 抽三条"通过"的样本人工复核,看它们是真通过还是被宽判通过。两条都过,再拿它当放行依据;只跑一次就下结论,很容易把评测集当成给自己发奖状的工具。