跳转至

ToolSearcher: Optimizing Tool Selection at Scale via Reinforcement Learning

会议: NeurIPS2026
arXiv: 2609.30906
代码: https://github.com/zhenlongDai/ToolSearcher
领域: LLM Agent
关键词: 大规模工具选择、多轮检索、强化学习、事件级优势、轨迹信用分配

一句话总结

ToolSearcher 用类别约束课程、首次发现目标工具的事件级优势和按轨迹进度分配的信用训练多轮工具选择器,在 StableToolBench 上将 Qwen2.5-7B-Instruct 的整体 F1 从 GDPO 的 0.496 提升到 0.513,并改善 AppWorld 中由独立执行智能体完成任务的结果。

研究背景与动机

工具使用不只是把参数填进一个已知函数。面对包含约 16k 工具、49 个类别的工具库,模型首先要找到能满足需求的一组工具,而全部文档不可能同时放入上下文。检索返回的候选还可能名称相近、功能相似,却接受不同输入或返回不同结构;只按语义相关性挑选,不能保证后续工具接得上前一步的输出。因此,工具选择需要在多轮检索中同时维护计划、阅读接口并修正候选组合。

现有 RAG 可以一次取回文档,Search-R1 等方法则能学习边推理边检索,但知识问答中的“找到支持答案的内容”与工具选择中的“找到并区分可组合的接口”并不完全相同。整条轨迹只拿一个最终奖励时,模型不知道问题出在漏检某个工具,还是已经看到了所有工具却选错了;反复检索熟悉工具与首次找到缺失工具也容易获得相同信号。另一方面,搜索覆盖率高不等于最终选择好:论文中的未训练 7B 多轮模型在全局搜索下 SRecall 为 0.724,但最终 F1 只有 0.098。

本文没有训练一个执行所有业务 API 的通用智能体,而是把上游的搜索与选择作为可单独优化的任务。核心 idea:先用类别内的相似候选训练细粒度辨别,再只奖励首次发现目标工具的搜索事件,并根据每条轨迹是否已经检索齐目标工具决定是否优化最终选择。

方法详解

整体框架

输入是用户需求、工具库和搜索引擎的调用 schema;输出是一组工具标识符,而不是已经执行的程序。每个工具文档包含功能说明、输入约束和输出结构。策略模型生成结构化搜索调用,搜索引擎返回文档,模型据此继续规划和检索,最后提交工具集合。

训练分三项相互配合的设计:类别约束工具辨别改变前期搜索环境;事件级搜索建模给真正新增目标覆盖的搜索步骤分配优势;轨迹对齐信用分配关闭不合时宜的搜索或选择奖励。前两项不是额外的外部模型,第三项也不是部署时需要运行的裁判。

目标工具 ID 来自训练样本标签,只用于判定检索命中、首次发现和最终集合是否匹配。推理时模型没有目标 ID,只能依靠需求与已检索文档;尤其不能把图中的监督支路误读为推理输入。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    A["需求 + 搜索接口"] -->|训练前期| B["类别约束工具辨别"]
    B --> C["事件级搜索建模"]
    A -->|推理:全局搜索| C
    C -->|生成最终选择| D["工具集合"]
    C -.->|训练轨迹| E["轨迹对齐信用分配"]
    D -.->|训练结果| E
    T["目标工具 ID<br/>仅训练监督"] -.-> C
    T -.-> E
    E -.->|训练更新| C

关键设计

1. 类别约束工具辨别:先在相似候选中学会读接口

如果模型早期只在整个工具库里搜索,可以靠粗粒度主题词避开大量无关工具,却未必学会区分同一功能域内的近邻。CCTD(Category-Constrained Tool Discrimination)把前期检索限定在指定类别的工具子集内;搜索 schema 增加类别参数,返回候选因而更相似,模型必须认真比较功能和接口,而不能只满足于主题相关。

这是一项课程安排,不是永久按类别隔离工具库。论文先用 30% 的训练数据进行类别内搜索,然后切回全局搜索,继续学习跨整个工具库的细粒度查询。附录给出总计 56 个训练步,其中前 17 步采用类别约束。类别内环境本身更难:未训练 Qwen3-4B-Instruct 的 F1 在该设置中为 0.265,低于全局搜索的 0.408;训练收益来自先练辨别、再练全局搜索,而不是推理时缩小候选空间必然更好。

2. 事件级搜索建模:奖励目标工具的首次发现,而非所有检索行为

ESM(Event-level Search Modeling)把一次搜索调用及其返回结果视为一个事件。对一条轨迹,第 \(j\) 次搜索中值得优化的工具,是本轮返回、属于标注目标集合、并且之前没有出现过的工具。用原文记号,\(\mathcal{M}\) 表示事件检索到的工具,\(\mathcal{T}_s\) 是目标工具集合,首次发现集合为:

\[ \mathcal{T}_{e_j}=\mathcal{M}(e_j)\cap\left(\mathcal{T}_s\setminus\mathcal{M}(\mathcal{E}_{<j})\right). \]

只有这个集合非空的事件进入有效事件集合。这里的“新颖性”是相对于当前轨迹的目标工具覆盖,不是查询措辞新、返回任何新文档,或发现一个全库中新出现的工具。重复找到已见目标工具和只返回非目标工具的事件都没有这项搜索优势。

随后,同一需求采样 \(G\) 条轨迹,对每个目标工具分别计算二元检索奖励:该工具在整条搜索轨迹中出现过记为 1,否则记为 0。一个事件可能首次找到多个目标工具,作者取这些工具的组相对优势的最大值,而不是均值:

\[ \widehat{A}_{i,e(t)}= \begin{cases} \displaystyle\max_{T\in\mathcal{T}_{e(t)}}\left[\frac{r(T,\mathcal{S}_i)-\mathrm{mean}(\{r(T,\mathcal{S}_j)\}_{j=1}^{G})}{\mathrm{std}(\{r(T,\mathcal{S}_j)\}_{j=1}^{G})}\right],&e(t)\in\mathcal{E}_i^*,\\ 0,&\text{otherwise}. \end{cases} \]

这让发现“组内较少轨迹能找到的目标工具”的事件获得更强信号;如果同一轮还找到了容易命中的工具,最大值不会像均值那样稀释关键发现。工具级奖励比较的是整条轨迹是否检索到该工具,信用则落在该轨迹首次发现它的事件上,不能混成每轮独立的命中率奖励。

返回文档中的 token 只作为上下文,使用 retrieved-token loss masking 排除出策略梯度优化;优化对象是模型自己生成的 token,而不是让模型提高外部文档的生成概率。它仍可阅读这些文档进行后续决策。“没有搜索优势”也不等于所有梯度都为零,因为目标中还有 KL 正则项。

3. 轨迹对齐信用分配:没检索齐就练搜索,检索齐后才练选择

TCA(Trajectory-Aligned Credit Allocation)先判断每条轨迹是否检索到了所有标注目标工具。没有检索齐时,最终选择事件的优势直接置零,避免用缺失信息下的猜测来训练选择能力;检索齐后,才用最终工具集合与目标集合完全匹配的二元奖励,构造组相对选择优势。完全匹配奖励不是部分 F1,且“检索齐”只是开启选择优化的条件,不保证最终选择正确。

搜索侧则把组内已经掌握的目标工具对应事件的优势置零,不再持续奖励所有轨迹都能完成的搜索能力。这样,不同轨迹会聚焦不同弱项:仍缺工具的轨迹继续学发现,信息齐全但集合选错的轨迹学最后决策。该设计不是简单把 SRecall 与最终 Match 两个奖励相加再广播给全轨迹。

原文公式存在需要保留的疑点。式 (5) 的标准差分母没有写数值稳定项;当组内奖励相同会出现零标准差,正文只明确说明已掌握搜索能力要置零,没有完整交代所有零方差情形的实现。式 (7) 的组均值和标准差使用 \(j\) 作集合索引,却在集合内重复写第 \(i\) 条轨迹的奖励,若逐字解释会形成常数集合。笔记依据正文解释选择门控,不擅自把公式改成作者已确认的实现;精确复现需要核对代码。

一个完整示例

以下是机制说明用的普通数据转换示例,不是论文报告的实验轨迹。需求是“把 CSV 记录转成 JSON”,目标工具集合包含一个输出记录列表的 CSV 解析器和一个接受记录列表的 JSON 编码器;同名但输出纯文本的候选解析器不能直接满足计划中的接口连接。

第一轮返回 5 份文档,首次找到正确解析器,但没有编码器。这一轮可以获得搜索优势;若模型现在直接提交最终集合,因为尚未检索齐目标工具,选择优势被置零。第二轮仍只返回该解析器和其他非目标工具,没有新增目标覆盖,不能再次领取首次发现信用。

第三轮检索到正确编码器,模型读文档确认输入结构与解析器输出一致,再提交两工具集合,此时才有资格获得选择优势。若同组 5 条轨迹都找到了解析器,只有 2 条找到了编码器,训练应聚焦后者对应的搜索事件,而不是继续奖励已经掌握的解析器搜索。

示例强调的是奖励位置和信息进度;集合与标签匹配并不构成真实执行兼容性的证明。文档中的接口判断和外部程序实际运行仍是不同的证据层次。

损失函数 / 训练策略

搜索部分使用 GRPO 风格的裁剪策略目标,将事件优势赋给对应的模型生成 token,并加 KL 正则;选择部分另用选择事件优势优化最终回答。两部分联合更新同一个策略模型,不额外训练一个值函数来标注每一步。

训练使用 StableToolBench 过滤后的 14,418 条样本,移除非英文、不自然以及在指令中泄露 API 名称的数据。I1/I2/I3 分别为 11,329/2,253/836 条。工具库包含 16,464 个 REST API、49 个粗类别及 500+ 个 collection;collection 可跨类别,不能把 I3 理解成仅同一类别的另一名称。

选择器骨干是 Qwen2.5-7B-Instruct 或 Qwen3-4B-Instruct,检索器采用 Qwen3-Embedding-0.6B。每轮返回 5 份文档,每个需求采样 5 条 rollout,最多交互 8 轮;学习率为 \(10^{-6}\),KL 系数为 0.001,clip ratio 为 0.2。

附录记录单节点 8 张 A100 80GB、总 batch size 256、训练 1 epoch。训练响应上限为 5,000 token,每轮检索内容上限 768 token;推理响应上限提高到 30,000 token、每轮检索内容上限 4,096 token,但仍是最多 8 轮和每轮 5 份文档。一次性 RAG 基线使用 top-100 文档,预算与多轮检索形态不同,不能解释成完全同等上下文下的比较。

实验关键数据

主实验

StableToolBench 的测试集为 765 条样本。F1、Recall、Precision 比较最终选择工具集合与标注集合;Match 要求两集合完全一致。SRecall 只衡量搜索阶段是否检索到目标工具,不要求最终选择正确,也不检验调用参数或执行兼容性。

下表节选原文表 1;I3-Inst. 是 collection 内多工具任务的未见指令泛化 F1,不是执行成功率。

选择器 方法 整体 F1 Recall Precision Match I3-Inst. F1
Qwen2.5-7B-Instruct Multi-turns 0.098 0.110 0.100 0.046 0.054
Qwen2.5-7B-Instruct Search-R1 0.327 0.311 0.361 0.152 0.194
Qwen2.5-7B-Instruct GDPO 0.496 0.487 0.524 0.255 0.228
Qwen2.5-7B-Instruct ToolSearcher 0.513 0.511 0.534 0.278 0.294
Qwen3-4B-Instruct Multi-turns 0.408 0.439 0.410 0.169 0.272
Qwen3-4B-Instruct Search-R1 0.505 0.504 0.516 0.307 0.215
Qwen3-4B-Instruct GDPO 0.518 0.513 0.537 0.305 0.238
Qwen3-4B-Instruct ToolSearcher 0.531 0.527 0.546 0.316 0.284

相对 GDPO,ToolSearcher 的整体 F1 分别增加 0.017 和 0.013,即 1.7、1.3 个百分点;7B 的 I3-Inst. 增加 6.6 个百分点。但并非所有子集都最好:4B 的 I2-Cate. F1 为 0.491,低于 GDPO 的 0.505;7B 的 I1-Tool F1 为 0.561,也低于 GDPO 的 0.567。

AppWorld 的工具选择评测使用其原训练集中的 147 个任务、49 个场景,仅作为测试,未用于 ToolSearcher 训练。下游执行则使用 Test-N 的 D-1/D-2 子集,共 105 个任务、34 个场景;D-3 被排除。选择与执行不是同一组测试样本。

执行器固定为 FullCodeRefl + gpt-5-mini:它根据选择器给出的工具生成完整代码,执行失败后根据错误信息反思并重试。因此,下表 TGC/SGC 是“Qwen 选择器 + 独立 GPT 执行器”的系统结果,不是 Qwen 自己完成执行的成功率。

AppWorld 选择器 方法 选择 F1 SRecall 平均 TGC 平均 SGC
Qwen2.5-7B-Instruct GDPO 0.483 0.693 0.277 0.171
Qwen2.5-7B-Instruct ToolSearcher 0.514 0.697 0.334 0.228
Qwen3-4B-Instruct Search-R1 0.555 0.635 0.314 0.228
Qwen3-4B-Instruct ToolSearcher 0.562 0.664 0.372 0.257

TGC 衡量任务全部测试通过的比例,SGC 衡量场景内任务全部通过的比例。7B 相对 GDPO 的平均 TGC/SGC 均提高 5.7 个百分点;4B 相对 Search-R1 分别提高 5.8/2.9 个百分点。这不意味着每个难度或每个指标都严格胜出:7B 的 D-2 TGC/SGC 与 GDPO 同为 0.188/0.062;4B 的工具选择 Precision 为 0.612,低于 Search-R1 的 0.617。

消融实验

下表来自原文表 3,均使用 Qwen2.5-7B-Instruct。去掉 CCTD 表示全程全局搜索;去掉 ESM 表示用最终结果驱动的轨迹级监督替代事件建模;去掉 TCA 表示取消进度相关的信用修正。

数据集 配置 F1 Recall Precision SRecall
StableToolBench 完整模型 0.513 0.511 0.534 0.680
StableToolBench w/o CCTD 0.477 0.466 0.510 0.583
StableToolBench w/o ESM 0.394 0.377 0.433 0.456
StableToolBench w/o TCA 0.461 0.444 0.501 0.538
AppWorld 完整模型 0.514 0.444 0.669 0.697
AppWorld w/o CCTD 0.433 0.375 0.576 0.452
AppWorld w/o ESM 0.328 0.280 0.447 0.303
AppWorld w/o TCA 0.469 0.431 0.567 0.565

原文数值与引用有轻微不一致:AppWorld 7B 完整模型 Precision 在主表 2 为 0.670,在消融表 3 为 0.669;这里保留各表原值,不自行统一。消融正文多处引用“Table 5”,但数字消融实际在表 3,搜索设置比较在表 4,表 5 的标题是训练曲线。

关键发现

  • ESM 的移除影响最大:StableToolBench 的 F1 降低 11.9 个百分点,SRecall 降低 22.4 个百分点;AppWorld 分别降低 18.6、39.4 个百分点。这支持为有效搜索事件提供直接信号,而不是只等待最终集合对错。
  • TCA 的收益并不只在搜索侧:StableToolBench 的 F1 从 0.461 提高到 0.513,说明按信息是否齐全区分搜索与选择的学习阶段有价值。不过,单项移除不能证明各模块贡献独立可加。
  • 论文报告去掉 ESM 后平均搜索轮数由约 4 轮降到约 2 轮。增加轮数不是目的;首发现信用使继续寻找缺失工具有学习价值,而重复检索不会得到同样奖励。

亮点与洞察

  • 把工具覆盖拆成“工具级组统计 + 事件级信用”比只用一个 SRecall 更细。两个覆盖率相同的轨迹可能漏掉不同工具,按首次发现事件赋值能区分这种差异。
  • 选择奖励的门控把信息不足与决策错误分开。它提供了一种可迁移的原则:在需要先收集证据再做决策的任务中,先检查必要信息是否实际出现,而不是奖励没有依据的正确猜测。
  • 类别约束是训练难度设计,而非永久部署限制。它可用于训练同类 API 的细节辨别,但课程效果依赖类别划分与样本覆盖,不能直接推广为“搜索空间越小越容易”。

局限与展望

  • 作者承认 StableToolBench 的合成训练组合多数是并行工具调用,缺少强顺序依赖与状态变化。AppWorld 的有状态 API 会改变数据库或用户数据,更接近实际工作流;当前收益不能证明模型已经掌握复杂状态管理。
  • 工具集合 F1 和 Match 不验证接口连接、参数正确性或实际执行。AppWorld 提供了有限下游证据,但执行器是另一个模型、只测 D-1/D-2,不能把结果外推到全部 AppWorld 难度。
  • 训练最多 8 轮、响应上限 5,000 token;AppWorld 任务平均涉及 9.5 个 API、最多 26 个。轮数与 API 数不一一对应,但较长文档与复杂状态依赖仍会使上下文预算成为约束,可探索训练时同步学习的上下文摘要。
  • 实验没有误差条或多随机种子统计,作者在 checklist 中明确回答未报告统计显著性。特别是整体 F1 的 1.3–1.7 个百分点优势,仍需重复实验评估稳定性。
  • 零标准差处理、式 (7) 索引和部分表格引用需要代码级复核。改进方向是公开可执行的奖励定义与边界测试,并用带接口约束及状态转换的任务补充集合级评测。

相关工作与启发

  • vs RAG / RAGSFT:一次取回 top-100 文档后做选择,无法根据已见接口灵活补检缺失工具。ToolSearcher 学习交互式搜索,但检索预算形态不同,比较包含训练目标与检索方式两方面变化。
  • vs Search-R1 / GSPO:这些基线主要把最终选择奖励作用于整条轨迹;ToolSearcher 让首次发现事件和最终选择事件拥有不同优势。重点不是换一个裁剪公式,而是改变信用落到哪些行为上。
  • vs GDPO:本实验中的 GDPO 分别归一化搜索 SRecall 与最终匹配奖励后联合优化。ToolSearcher 再按目标工具和轨迹进度细分信号,减少对已掌握或信息尚不足阶段的错误激励。
  • vs MARAG-R1:作者将其改为同一搜索引擎进行比较,奖励仍包含答案、覆盖与探索项。因而此结果是适配后的工具选择比较,不是对原始多检索器系统所有能力的排名。

评分

  • 新颖性: 4/5 — 将首次发现、工具级组优势与轨迹进度门控结合,针对工具选择提供了明确的信用分配机制。
  • 实验充分度: 4/5 — 两种骨干、跨域执行与三项消融较完整,但缺少重复实验及最难执行场景。
  • 写作质量: 3/5 — 动机与组件职责清晰,公式索引、零方差说明和表格引用影响复现精度。
  • 价值: 4/5 — 为大工具库的上游搜索选择提供可复用设计,但不能替代实际接口与状态验证。