Toolathlon健身房
--503由本地PostgreSQL数据库支持的多工具任务,无需外部API
对LLM代理进行实际工具使用的培训和评估是困难的。大多数现有的数据集要么工具覆盖范围太窄,规模太小,要么依赖于随时间变化的实时外部API。我们介绍 Toolathlon健身房,一个拥有503个任务、25个MCP服务器和丰富模拟数据库的大规模、自包含的环境。它完全在本地运行,运行时不需要外部API调用。
Toolathlon GYM基于并扩展了以下基础设施 Toolathlon 香港科技大学NLP。任务格式、评估框架、MCP服务器接口和数据库模式设计都源于Toolathlon项目。该数据集在更大范围内应用了相同的格式,为培训和评估产生了更大、更多样化的任务池。每个任务都要求代理完成一个端到端的目标,例如从模拟企业数据库中提取数据、生成电子表格报告、安排日历事件和发送摘要电子邮件,使用一组固定的MCP(模型上下文协议)服务器作为工具。
每个任务都是完全自动化的:a preprocess/main.py 脚本在运行前设置初始工作区状态,代理使用提供的工具执行,以及 evaluation/main.py 脚本根据引用地真实性检查输出。不涉及人工评分或现场外部服务。
该数据集旨在对实践中重要的代理功能进行压力测试:跨异构工具的多步规划、读写结构化文件格式、跨系统数据同步以及在固定步骤预算下完成长期任务。我们还提供了一个使用 CAMEL-AI 在Toolathlon GYM环境中运行的框架。
快速开始
先决条件
- Docker和Docker Compose
1.构建和启动
cd Toolathlon_Pack
# Build the agent image
docker build -t toolathlon-pack:latest .
# Start PostgreSQL
docker compose up -d postgrestoolathlon_pg (PostgreSQL 15)从以下位置自动初始化 db/init.sql.gz 第一次开始。代理映像保持独立——每个任务都会生成一个新的容器。
2.运行单个任务
每个任务都在自己的临时Docker容器中运行。容器为每个任务创建,并在退出时销毁。要同时运行多个任务,请参阅 并行运行任务 在......下面
MODEL_PLATFORM=openai_compatible \
MODEL_NAME=claude-sonnet-4-5 \
MODEL_API_KEY=sk-xxx \
MODEL_API_URL=https://aihubmix.com/v1 \
bash scripts/run_containerized.sh howtocook-meal-plan-gcal传递第二个参数以覆盖默认步长限制(100):
bash scripts/run_containerized.sh howtocook-meal-plan-gcal 60任务输出被写入 dumps/// 在主机上。完整的对话轨迹保存到 dumps/// _/traj.json。每轮LLM请求/响应日志(包括原始消息和工具调用)位于 dumps/// _/camel_logs/.
验证设置:
bash scripts/test_containerized.sh3.并行运行任务
对于大规模评估,使用 run_parallel.sh 同时运行多个任务。每个任务都有自己的完全隔离的环境(专用PostgreSQL+代理容器+Docker网络),因此任务之间没有共享状态。
# Run all 503 tasks, up to 10 running concurrently
GEMINI_API_KEY=AIza-xxx \
MODEL=gemini-3-flash-preview \
PROVIDER=gemini \
IMAGE=toolathlon-pack:latest \
bash run_parallel.sh 10
# Run specific tasks, up to 5 concurrently
MODEL_PLATFORM=openai_compatible \
MODEL_NAME=claude-sonnet-4-5 \
MODEL_API_KEY=sk-xxx \
MODEL_API_URL=https://aihubmix.com/v1 \
IMAGE=toolathlon-pack:latest \
bash run_parallel.sh 5 howtocook-meal-plan-gcal wc-sales-tax-summary yf-stock-volatility-terminal并发性由基于FIFO的信号量控制——第一个参数设置同时运行的最大任务数。结果收集到CSV摘要中,网址为 benchmark_logs/fully_parallel_/summary.csv,每个任务的日志都在同一目录中。
| 环境变量 | 默认值 | 描述 |
|---|---|---|
MODEL | gemini-3-flash-preview | 型号名称 |
PROVIDER | gemini | 提供者密钥(gemini, openai, anthropic等等) |
MAX_STEPS | 100 | 每个任务的最大代理步骤数 |
IMAGE | toolathlon_pack-toolathlon:latest | 要使用的Docker镜像 |
GEMINI_API_KEY | - | Gemini提供商的API密钥 |
MODEL_API_KEY | - | 其他提供程序的API密钥 |
MODEL_PLATFORM | -- | 平台覆盖(例如。 openai_compatible) |
MODEL_API_URL | -- | OpenAI兼容端点的基本URL |
______________________________________________________________________
模型提供者参考
集 MODEL_PLATFORM 以下情况之一:
MODEL_PLATFORM | 描述 | 必需的环境变量 |
|---|---|---|
openai_compatible | 任何与OpenAI兼容的端点(aihubmix、OpenRouter、本地等) | MODEL_API_KEY, MODEL_API_URL |
openai | 官方OpenAI API | MODEL_API_KEY |
anthropic | 官方无烟煤API | MODEL_API_KEY |
gemini | 官方Google Gemini API | MODEL_API_KEY |
示例:
# Claude via aihubmix
MODEL_PLATFORM=openai_compatible MODEL_NAME=claude-sonnet-4-5 \
MODEL_API_KEY=sk-xxx MODEL_API_URL=https://aihubmix.com/v1 \
bash scripts/run_containerized.sh canvas-enrollment-notion
# GPT-5.2 via official OpenAI
MODEL_PLATFORM=openai MODEL_NAME=gpt-5.2 \
MODEL_API_KEY=sk-proj-xxx \
bash scripts/run_containerized.sh howtocook-event-catering-excel-word
# Gemini 3 Flash via official Google
MODEL_PLATFORM=gemini MODEL_NAME=gemini-3-flash-preview \
MODEL_API_KEY=AIza-xxx \
bash scripts/run_containerized.sh sf-hr-attrition-gcal______________________________________________________________________
任务结构
所有503个任务都在 tasks/finalpool/每个任务目录都遵循一致的布局:
/
├── task_config.json # Which MCP servers the agent can use
├── docs/
│ ├── task.md # Task description shown to the agent
│ └── agent_system_prompt.md
├── evaluation/main.py # Automated evaluator
├── preprocess/main.py # DB state setup (run automatically before each task)
├── initial_workspace/ # Input files pre-loaded into the agent workspace
└── groundtruth_workspace/ # Reference outputs for evaluation任务描述(task.md)没有工具或服务品牌名称——对“Notion”、“Google Calendar”或“Canvas”等工具的引用被“知识库”、“共享日历”或“学习管理系统”等通用描述所混淆。这与原始Toolathlon项目使用的混淆约定相同,并防止代理基于关键字识别走捷径,从而鼓励真正的工具使用推理。
模拟数据库
连接: toolathlon_gym @ localhost:5432 (用户: eigent,密码: camel)
所有数据都从本地PostgreSQL数据库提供,并从压缩转储初始化(db/init.sql.gz8.2 MB)。运行时不进行外部API调用。这使环境完全可控,并避免了API速率限制、模式更改或数据漂移的问题。
数据来源于或模拟于真实世界: Kaggle Oulad (开放大学学习分析数据集)用于学习管理系统数据, Kaggle人力资源分析 对于企业HR数据, 雅虎财经API 用于财务数据,以及以下各项的组合 Kaggle亚马逊产品数据集 和 虚拟JSON 电子商务数据。
数据丰富的模式
| MCP数据库 | 描述 | 规模 |
|---|---|---|
| 画布 | 学习管理系统——课程、用户、报名、作业、提交、测验、量规、公告 | 22门课程,28865名用户,32663名报名,206份作业,173912份提交,77次测验 |
| 雪花 | 企业数据仓库——人力资源分析、销售和支持中心域 | 50000名员工、20000份销售订单、31588张支持票 |
| WooCommerce | 电子商务--产品、订单、客户、优惠券、评论、运输区域、税率 | 82个产品、150个订单、50个客户、396条评论 |
| 雅虎金融 | 股票市场——价格、财务报表、新闻、期权、持有人 | 50个股票代码,3510条价格记录 |
| 油管 | 视频平台--频道、播放列表、视频、文字记录 | 3个频道、2个播放列表、135个视频 |
| 火车 | 铁路系统——车站、火车、路线、座位 | 8列火车、16条路线 |
数据集统计
总计:503项任务
MCP计数分布
任务范围从4到8个MCP服务器,其中大多数需要4到7个工具。更高的MCP计数表示需要更大的跨系统协调:代理必须在单个任务中编排更多异构工具,计划更长的操作序列,并处理跨服务的更复杂的数据流:
|
下面是每一层的代表性示例,说明任务复杂性和协调需求如何随MCP计数而变化。(因为原始文本太长,这里只显示了任务的摘要。)
4个MCP-- wc-customer-retention-email (woocommerce, excel, emails, filesystem)
根据总支出确定在线商店的前10名客户。创建名为的Excel电子表格VIP_Customer_Report.xlsx其中列Rank、Name、Email、Orders_Count和Total_Spent从高到低排序。然后向这10位客户分别发送一封个性化的感谢电子邮件vip-program@store.example.com,直呼他们的名字,并提及他们的总支出。
5 MCP-- 12306-beijing-shanghai-trip-notion-gcal-word (rail_12306, notion, google_calendar, word, emails)
计划一天往返北京和上海。查询2026年3月10日双向可用的高速列车,并根据时间选择最佳的出站和回程列车。在团队知识库中记录旅行细节,创建Travel_Plan.docx包含三个部分(出站行程、回程、预订摘要),添加两个涵盖旅行窗口的日历事件,并向发送确认电子邮件travel@consulting.com.
6 MCP-- arxiv-conference-prep (scholarly, arxiv-latex, pptx, google_calendar, emails, filesystem)
为2026年RLHF峰会做准备。从人类反馈中搜索至少5篇关于强化学习的论文,然后阅读其完整的LaTeX源代码以提取方法细节。创建一个PowerPoint演示文稿,其中包含标题幻灯片、RLHF字段概述、每篇论文一张幻灯片和一张合成幻灯片。为2026年4月10日的会议添加日历活动,并将准备材料通过电子邮件发送给合作者。
7 MCP-- arxiv-research-pipeline-notion-excel (scholarly, arxiv_local, terminal, excel, notion, filesystem)
基于大型语言模型构建研究知识库。搜索关于法学硕士、快速工程和情境学习的论文。使用终端运行一个合成脚本,该脚本读取论文元数据和内容,计算相关性得分,并输出结构化的JSON摘要。创建一个Excel文件,其中包含三张表(Paper_Catalog、Method_Comparison、Research_Gaps)和一个名为“LLM Research Hub”的Notion页面,该页面包含一个研究仪表板,其中包含景观概述、方法比较和已识别的差距。
8个MCP-- arxiv-research-workflow-pipeline (scholarly, arxiv-latex, terminal, word, google_calendar, emails, pdf-tools, filesystem)
建立一个文献综述管道,首先搜索最近关于神经网络架构的论文并下载其PDF。解析这些论文的LaTeX源文件,提取关键的数学公式,并将其组织成结构化格式。根据收集到的材料,建立一个具有适当学术引文的分类书目。然后编写一份2000字的研究总结,综合主要趋势,找出研究差距,并概述潜在的未来方向。最后,安排一次团队评审会议,发送附有摘要文档的日历邀请,并将所有工作文件存储在一个集中位置以供协作和将来参考。
MCP服务器覆盖范围
数据集中有25个MCP服务器,涵盖文件输入/输出、数据仓库、生产力工具、web交互和特定领域的API。下表显示了每个服务器包含多少任务,从而了解环境中哪些工具类别的代表性最强:
最常用的服务器反映了任务的输出繁重性质。 filesystem 几乎在每个任务中都显示为代理的工作区,用于读取输入文件和写入结果。 excel 和 emails 是两个最常见的输出通道——大多数任务都会生成至少一个结构化的电子表格并发送摘要消息。 terminal 要求代理编写和执行数据转换或统计分析的代码脚本,这些脚本无法由其他工具单独处理。
snowflake 是企业工作流任务的主要数据源,公开了三个领域:人力资源分析(50000名员工、工资、绩效评级和任期数据)、销售(跨地区和客户细分市场的20000个订单)和客户支持(31588张带有SLA和解决元数据的工单)。任务通常查询一个或两个域,计算聚合或标记异常值,并将结果写入Excel或Word。 canvas 类似地锚定LMS任务,代理按课程过滤提交,计算成绩分布,或从22门课程和173912份提交的数据集中标记有风险的学生。
playwright_with_chunk 和 fetch 二者都从模拟本地服务器检索数据-剧作家任务抓取HTML页面(例如竞争对手档案或产品列表),而获取任务调用REST API端点(例如行业工资数据集或库存预测)并将结果与数据仓库记录连接。 google_forms 任务更进一步:代理以编程方式创建结构化调查,然后查询订单或注册数据以识别正确的收件人,并发送个性化邀请。
howtocook 公开了一个用于餐饮、膳食计划和营养分析任务的食谱和营养数据库。 pdf-tools 显示为阅读器(作为输入提供的参考PDF)和编写器(作为输出生成的格式化报告)。 memory 启用多轮研究任务,其中代理必须跨迭代跟踪搜索进度,并避免重新查询已检索的数据。 youtube-transcript 从视频记录中提取原始转录文本,然后代理对其进行处理以生成结构化文档或调查。
初始工作区文件
在任务开始时提供给代理的初始工作区文件跨越了11种不同的格式,涵盖了代理在真实企业工作流中会遇到的所有文档。该分布反映了现实的任务组合:Markdown简报和PDF参考文档最为常见,其次是JSON和Excel等结构化数据格式,代理必须读取、转换和回写:
以下是初始工作区中最具代表性的文件类型的细分:
Markdown(.md) 文件是最常见的输入,用作任务简报、操作指南和计划模板,例如。 travel_guide.md (铁路预订任务的公司旅行政策), analysis_methodology.md (销售分析的统计方法),或 Research_Scope.md (文献综述的主题边界)。
PDF(.pdf) 文件是代理在采取行动之前必须解析的参考文档——薪酬政策、投资组合指南、评估准则或审计程序,其内容直接决定了正确的输出。 JSON(.json) 文件携带参数化配置:行程设置、过滤阈值、审计标准、预算上限和团队名册,这些配置允许在不更改任务描述的情况下更改任务。
Excel(.xlsx) 输入是预先填充的模板,带有代理必须填充的预定义列标题(例如。 paper_notes_template.xlsx, approved_budget.xlsx). CSV(.csv) 文件携带代理根据数据库结果连接的表格参考数据——行业工资数据集、投资组合、教师目录或供应商联系人列表。 文本(.txt) 文件提供轻量级的结构化内容:要下载的纸张ID列表、电子邮件正文模板、季度销售目标或升级策略规则。
python.py) 脚本是代理通过终端完成和执行的启动模板,测试其读取现有代码、推断意图和将脚本输出集成到更大工作流中的能力。较为罕见的格式各自扮演着特定的角色: .pptx 输入是代理扩展而不是从头开始创建的现有幻灯片; .docx 输入是具有预定义标题的文档骨架;唯一 .bib 档案是代理人用新发现的论文补充的种子书目;和单曲 .gz 档案必须与终端一起拆包,然后才能使用其内容。
是什么让Toolathlon GYM与众不同
规模和多样性
在25个MCP服务器和6个数据域的503个任务中,Toolathlon GYM比该领域的早期数据集要大得多,工具也更加多样化。任务的设计要求真正的跨系统协调,而不是单一的工具查找。
完全本地化和可复制
整个环境从一个Docker Compose文件运行。在评估时不需要数据服务的API密钥。PostgreSQL转储是版本化和确定性的,因此结果可以在机器之间和时间上重复。
现实任务复杂性
任务来自真实的企业工作流程模式:从人力资源数据库中提取数据以生成薪资分析电子表格,对照日历截止日期交叉引用学习管理系统提交记录,从抓取的网络数据生成幻灯片,以及类似的多步目标。大多数任务需要4-7个工具才能正确完成。
致谢
Toolathlon GYM基于以下基础设施和原始数据管道构建:
Toolathlon:在现实世界的工具使用任务上对LLM代理进行基准测试 香港科技大学 https://github.com/hkust-nlp/Toolathlon
模拟数据库模式设计、MCP服务器接口和任务评估框架源自Toolathlon项目。该数据集通过附加任务和更大规模的模拟数据扩展了原始数据集。
引用
如果您在研究中使用Toolathlon GYM,请引用:
@misc{toolathlon-gym,
author = {Puzhen Zhang and Weijie Bai and Wendong Fan and Guohao Li},
title = {{Toolathlon-GYM: Large-Scale Long-Horizon Environments for Tool-Use Agents}},
year = {2026},
url = {https://github.com/eigent-ai/toolathlon_gym}
}联系
如果您想联系我们,请联系info@eigent.ai
