跳到主要内容

Agent 评估

问题

如何评估 Agent 的能力?有哪些评估指标和基准?

答案

Agent 评估比单纯的 LLM 评估更复杂,需要评估规划、工具使用、任务完成等多个维度。

一、评估维度

维度指标说明
任务完成率Success Rate最终是否完成了目标
步骤效率Step Count完成任务所需步骤数
工具准确率Tool Accuracy选择了正确的工具和参数
成本Token/Cost完成任务的总 Token 消耗
延迟Latency端到端完成时间
鲁棒性Error Recovery遇到错误能否恢复

二、评估方法

1. 基于测试用例

test_cases = [
{
"task": "查询北京明天天气并用摄氏度显示",
"expected_tools": ["get_weather"],
"expected_output_contains": ["北京", "°C"],
"max_steps": 3,
},
{
"task": "计算 1234 * 5678 并告诉我结果",
"expected_tools": ["calculator"],
"expected_output_contains": ["7006652"],
"max_steps": 2,
}
]

def evaluate_agent(agent, test_cases):
results = []
for case in test_cases:
trace = agent.run_with_trace(case["task"])
results.append({
"success": check_output(trace.output, case["expected_output_contains"]),
"correct_tools": check_tools(trace.tool_calls, case["expected_tools"]),
"steps": len(trace.steps),
"within_budget": len(trace.steps) <= case["max_steps"],
"tokens": trace.total_tokens,
})
return aggregate(results)

2. LLM-as-Judge

JUDGE_PROMPT = """评估以下 Agent 的执行过程和结果。

任务:{task}
执行步骤:{steps}
最终结果:{result}

请从以下维度评分(1-5):
1. 任务完成度:任务目标是否实现?
2. 执行效率:步骤是否简洁合理?
3. 工具使用:工具选择是否正确?
4. 结果质量:输出是否准确有用?
"""

三、主流 Benchmark

基准测试内容难度
SWE-bench解决 GitHub Issue高(代码修改)
GAIA多步推理+工具使用高(综合)
WebArena网页操作(点击、填写)中(浏览器操作)
ToolBench工具选择和调用
AgentBench多环境综合评估中-高
HumanEval代码生成中(单函数)

四、生产环境监控

# Agent 执行的关键监控指标
METRICS = {
"success_rate": "任务成功率(P50/P90/P99)",
"avg_steps": "平均步骤数",
"avg_latency": "平均响应时间",
"avg_cost": "平均每次任务成本",
"tool_error_rate": "工具调用失败率",
"loop_rate": "陷入循环的比例",
"human_escalation_rate": "需要人工介入的比例",
}

常见面试问题

Q1: Agent 评估和 LLM 评估有什么区别?

答案

维度LLM 评估Agent 评估
关注点输出质量任务完成 + 过程质量
确定性相对确定高度不确定(多步骤)
评估成本高(需要实际执行)
指标BLEU、准确率成功率、效率、成本

Q2: 如何持续改进 Agent 的表现?

答案

  1. 收集失败案例:分析失败原因(规划错误?工具错误?幻觉?)
  2. 优化 Prompt:根据失败模式调整 System Prompt 和工具描述
  3. 添加防护:对高频错误添加检查和兜底逻辑
  4. A/B 测试:新版本灰度发布,对比核心指标

相关链接