ToolGrad 反转工具数据集生成流程:先构建验证过的 API 链,再写匹配的用户 query;在 ToolBench 达 99.8% 通过率,Gemma-3-12B 仅用 500 样本微调即与 Gemini 2.5 Pro 持平。代码与数据集已 Apache-2.0 开源。
训练 LLM 可靠地调用工具,需要将用户查询与正确的工具调用链配对的数据集。大规模生产这类数据既慢又贵。Google、东京大学、RIKEN AIP 和东北大学的研究团队推出了 ToolGrad。这项研究颠覆了常规流程:先构建一条经验证的工具链,再撰写用户查询。用 500 条生成数据微调的 Gemma-3 模型,在 Berkeley Function Calling Leaderboard 上达到了与前沿闭源模型比肩的成绩。
能部署吗?可以。代码采用 Apache-2.0 协议,ToolGrad-500 数据集以及 1B、4B、12B 模型已上线 Hugging Face,还有 PyPI 包。
ToolBench 和 ToolACE 等早期流程采用查询优先的方案。系统从 API 池中采样,让 LLM 生成一条看似合理的用户指令,然后派出一个深度优先搜索(DFS)Agent 去找出一条满足该指令的工具调用路径。搜索没有任何成功保证。一旦走进死胡同,探索阶段消耗的算力就浪费了,样本也被丢弃。论文将此描述为从一个复杂且经常失败的 Agent 探索过程中提炼有价值轨迹,本质上效率极低。
ToolGrad 逆转了顺序。它先通过实际执行 API 构建一条真值(ground-truth)工具调用链,再为这条链配上对应的用户查询。一条明确、可运行的链远比一个假设性的提示词更无歧义,因此链到查询这一步只需一次 LLM 调用即可完成。
每次迭代依次运行四个模块:
API Proposer 将采样的 API 集合缩小到几个可能扩展当前工作流的候选者。
API Executors 并行运行这些候选者并生成详细的执行报告。
API Selector 审查这些报告,选出表现最佳的一次调用并将其追加到工作流中。它的定向反馈即为文本梯度(textual gradient)。
LLM Updater 重写合成用户查询和 AI 回应,使它们与新的 API 集合相匹配。
重复循环产生一个样本:一条用户查询、一条经验证的 API 工作流,以及最终回复。仓库的默认配置每条工作流在 50 个采样 API 上运行 10 次迭代。
研究团队在 ToolBench API 数据库(包含 16,000+ 真实 API)上评估了数据生成,并将 ToolGrad 与 ToolBench 基于 DFS 的查询优先方案进行了对比。据论文描述:
0.2% 的失败案例发生在 Agent 在全部 10 次迭代中都无法从 3 个选中的 API 获得成功响应,最终保存了一个空样本。

研究团队生成了 ToolGrad-500,这是一个用 Gemini 2.5 Flash-Lite 构建的 500 条样本数据集,并用它对 1B、4B、12B 参数量的 Gemma-3 进行了后训练。他们在 Berkeley Function Calling Leaderboard 上进行了评估,该榜单使用的工具集与 ToolBench 不同,是一个工具分布外的测试(含有未见过的工具)。作者报告的发现如下:
仓库的复现脚本通过一个定制的 fork 适配了 BFCL V1 和 V2,在 vLLM Docker 镜像中运行推理,并在单张 NVIDIA A100 40GB 上验证通过。
ToolGrad 颠覆了工具调用数据生成的范式:先验证链,再写查询。
在 ToolBench 上通过率从 63.8% 跃升至 99.8%,且调用链更长、步数更少。
仅 500 条样本就将 Gemma-3-12B 提升至 BFCL 83.1 分,与 Gemini 2.5 Pro 的 83.2 分比邻。
学生模型超越了自己的教师模型 Gemini 2.5 Flash-Lite。