评估方法综述
概述
AI Agent的评估与传统LLM评估有本质不同。传统LLM评估关注的是单次输入-输出的质量,而Agent评估需要考虑多步骤交互、工具使用、环境操作等复杂因素。如何全面、准确地评估Agent能力,是推动Agent技术进步的关键问题。
Agent评估 vs LLM评估
| 维度 | LLM评估 | Agent评估 |
|---|---|---|
| 输入输出 | 单次prompt → response | 多轮交互序列 |
| 评估对象 | 文本质量 | 任务完成度 |
| 环境依赖 | 无外部环境 | 依赖工具和环境 |
| 非确定性 | 较低 | 高(多路径、多策略) |
| 评估成本 | 较低 | 较高(环境搭建、运行时间) |
| 中间过程 | 不关注 | 需要评估(效率、安全性) |
评估维度
graph TD
A[Agent评估维度] --> B[任务完成度]
A --> C[效率]
A --> D[安全性]
A --> E[成本]
A --> F[用户满意度]
B --> B1[成功率]
B --> B2[部分完成度]
B --> B3[正确性]
C --> C1[步骤数]
C --> C2[Token消耗]
C --> C3[时间消耗]
D --> D1[安全违规数]
D --> D2[权限使用合理性]
D --> D3[数据保护]
E --> E1[API调用成本]
E --> E2[计算资源]
E --> E3[人工干预成本]
F --> F1[主观评分]
F --> F2[偏好排序]
F --> F3[可信度感知]
style A fill:#e3f2fd
任务完成度(Task Completion)
最核心的评估维度,衡量Agent是否成功完成了目标任务。
二元成功率:
\[
\text{Success Rate} = \frac{|\{t \in T : \text{completed}(t)\}|}{|T|}
\]
部分完成度:
对于复杂任务,可以分解为子目标并计算完成比例:
\[
\text{Partial Completion}(t) = \frac{\sum_{i=1}^{n} w_i \cdot \mathbb{1}[\text{subgoal}_i \text{ achieved}]}{\sum_{i=1}^{n} w_i}
\]
其中 \(w_i\) 是第 \(i\) 个子目标的权重。
效率(Efficiency)
衡量Agent完成任务所消耗的资源。
步骤效率:
\[
\text{Step Efficiency} = \frac{\text{Optimal Steps}}{\text{Actual Steps}}
\]
Token效率:
\[
\text{Token Cost} = \sum_{i=1}^{N} (c_{\text{input}} \cdot n_{\text{input}}^{(i)} + c_{\text{output}} \cdot n_{\text{output}}^{(i)})
\]
其中 \(c\) 为每token价格,\(n\) 为token数量,\(N\) 为总步骤数。
安全性(Safety)
评估Agent在执行任务过程中的安全行为:
- 权限遵守:是否只使用授权的工具和操作
- 副作用控制:是否产生不必要的环境变更
- 敏感信息处理:是否正确保护隐私数据
- 内容安全:生成的内容是否合规
成本(Cost)
\[
\text{Total Cost} = C_{\text{LLM}} + C_{\text{tool}} + C_{\text{compute}} + C_{\text{human}}
\]
各组成部分:
| 成本类型 | 说明 |
|---|---|
| \(C_{\text{LLM}}\) | LLM API调用费用 |
| \(C_{\text{tool}}\) | 外部工具/API调用费用 |
| \(C_{\text{compute}}\) | 计算资源(沙箱、GPU等) |
| \(C_{\text{human}}\) | 人工审核和干预的人力成本 |
用户满意度(User Satisfaction)
- 主观评分:用户对结果的满意度评分(1-5分)
- 偏好排序:多个Agent结果的用户偏好对比
- 可信度:用户对Agent输出的信任程度
- 可用性:交互体验的流畅度和直观性
评估方法分类
离线评估(Offline Evaluation)
使用预定义的测试集和标准答案进行评估:
- 优点:可重复、成本低、易于比较
- 缺点:覆盖范围有限、与真实场景有差距
在线评估(Online Evaluation)
在真实环境中部署Agent并收集用户反馈:
- 优点:最真实的评估
- 缺点:成本高、难以控制变量
模拟评估(Simulation-based Evaluation)
构建模拟环境来评估Agent:
- 优点:可控、可重复、支持大规模测试
- 缺点:模拟环境与真实环境的差距
LLM-as-Judge
使用LLM作为评估器:
evaluation_prompt = """
请评估以下Agent的任务完成情况:
任务目标:{task_description}
Agent执行过程:{agent_trajectory}
最终结果:{final_output}
请从以下维度评分(1-5):
1. 任务完成度
2. 执行效率
3. 安全性
4. 输出质量
并给出总体评价。
"""
注意:LLM-as-Judge存在偏见(position bias, verbosity bias),需要配合人工评估使用。
评估框架
通用评估框架设计
class AgentEvaluator:
def evaluate(self, agent, task_suite):
results = []
for task in task_suite:
# 设置环境
env = self.setup_environment(task)
# 运行Agent
trajectory = agent.run(task, env)
# 多维度评估
score = {
"completion": self.eval_completion(trajectory, task),
"efficiency": self.eval_efficiency(trajectory),
"safety": self.eval_safety(trajectory),
"cost": self.eval_cost(trajectory),
}
results.append(score)
return self.aggregate(results)
轨迹评估
Agent的执行轨迹(trajectory)包含了丰富的评估信息:
\[
\tau = (s_0, a_0, o_0, s_1, a_1, o_1, \ldots, s_T, a_T, o_T)
\]
其中 \(s_t\) 是状态,\(a_t\) 是动作,\(o_t\) 是观察。
评估维度:
- 动作合理性:每一步动作是否合理
- 恢复能力:遇到错误时的恢复能力
- 规划质量:是否有清晰的执行计划
- 工具使用:工具选择和使用是否恰当
实践建议
- 多维度评估:不要仅关注成功率,综合考虑效率、安全性和成本
- 分层评估:从简单任务到复杂任务逐步评估
- 消融研究:评估各组件(记忆、工具、规划)的贡献
- 对比基线:与无Agent方案(纯LLM)对比
- 统计显著性:多次运行取平均,报告置信区间
参考文献
- Liu, X., et al. "AgentBench: Evaluating LLMs as Agents." ICLR 2024.
- Mialon, G., et al. "GAIA: A Benchmark for General AI Assistants." ICLR 2024.
- Zhuge, M., et al. "Agent-as-a-Judge: Evaluate Agents with Agents." arXiv:2410.10934, 2024.