ToolBench 与 ToolLLaMA

用真实 REST API 数据、检索与 DFSDT 训练评估模型调用能力。

Star 数
★ 5.8k
最近更新
1 年前
License
Apache-2.0
主语言
Python

30 秒速览

运行形态
命令行工具自托管服务网页应用
可在哪里用
兼容但需适配OpenAI API
费用
软件免费,模型调用费用自付
上手难度
高 · 需要较重的基础设施
开始前需要
Python >=3.9RapidAPI 账号或 ToolBench 密钥,用于 API 支持的推理用于 OpenAI 模型推理和 ToolEval 的 OpenAI API 密钥用于 Web UI 的 npmShell / 命令行网络访问本地文件系统
典型场景
希望用真实 RapidAPI 文档和调用轨迹训练开源模型执行 API 调用的研究团队。
不适合
  • 不愿注册 RapidAPI 并订阅 API 的用户
  • 没有 A100 级别 GPU 资源的个人开发者

这个 Agent 能做什么,适合哪些场景?

ToolBench 是一个面向大语言模型工具学习的数据、训练、推理和评估项目,配套发布 ToolLLaMA 模型与 ToolEval 评测器。其数据集包含 3,451 个工具、16,464 个 REST API、126,486 条实例和 469,585 次真实 API 调用,并覆盖单工具及两类多工具场景。项目提供检索器训练、ToolLLaMA 微调、闭域与开放域推理脚本,以及可接入定制 API 的本地工具环境。推理可通过 ToolBench 的 RapidAPI 服务或用户自己的 RapidAPI 账户执行;另有基于 Chatbot UI 分叉项目的网页界面和 Python 后端服务。ToolEval 以通过率和偏好/胜率评估预测结果,并使用 OpenAI API 驱动评估流程。

项目从 data/toolenv/tools/ 读取 API 描述与实现,从 data/instruction、data/answer 和 data/retrieval 读取训练、标注和检索数据。preprocess/preprocess_retriever_data.py 生成检索训练数据,toolbench/retrieval/train.py 训练 bert-base-uncased 检索器;preprocess/preprocess_toolllama_data.py 处理解题路径标注,toolbench/train/train_mem.py 或 train_lora.py 微调 ToolLLaMA。toolbench/inference/qa_pipeline.py 运行 DFS_woFilter_w2 推理并写出答案文件,qa_pipeline_open_domain.py 先从 corpus.tsv 检索 API;可选 backbone_model 包括 toolllama、chatgpt_function 和 davinci。toolbench/inference/toolbench_server.py 提供本地 :5000/stream 服务,接收含 text、top_k、method 的 JSON 请求。ToolEval 的 convert_to_answer_format.py、eval_pass_rate.py 和 eval_preference.py 将预测转换后计算通过率与偏好结果。

  1. 希望用真实 RapidAPI 文档和调用轨迹训练开源模型执行 API 调用的研究团队。
  2. 需要为 ToolLLaMA 微调复现实验,并具备至少两张 A100 80GB GPU 的机器学习工程师。
  3. 要在开放域问题中先检索候选 API、再执行工具调用的模型开发者。
  4. 想将自有 hello_world 一类 API 文档和 api.py 实现接入闭域推理流程的应用原型团队。
  5. 需要把多个方法在六个测试子集上的预测转换并以通过率、偏好胜率进行比较的评测人员。
  6. 希望通过本地 Chatbot UI 分叉前端和 :5000/stream 后端演示 ToolLLaMA 的团队。

如何安装或部署这个 Agent?

克隆项目并安装依赖:

git clone [email protected]:OpenBMB/ToolBench.git
cd ToolBench
pip install -r requirements.txt

运行训练或推理前,下载并解压数据,使 data/ 位于 ToolBench/ 下:

wget --no-check-certificate 'https://drive.google.com/uc?export=download&id=1XFjDxVZdUY7TXYF2yvzx3pJlS2fy78jk&confirm=yes' -O data.zip
unzip data.zip

仅使用 ToolEval 时可安装:

pip install -r toolbench/tooleval/requirements.txt

网页界面需单独克隆 chatbot-ui-toolllama,执行 npm install 和 npm run dev。

如何使用这个 Agent?

使用 ToolBench RapidAPI 服务前需先申请并设置密钥:

export TOOLBENCH_KEY="your_toolbench_key"
export PYTHONPATH=./
python toolbench/inference/qa_pipeline.py \
--tool_root_dir data/toolenv/tools/ \
--backbone_model toolllama \
--model_path ToolBench/ToolLLaMA-7b \
--max_observation_length 1024 \
--observ_compress_method truncate \
--method DFS_woFilter_w2 \
--input_query_file data/test_instruction/G1_instruction.json \
--output_answer_file toolllama_dfs_inference_result \
--toolbench_key $TOOLBENCH_KEY

使用 OpenAI 模型时,将 backbone_model 改为 chatgpt_function 并提供 --openai_key;使用自己的 RapidAPI 账户时提供 --rapidapi_key 并添加 --use_rapidapi_key。开放域推理还需要 --corpus_tsv_path、--retrieval_model_path 和 --retrieved_api_nums 5。

这个 Agent 有哪些优点和局限?

优点
  • 提供从 API 数据、路径标注、检索训练到推理和评估的完整研究工作流,而非仅发布模型权重。
  • 数据集明确覆盖单工具、同类别多工具和同集合多工具任务,并保留推理过程、工具执行及执行结果。
  • 支持闭域 API 列表和基于 corpus.tsv、检索模型的开放域 API 检索两种推理设置。
  • ToolEval 同时提供通过率和基于候选动作序列的偏好评测,并给出预测转换脚本。
  • 可通过 API 文档 JSON 与 api.py 将定制 API 接入闭域推理。
局限
  • API 支持高度依赖 RapidAPI:使用托管服务需要申请 ToolBench key,或需使用自己的 RapidAPI key 和订阅。
  • 官方 ToolLLaMA-7b 全量训练示例使用 2 张 A100 80GB,硬件门槛较高。
  • 开放域推理依赖单独训练的检索器、corpus.tsv 和工具环境数据,部署组件较多。
  • ToolEval 和 OpenAI 模型推理需要 OpenAI API 密钥;偏好和通过率评估会发起多次评估调用。
  • 定制 API 目前仅支持闭域设置,文档称开放域定制 API 支持仍计划中。

这个 Agent 与同类方案有什么区别?

训练代码基于 FastChat。项目将 StableToolBench 介绍为基于 API 响应模拟的本地稳定服务器;ToolEval 可用于比较 ReACT 与 DFSDT 等方法的输出,但资料未证明它们在所有部署场景中可直接互换。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
ToolBench 与 ToolLLaMA 当前 32 · 缺口较多 命令行工具免费 + 模型费 ★ 5.8k 1 年前 Python OpenAI API
AgentBench 证据不足 自托管服务免费 + 模型费 ★ 3.8k 9 个月前 Python OpenAI API
OpenAgents 52 · 缺口较多 网页应用免费 + 模型费 ★ 4.9k 1 年前 Python OpenAI API
Cache-to-Cache 43 · 缺口较多 代码库 / SDK免费 ★ 771 9 天前 Python —

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
缺口较多
32/ 100 五分制 1.6 / 5
信任安全 0/29
可靠稳定 3/14
适用触发 10/18
规范维护 9/18
有效结果 7/13
证据核验 3/8
查看各维度的扣分理由
信任安全0 / 29 · 0.0/5

证据显示:仓库未提供权限管理、用户确认、数据流透明、敏感数据处理、依赖安全、外部影响、回滚或来源归属的说明。所有信任相关标准均未得到满足,因此得分为0。

可靠稳定3 / 14 · 1.1/5

证据显示:README提供了详细的安装和运行指令,但未提供错误处理或失败消息的说明。依赖项在requirements.txt中列出,但未提供可用性保证。因此,self_consistency和dependency_availability得分为1,failure_messages得分为0。

适用触发10 / 18 · 2.8/5

证据显示:README明确了目标受众(研究人员和开发者)和使用场景(工具学习、训练、评估)。提供了API定制和Web UI的说明,但触发精度(如API调用条件)未明确。因此,audience_and_scenarios、capability_boundaries和environment_fit得分为2,trigger_precision得分为1。

规范维护9 / 18 · 2.5/5

证据显示:README提供了清晰的信息架构、安装说明和示例。命名稳定性未明确,已知限制部分提及,许可证为Apache-2.0,版本变更记录部分提及,维护责任未明确。因此,information_architecture、install_notes、examples_and_faq和license得分为2,naming_stability、known_limitations、versioning_changelog和maintenance_responsibility得分为1。

有效结果7 / 13 · 2.7/5

证据显示:输出格式(如JSON)在README中说明,但未提供实际输出示例。边际价值高(提供数据集和模型),但成本效益未明确。因此,output_usability和marginal_value得分为2,cost_benefit得分为1。

证据核验3 / 8 · 1.9/5

证据显示:README中的声明(如性能)未提供具体数据或引用,但提到了论文。跨来源验证有限,事实与推断未明确分离。因此,claim_traceability、cross_source_corroboration和fact_inference_separation得分为1。

风险与缓解建议
  • 源码中未见:最小权限约束只授予完成任务所需的权限:用专用账号或只读令牌,并限定可访问的目录和仓库。
  • 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
  • 源码中未见:数据流向说明运行时观察它连接了哪些外部服务(代理或防火墙日志);弄清数据去向之前不要输入敏感数据。
  • 源码中未见:敏感信息处理使用专用、低权限、可随时吊销的 API 密钥,不要复用生产凭据,也不要让密钥出现在日志里。
  • 源码中未见:依赖安全审查安装前固定版本并做一次依赖扫描(如 npm audit、pip-audit);优先放在容器里运行。
  • 源码中未见:外部影响披露先弄清它会写入、发送或修改哪些外部系统,用测试账号或测试仓库验证后再接入正式环境。
  • 源码中未见:回滚或恢复路径运行前先备份,或在 git 分支、快照上操作,确保改动可以撤销。
  • 源码中未见:来源归属可核验从官方仓库或包源安装,核对发布者和仓库地址,避免同名仿冒包。
  • 仓库未提供权限管理或用户确认机制,使用外部API时需谨慎。
  • 依赖项版本较旧,可能存在已知安全漏洞,建议更新。
  • README中的性能声明缺乏具体数据支持,需谨慎对待。
证据充分度:低 评估于 2026年8月9日 审查版本 d56fdd89faf8
查看完整评分方法 →

常见问题

运行真实 API 调用是否一定要使用 ToolBench 的密钥?
不一定。可申请 ToolBench key 使用其 RapidAPI 后端,也可传入自己的 RAPIDAPI_KEY 并启用 --use_rapidapi_key。
如何运行 ChatGPT 推理?
设置 OPENAI_KEY,并以 --backbone_model chatgpt_function 运行 toolbench/inference/qa_pipeline.py。
ToolEval 评估什么?
它评估有限 OpenAI API 调用内完成指令的通过率,并通过比较同一指令的两条动作序列计算偏好和胜率。
能接入自己的 API 吗?
可以:在 data/toolenv/tools/ 的类别下添加 API 文档 JSON 和对应 api.py,再以带 api_list 的查询文件运行并加 --api_customization;目前仅支持闭域。
在 GitHub 查看 ↗ 安装 ↓

相关 Agents