内置 AgentLoop 模式#
让常规基准(GSM8K、AIME、IFEval、SWE-bench 等)变成多轮工具调用任务,评测模型自身的工具使用与多步推理能力。EvalScope 在每一轮执行 生成 → 解析 → 调用工具 → 观察 → 再生成,直到模型提交最终答案或达到步数上限,整个轨迹记录到 AgentTrace 用于 可视化回放。
想直接评测 Claude Code / Codex 等成品 Agent CLI,请参见 外部 Agent Bridge 模式。
何时使用#
评测模型的多步推理与工具调用能力 例:qwen-plus 在 GSM8K 上是否会主动调用
python_exec验证计算,在 AIME 上能否逐步推导并自我检查。让模型在代码修复任务中自主探索 例:在 SWE-bench 上让模型通过
bash工具读代码、跑测试、提交补丁,全程无需人工介入。接入 MCP 生态工具,扩展模型能力边界 例:给模型挂上
fetch、Brave Search 等 MCP 服务器,评测 GAIA 等需要联网检索的 benchmark。
快速开始#
最小可运行示例:让 qwen-plus 在求解 GSM8K 时通过 python_exec 验证计算。
from evalscope import TaskConfig, run_task
from evalscope.api.agent import NativeAgentConfig
task_config = TaskConfig(
model='qwen-plus',
api_url='https://dashscope.aliyuncs.com/compatible-mode/v1',
api_key='<your-key>',
eval_type='openai_api',
datasets=['gsm8k'],
limit=5,
generation_config={'parallel_tool_calls': True},
agent_config=NativeAgentConfig(
strategy='function_calling',
tools=['python_exec'],
environment='docker',
environment_extra={'image': 'python:3.11-slim'},
max_steps=5,
kwargs={'system_prompt': 'Use python_exec to verify your calculations.'},
),
)
run_task(task_config)
EvalScope 自动给模型注入 python_exec 工具定义,在 Docker 容器里执行模型生成的 Python 代码,把 stdout/stderr 作为观察回填给模型,直到模型用 submit 工具提交答案。
常用配置#
NativeAgentConfig 常用字段:
字段 |
说明 |
推荐值 |
|---|---|---|
|
交互协议 |
|
|
工具白名单 |
按需,如 |
|
工具执行环境 |
|
|
沙箱参数 |
|
|
单样本最大轮数 |
数学/QA |
|
策略参数 |
最常用 |
可选的 strategy 值:
名称 |
适用场景 |
|---|---|
|
模型支持原生 function-calling |
|
ReAct 风格,让模型先思考再行动 |
|
SWE-bench 工具调用协议 |
|
SWE-bench 反引号文本协议(模型不支持 function-calling 时) |
可选的工具(tools):
名称 |
说明 |
|---|---|
|
执行 shell 命令 |
|
执行 Python 代码 |
|
提交最终答案(自动注入,无需手动配置) |
小技巧
local环境无文件系统隔离,生产请改用docker。agent_config也接受字典形式,TaskConfig会自动转成NativeAgentConfig。
MCP 工具接入#
除了内置工具,NativeAgentConfig 通过 mcp_servers 接入任意 MCP(Model Context Protocol) 服务器——把 fetch、网页搜索、GitHub 等 MCP 生态能力一键接入评测,不必自己写工具。
安装#
pip install evalscope[mcp]
evalscope[mcp] 自带 mcp Python SDK 和 mcp-server-fetch(通用 HTTP 抓取,无需 API key)。其他 MCP server 按需安装或通过 uvx / npx 即调即用。
快速开始#
给 GAIA 评测挂上 HTTP 抓取和远端 MCP 工具:
import sys
from evalscope import TaskConfig, run_task
from evalscope.api.agent import NativeAgentConfig
from evalscope.api.agent.mcp import MCPServerConfigStdio, MCPServerConfigHTTP
task_config = TaskConfig(
model='qwen3-max',
api_url='https://dashscope.aliyuncs.com/compatible-mode/v1',
eval_type='openai_api',
datasets=['gaia'],
agent_config=NativeAgentConfig(
mcp_servers=[
# 本地启动 MCP 服务器进程
MCPServerConfigStdio(
command=sys.executable,
args=['-m', 'mcp_server_fetch', '--ignore-robots-txt'],
name='fetch',
),
# 连接远端 MCP endpoint
MCPServerConfigHTTP(
url='https://mcp.api-inference.modelscope.net/<server-id>/mcp',
headers={'Authorization': 'Bearer <TOKEN>'},
name='modelscope_tool',
),
],
),
dataset_args={'gaia': {'subset_list': ['2023_level1']}},
limit=5,
)
run_task(task_config)
配置好后,agent loop 里模型会同时看到内置工具和所有 MCP 服务器声明的工具,按名称选用。MCP 工具调用如果失败,错误信息会返回给模型让它重试,不会中断整个评测。
接入方式#
EvalScope 支持三种 MCP 传输协议,按场景选用:
配置类 |
适用场景 |
关键参数 |
|---|---|---|
|
本地启动 MCP 服务器进程 |
|
|
连接远端 Streamable HTTP endpoint(推荐) |
|
|
连接旧版 SSE endpoint |
|
所有配置类共享 name(日志显示名)和 tools(工具白名单,默认 'all')两个通用字段。完整参数列表见 源码。
小技巧
CI/生产环境推荐
python -m mcp_server_<x>+ 提前pip install,避免运行时拉包。uvx mcp-server-<x>适合临时调试,首次调用会自动安装。远端服务同时提供
/mcp和/sse时,优先选/mcp(Streamable HTTP)。
用例:SWE-bench Agentic#
swe_bench_*_agentic 系列(swe_bench_verified_agentic、swe_bench_verified_mini_agentic、swe_bench_lite_agentic)是自带 AgentLoop 的基准,所有循环参数通过 dataset_args.extra_params 传入,不读取全局 agent_config。
task_config = TaskConfig(
model='qwen-plus',
api_url='...',
api_key='...',
eval_type='openai_api',
datasets=['swe_bench_verified_mini_agentic'],
dataset_args={
'swe_bench_verified_mini_agentic': {
'extra_params': {
'action_protocol': 'toolcall', # 或 'backticks'
'max_steps': 250,
'command_timeout': 60.0,
},
},
},
limit=3,
generation_config={'max_tokens': 4096, 'temperature': 0.0},
)
run_task(task_config)
常用 extra_params:action_protocol、max_steps、command_timeout、working_dir。完整说明见 SWE-bench 数据集文档。
重要
前置依赖:pip install evalscope[swe_bench],本机已装好 Docker。
常见问题#
模型完全没有调用工具
检查
tools中的工具名拼写。确认模型支持 function-calling;不支持的可换
react或swe_bench_backticks等文本协议。用
kwargs={'system_prompt': '...'}显式引导模型调用工具。
max_steps 应该设多大
数学/简单 QA:
3–10通常够用。代码修复/SWE-bench 类:沿用默认
250,过低会大量出现max_steps_exceeded。