1. 概述
为什么需要专门的Agent测试框架
AI Agent(智能体)不同于传统的LLM对话模型,它具备自主规划、工具调用、多步推理和环境交互等能力。Agent不仅需要生成文本,还需要在真实或模拟环境中执行一系列操作来完成复杂任务。这使得传统的静态Benchmark评测方法难以全面评估Agent的能力。
- 多步决策链:Agent需要经过多轮思考-行动-观察循环,评测必须覆盖完整轨迹而非单次输出
- 工具使用能力:Agent需要正确选择和调用API、数据库、文件系统等工具,评测需验证工具调用的正确性和效率
- 环境交互:Agent在Web页面、代码仓库、操作系统等环境中操作,评测需要可复现的沙箱环境
- 任务完成度:不同于简单的正确/错误判断,Agent任务需要评估部分完成度、路径效率和鲁棒性
Agent评估的核心挑战
| 挑战 | 描述 | 影响 |
|---|---|---|
| 环境可复现性 | 需要为每个测试用例提供一致的初始状态 | 评测结果的公平性和可比性 |
| 轨迹评估 | 如何量化多步操作序列的质量 | 无法区分"碰巧成功"和"真正理解" |
| 部分完成度 | 任务未完全成功但有进展如何计分 | 评分粒度过粗无法反映能力差异 |
| 安全性隔离 | Agent执行危险操作时需安全沙箱 | 评测环境的安全性保障 |
| 规模化执行 | 大量Agent并发评测的资源消耗 | 评测成本和效率 |
| 评估自动化 | 如何自动判断复杂任务的完成状态 | 人工评估成本高且主观性强 |
2. AgentBench
多维度Agent评估基准
AgentBench 是由清华大学、智谱AI等联合提出的首个系统性Agent评估基准,发表于 ICLR 2024。它首次将Agent评估从单一任务扩展到多维度、多环境的综合评测体系,涵盖8个代表性环境,覆盖代码、游戏、Web、工具使用等多个领域。
8个环境任务
| 环境 | 任务类型 | 核心能力 | 难度 |
|---|---|---|---|
| Operating System (OS) | 在Linux终端中执行文件操作、系统管理任务 | 命令行操作、Shell脚本 | ⭐⭐⭐⭐ |
| Database (DB) | SQL查询、数据库管理操作 | SQL编写、数据分析 | ⭐⭐⭐ |
| Knowledge Graph (KG) | 知识图谱查询、实体关系推理 | 结构化知识理解 | ⭐⭐⭐ |
| Web Shopping (WS) | 在模拟电商网站中搜索、筛选和购买商品 | Web导航、决策推理 | ⭐⭐⭐⭐ |
| Web Browsing (WB) | 在真实网页中查找信息、完成表单 | 网页理解、信息提取 | ⭐⭐⭐⭐ |
| Code (CD) | 代码补全、Bug修复、代码理解 | 编程能力 | ⭐⭐⭐⭐⭐ |
| Digital Card Game (DCG) | 在Aquawar卡牌游戏中制定策略 | 策略推理、长期规划 | ⭐⭐⭐⭐ |
| Lateral Thinking Puzzle (LTP) | 海龟汤谜题推理,通过提问获取信息 | 推理、信息获取策略 | ⭐⭐⭐ |
评估指标
- 成功率 (Success Rate, SR):任务是否完全达标的二值指标
- 任务得分 (Task Score):对部分完成的细粒度打分(0-100)
- 平均步数 (Average Steps):完成任务所需的交互轮次
- 工具调用准确率 (Tool Call Accuracy):工具选择和参数传递的正确率
使用方法
# 1. 克隆仓库
git clone https://github.com/THUDM/AgentBench.git
cd AgentBench
# 2. 安装依赖
pip install -e .
# 3. 配置API密钥
export OPENAI_API_KEY="your-key"
# 4. 运行评测(以OS环境为例)
python -m agentbench.run --task os --model gpt-4 --output results/
# 5. 查看结果
python -m agentbench.analyze --result_dir results/
3. WebArena
真实Web环境中的Agent评估
WebArena 是由卡内基梅隆大学(CMU)提出的真实Web环境Agent评测基准。与简化的模拟环境不同,WebArena构建了完整的、功能性的Web应用环境(包括电商、社交论坛、GitLab、地图和CMS等),Agent需要像人类一样在这些真实网站中完成信息检索和操作任务。
环境组成
| 网站类型 | 模拟平台 | 任务示例 |
|---|---|---|
| 电商平台 | OneStopShop (仿Amazon) | 按条件搜索商品、添加到购物车、结算 |
| 社交论坛 | Reddit-like Forum | 浏览帖子、发布评论、投票 |
| 代码托管 | GitLab | 创建Issue、提交MR、查看CI/CD状态 |
| 地图服务 | OpenStreetMap | 搜索地点、规划路线 |
| 内容管理 | WordPress CMS | 编辑文章、管理分类、修改配置 |
任务类型
WebArena包含812个手工设计的Web交互任务,分为三类:
- 信息检索 (Information Seeking):在网站中查找特定信息,如"找到2023年评分最高的科幻书籍"
- 站点导航 (Site Navigation):理解网站结构并导航到目标页面
- 内容操作 (Content & Configuration):修改内容、配置参数、执行CRUD操作
评估指标
- 任务成功率 (Task Success Rate):基于功能级别的自动评估函数验证最终状态
- 步数效率 (Step Efficiency):实际步数 / 最优步数
- 动作有效性 (Action Validity):操作是否合法(不产生无效点击或错误动作)
4. SWE-bench / CygBench
代码工程场景的Agent评估
SWE-bench(Software Engineering Benchmark)是由普林斯顿大学提出的真实软件工程任务评测基准,专门评估Agent在代码仓库中定位Bug、生成补丁的能力。它从GitHub上的真实Python开源项目中提取了2,294个Issue-PR对,要求Agent根据Issue描述在代码库中找到问题并生成修复代码。
任务设计
| 要素 | 说明 |
|---|---|
| 数据来源 | 12个知名Python项目(Django、Flask、SymPy等)的真实GitHub Issue |
| 任务输入 | Issue描述 + 代码仓库的完整快照 |
| Agent操作 | 浏览文件、搜索代码、编辑文件、运行测试 |
| 提交格式 | 生成Git patch文件(diff格式) |
| 验证方式 | 应用补丁后运行项目的单元测试套件 |
SWE-bench Verified
由于部分原始任务存在描述不清晰、测试不充分等问题,OpenAI联合社区推出了SWE-bench Verified子集,包含500个经过人工验证的高质量任务,已成为业界评估代码Agent能力的标准基准。
评估流程
- 提供Agent Issue描述和代码仓库
- Agent自主探索代码库、定位问题根因
- Agent生成代码修改(patch)
- 在容器中应用patch并运行测试用例
- 通过的测试数 ≥ 原PR的测试数即为成功
主要发现
- 截至2024年,最佳Agent(如Devin、SWE-agent)的解决率为12-26%,人类开发者约为85%
- 主要失败原因:定位错误(找不到问题代码)、修复不完整(只解决表面问题)
- 代码Agent的核心瓶颈在代码库理解而非代码生成能力
5. 其他框架
ToolBench
ToolBench 专门评估LLM的工具使用能力,由清华大学和智谱AI提出。它构建了大规模的指令-工具配对数据集,覆盖16,000+真实API(来自RapidAPI),涵盖49个类别。
- 单工具任务:给定指令,选择并正确调用一个API
- 多工具任务:需要组合多个API调用完成复杂目标
- 工具推理:根据工具文档理解不熟悉的API用法
评估指标包括工具选择准确率、参数提取F1、任务完成率等。
API-Bank
API-Bank 是另一个知名的工具使用评测基准,包含73个API和314个工具使用对话。它聚焦于以下能力维度:
- API检索:从候选API中选出正确的那个
- API规划:确定API调用的顺序和依赖关系
- API调用:生成正确的API请求参数
- 响应理解:理解API返回结果并决定下一步
GAIA
GAIA 是由Meta AI、Hugging Face等联合提出的通用AI助手评测基准,专为评估需要多步推理、工具使用和Web浏览能力的通用Agent设计。其特点:
- 问题设计:面向人类的简单问题(人类准确率92%),但对AI极具挑战(GPT-4仅15%)
- 多步推理:平均需要2-5步操作才能得出答案
- 答案精确:答案是一个明确的字符串或数字,避免主观评分
- 真实场景:需要搜索网页、处理文件(PDF/Excel)、调用工具
GAIA的Level 1-3难度递进,分别测试基础信息检索、多源推理和复杂多工具协作能力。
6. 工具对比
| 框架 | 评测领域 | 环境类型 | 任务数 | 开源 | 资源需求 | 适合场景 |
|---|---|---|---|---|---|---|
| AgentBench | 通用Agent能力 | 模拟/真实混合 | 1,000+ | ✅ | 中 | 全面评估、快速对比 |
| WebArena | Web操作 | 真实Web应用 | 812 | ✅ | 高 | Web Agent专项评测 |
| SWE-bench | 代码工程 | 真实代码仓库 | 2,294 | ✅ | 高 | 代码Agent能力评估 |
| ToolBench | 工具使用 | API模拟 | 16,000+ API | ✅ | 中 | 工具调用专项评测 |
| API-Bank | 工具使用 | API模拟 | 314对话 | ✅ | 低 | 轻量级工具评测 |
| GAIA | 通用推理+工具 | 真实Web | 466 | ✅ | 高 | 端到端Agent能力评估 |
选型建议
- 快速摸底:首选 AgentBench,覆盖维度最广,上手最快
- Web Agent专项:WebArena 提供最真实的Web交互评测
- 代码Agent专项:SWE-bench Verified 是业界标准
- 工具调用专项:ToolBench(深度)或 API-Bank(快速)
- 端到端能力:GAIA 作为综合能力试金石
7. 实战演练
任务一:使用AgentBench快速评测一个Agent
目标:使用AgentBench的OS环境评测一个LLM作为Agent的基础操作能力。
| 步骤 | 操作 | 预期结果 |
|---|---|---|
| 1 | 克隆AgentBench仓库并安装依赖 | 环境就绪,可运行示例任务 |
| 2 | 配置要评测的模型API | 模型可正常调用 |
| 3 | 运行OS环境评测(10个任务) | 获得成功率、步数等指标 |
| 4 | 分析失败案例的Agent轨迹 | 识别Agent的典型失败模式 |
| 5 | 编写评测报告 | 包含指标、案例和优化建议 |
任务二:构建自定义Web Agent评测场景
目标:基于WebArena框架,创建一个银行内部系统场景的评测任务。
| 步骤 | 操作 | 预期结果 |
|---|---|---|
| 1 | 搭建WebArena Docker环境 | 5个Web应用正常运行 |
| 2 | 创建5个银行场景任务(如:查询交易记录、提交审批单) | 任务JSON配置完成 |
| 3 | 编写对应的评估函数 | 自动判断任务是否完成 |
| 4 | 用内部模型运行评测 | 获得场景化的Agent表现数据 |
| 5 | 对比不同Prompt策略的效果 | 找到最优的Agent配置方案 |
任务三:搭建Agent回归测试流水线
目标:建立可持续的Agent评测机制,实现Agent能力退化监控。
| 步骤 | 操作 | 预期结果 |
|---|---|---|
| 1 | 从3个框架中各选取20个代表性任务 | 60个任务的精选评测集 |
| 2 | 编写自动化评测脚本(Python) | 一键运行完整评测流水线 |
| 3 | 建立Baseline数据 | 当前Agent的能力基线 |
| 4 | 配置CI/CD定时任务(每周执行) | 自动运行并生成报告 |
| 5 | 设置退化告警阈值(成功率下降>10%触发告警) | Agent能力漂移可及时发现 |