基于 Traces 数据的 Agent 评测方案
Trace 数据是 Agent 全执行链路的结构化日志(包含规划、工具调用、记忆、推理、输出的每一步输入输出与状态),基于 Trace 做评测的核心价值是跳出「只看最终答案」的局限,实现过程级精准判分与错误归因,是大厂 Agent 质量体系的核心手段。
一、前置:Trace 数据标准结构
用于评测的 Trace 数据必须是结构化的全链路数据,单条任务 Trace 标准字段如下:
{"task_id":"唯一任务ID","user_query":"用户原始输入","expected_goal":"任务预期目标","success_criteria":"任务成功判定标准","total_steps":总步数,"trace_steps":[{"step_id":步骤序号,"step_type":"planning/tool_call/tool_result/reasoning/memory_update/final_output","input":"该步骤输入内容","output":"该步骤输出内容","timestamp":时间戳,"duration_ms":步骤耗时,"status":"success/failed/error","metadata":{"tool_name":"工具名称(工具调用步骤必填)","tool_params":"工具入参","error_msg":"错误信息(失败步骤必填)"}}],"final_answer":"Agent 最终输出","token_usage":{"input_tokens":0,"output_tokens":0,"total_tokens":0}}权威参考:LangSmith Trace 数据规范、OpenTelemetry 链路追踪标准
二、完整评测执行流程(基于 Trace 数据)
步骤1:Trace 数据导入与清洗
- 数据接入:支持两种来源
- 在线链路采集:通过 LangSmith、OpenTelemetry 等埋点工具导出的 Trace 数据集
- 离线评测产出:EvalScope 等框架执行评测后输出的全链路 Trace 日志
- 清洗校验:过滤步骤缺失、字段不全、状态异常的无效 Trace,确保每条 Trace 覆盖从用户输入到最终输出的完整链路
- 标注关联:将每条 Trace 与对应测试用例的「预期目标、成功标准、参考路径」关联,为判分提供依据
步骤2:客观过程指标自动计算(无需模型,100%准确)
直接基于 Trace 步骤数据统计,这是过程评测的核心量化指标:
| 指标大类 | 具体计算规则 |
|---|---|
| 规划能力指标 | 子任务拆分完整度=拆分出的必要子任务数/预期必要子任务数;规划迭代次数;异常回退触发率 |
| 工具调用指标 | 工具选择准确率=选对工具的次数/总工具调用次数;参数填充正确率;调用成功率;重试有效率;平均单次调用耗时 |
| 记忆能力指标 | 关键信息召回率=正确使用的上下文关键信息数/总关键信息数;实体记忆准确率;多轮上下文遗忘率 |
| 效率成本指标 | 总执行步数;端到端总耗时;总Token消耗量;单步平均耗时 |
| 稳定性指标 | 异常步骤占比;错误恢复成功率;熔断触发次数 |
步骤3:LLM-as-Judge 过程化判分(基于全链路 Trace)
核心差异:传统 Judge 只看「用户问题+最终答案」,基于 Trace 的 Judge 会输入完整执行链路,实现步骤级评审,判分更精准、可输出错误根因。
判分 Prompt 核心结构(对齐大厂标准)
【角色】你是专业的Agent评测裁判,严格基于给定的任务标准和完整执行链路进行打分,禁止引入外部知识。 【任务输入】 用户需求:{user_query} 任务成功标准:{success_criteria} 参考执行路径:{reference_steps} 【Agent完整执行链路Trace】 {trace_steps的结构化展开,每一步标注类型、输入、输出、状态} 【评分要求】 1. 从4个维度分别打分,0-5分制,维度:任务完成度、规划合理性、工具调用准确性、推理逻辑一致性 2. 每个维度必须先说明扣分点和依据,再给出分数 3. 标注核心错误类型:规划错误/工具错误/记忆错误/推理错误 4. 严格按执行链路评判,最终答案正确但过程存在严重冗余/错误的,必须扣分 【输出格式】 任务完成度:X分 规划合理性:X分 工具调用准确性:X分 推理逻辑一致性:X分 核心错误类型:xxx 扣分详情: 1. xxx 2. xxx可信度保障
- 裁判模型能力需显著强于被测模型,温度系数固定为0
- 随机抽取10%样本做双裁判交叉验证,分差≥1分进入人工复核
- 每月用人工金标准集校准 Kappa 一致性系数,≥0.7为合格
步骤4:错误自动分桶与根因定位
基于 Trace 步骤的错误发生节点与特征,自动完成错误归类,替代人工逐案分析:
| 错误类型 | Trace 判定规则 |
|---|---|
| 规划类错误 | 规划步骤遗漏必要子任务;步骤顺序逻辑颠倒;遇到异常未调整规划直接终止;过度规划冗余步骤 |
| 工具类错误 | 工具选择与需求不匹配;入参格式/取值错误;调用失败后未重试;重复无效调用同一工具 |
| 记忆类错误 | 后续步骤未使用前文已获取的关键信息;实体信息在多步后出现偏差;遗忘用户前置约束条件 |
| 推理类错误 | 工具返回结果解读错误;推理链条存在逻辑矛盾;最终结论与执行过程不符;出现幻觉信息 |
| 工程类错误 | 工具调用超时/接口报错;解析异常导致流程中断;系统级错误 |
分桶后自动统计各类错误占比、Top 高频错误点,直接输出优化方向,而非笼统给出「效果不好」的结论。
步骤5:报告输出与基线对比
- 输出整体评测报告:包含各维度综合得分、过程指标明细、错误类型分布
- 与历史基线版本做同比,标记指标升降幅,核心指标下降≥1.5%触发质量告警
- 输出典型 BadCase 明细,附带完整 Trace 链路与错误标注,直接用于优化迭代
三、主流工具落地实现方式
LangSmith Evaluation
- 支持直接导入已有的 Trace 数据,配置自定义评估器实现过程化判分
- 内置步骤级对比、版本对比、错误聚类能力
- 权威来源:https://docs.smith.langchain.com/evaluation
EvalScope
- 离线评测执行后自动输出全链路 Trace 数据
- 支持自定义评估器加载本地 Trace 数据集做二次分析与分桶
- 权威来源:https://github.com/AlibabaResearch/evalscope
自定义实现
- 基于结构化 Trace 数据,用 Python 脚本实现客观指标计算 + LLM Judge 过程化判分 + 错误自动分桶,轻量可定制
四、核心落地价值
- 归因精准:不再只知道「分数掉了」,而是精准定位是哪一步、哪类能力出了问题
- 评测复用:同一份 Trace 数据可反复用于不同维度的评测,无需重复执行Agent,大幅降低成本
- 闭环高效:Trace 数据直接对接优化环节,BadCase 可直接用于 Prompt 优化、策略调整后的回归验证