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 的表现?
答案:
- 收集失败案例:分析失败原因(规划错误?工具错误?幻觉?)
- 优化 Prompt:根据失败模式调整 System Prompt 和工具描述
- 添加防护:对高频错误添加检查和兜底逻辑
- A/B 测试:新版本灰度发布,对比核心指标