ToolRL探路者——万字长文总结大模型工具强化学习近期工作
聚焦ToolRL系列前沿研究,整理大语言模型与强化学习结合的技术路径。这里将梳理多轮工具调用 RL 方法的核心要素,从多轮 rollout 流程、template 设计、reward 机制到 learning 算法。希望本文能将为你呈现 LLMs 工具使用能力提升的全景图。
PS: 整理了LLM、量化投资、机器学习方向的学习资料,关注同名公众号 「 亚里随笔」 即刻免费解锁
近期 ToolRL 系列工作
TooRL 背景
当前挑战
- 传统推理方法的局限:传统的基于纯自然语言的推理方法,如思维链(CoT),在面对复杂计算、方程求解或需要精确计算的过程时存在不足,难以有效解决问题。工具调用需求。
- 工具集成推理的现有问题:现有工具集成推理(TIR)方法大多通过从更强的模型中提取轨迹并进行监督微调(SFT)来训练模型,但这种方式限制了模型对工具使用模式的探索,使其局限于预定的模式,难以发现最优策略。此外,部分应用RL到SFT训练模型的工作,其工具集成在RL框架内的实现透明度低,不利于深入理解和优化。
- 强化学习应用的挑战:将RL应用于LLM驱动的搜索引擎交互和推理时,面临诸多挑战。例如,(1)不清楚如何有效将搜索引擎集成到LLMs的RL方法中并确保优化稳定;(2)LLM难以实现迭代推理和搜索引擎调用,无法根据问题复杂性动态调整检索策略;(3)设计有效的搜索和推理任务奖励函数困难,简单的基于结果的奖励可能不足以引导LLM学习有意义且一致的搜索行为。
- 工具使用效率问题:在工具集成推理中,当前方法常鼓励无节制的工具使用,导致训练和推理时出现问题。频繁且不必要的工具调用会产生大量计算和时间开销,增加部署成本,还会使模型过度依赖外部工具,限制其内部推理能力发展。同时,仅优化答案准确性会忽视工具使用的成本和有效性,导致模型出现工具过度使用或使用不足的情况,影响推理效率。
- 现有训练数据和方法的不足:为增强LLMs的工具调用能力,现有研究主要通过合成大量工具使用轨迹并进行监督微调,但合成数据集常缺乏明确推理步骤,训练过程无法对推理过程提供指导,容易导致模型产生伪推理。
解决办法
- 提出新的框架:众多研究提出了不同的RL框架,如ToRL、Search-R1、ReTool、DeepResearcher、OTC - PO、Nemotron-Research-Tool-N1等。这些框架从不同角度出发,旨在解决LLMs在工具集成推理中的各种问题,提升模型的推理能力和工具使用效率。
- 改进奖励设计:设计合理的奖励函数是关键。例如,ToRL通过奖励驱动学习,让模型自主发现有效工具使用策略;ToolRL提出了一种通用的奖励设计框架,通过系统探索不同奖励配置,为TIR任务找到合适的奖励策略;OTC - PO引入工具集成奖励,调整传统奖励信号,优化工具调用数量,平衡答案正确性和工具使用效率。
- 优化训练方式:采用不同的训练方式来提升模型性能。如ReTool通过精心策划高质量冷启动数据集,并应用工具增强的RL训练模型;DeepResearcher直接在真实网络环境中训练LLM代理,让模型学习处理真实世界信息检索和合成的复杂性;Nemotron-Research-Tool-N1利用基于规则的RL训练模型,在不依赖明确推理注释的情况下,引导模型产生明确推理和正确工具调用。
相关工作
当前LLM中多轮工具RL的相关工作主要围绕LLMs与外部工具结合展开,涵盖工具集成推理和RL在LLMs中的应用两方面,旨在解决LLMs在复杂任务中的局限性,提升其推理和工具使用能力。
工具集成推理(TIR)
- 早期探索与基准构建:早期研究为克服LLMs固有局限,引入外部工具,如程序执行器、搜索引擎等。为评估工具使用性能,提出多个基准,涵盖API选择、参数生成和泛化性等维度。后续研究聚焦于构建高质量工具使用数据集,使模型能自主创建和调用工具,并将技术应用于多模态和专业领域问题。
- 数据集与应用拓展:注重构建高质量工具使用数据集,助力模型自主调用工具,还将相关技术拓展到不同模态和领域。近期,强化学习(RL)在信息检索、数学计算等TIR任务中取得成效,凸显工具增强型LLMs在开放域通用推理的潜力。
RL在LLMs中的应用发展
- 从基础方法到改进技术:早期主要依靠监督微调(SFT)提升LLMs工具使用性能,近期RL成为更具扩展性和通用性的训练范式。其发展从基于人类反馈的RL(RLHF)、近端策略优化(PPO),演进到直接偏好优化(DPO)、SimPO和组相对策略优化(GRPO)等先进技术。像DAPO和VAPO等扩展技术,进一步提升训练稳定性与效率。
- GRPO的特性与应用:GRPO专为LLMs设计,以基于组的评估策略替代传统评论家机制,在数学问题求解、搜索引擎交互和代码生成等多任务中表现出色。它能灵活设置奖励函数,适应不同目标,如为子任务分配权重、约束工具使用频率。研究还分析了数据集规模和模型大小对其效果的影响。在多轮工具RL中,GRPO被广泛应用和拓展,以增强LLMs在各种场景下选择和使用外部工具的能力。
Summary
LLMs在推理和工具使用方面取得了一定进展,但仍面临诸多挑战。传统推理方法在复杂计算任务上存在缺陷,现有工具集成推理方法在优化工具使用策略和提高透明度方面有待提升,RL在应用于LLMs与搜索引擎交互及推理时困难重重,工具使用效率问题也亟待解决,同时现有训练数据和方法难以有效支持模型学习推理过程。为应对这些挑战,研究人员提出多种RL框架,改进奖励设计,优化训练方式,以提升LLMs的推理和工具使用能力,推动LLMs在复杂任务中的应用。
接下来我们一起看看最近的几篇ToolRL相关工作怎么做的。
ToolRL 方法对比
多轮工具调用RL方法(ToolRL,多轮工具调用RL系列,不特指一篇论文)旨在提升大语言模型(LLMs)在复杂任务中利用外部工具的能力,通过优化训练过程、设计合理奖励机制和改进算法,使模型能够更高效地解决问题。总结来看,ToolRL主要包含以下关键要素:
1. 多轮rollout流程:模型基于当前状态(包括问题、历史交互信息、可用工具等)进行推理,确定是否调用工具及调用哪些工具。将工具调用指令按特定格式输出,系统检测到调用指令后,执行工具并获取结果。结果反馈给模型,模型根据新信息继续推理、生成响应或进行下一轮工具调用,直到生成最终答案或满足终止条件,此过程循环迭代,不断优化模型决策。不同研究在工具调用触发条件(如特定标签)、结果处理(封装格式)和终止条件(最大调用次数、特定结束标签)上各有差异 。
2. template:为引导模型正确调用工具和生成符合规范的推理过程,设计特定模板。模板通常包含对推理、工具调用和答案输出格式的规定,如用特定标签(<think>、<tool_call>、<answer>等区分不同部分。部分模板还会提供工具列表、使用说明和示例,帮助模型理解任务要求,确保模型输出结构清晰、符合任务需求,促进模型在不同场景下的泛化。
3. reward设计:通过设计奖励函数引导模型学习有效工具使用策略。奖励通常综合考虑答案正确性、格式合规性、工具调用准确性等因素,各方法对reward的考量都有不同。如R1-Searcher分阶段设置奖励,鼓励模型先学会调用检索系统,再准确回答问题;ReSearch根据答案和格式给予奖励;ToolRL从格式和工具调用正确性两方面评估。部分研究还考虑工具使用效率,如OTC-PO根据最优工具调用次数调整奖励,避免过度或不足调用工具 。
4. learning算法:常基于策略梯度的强化学习算法,如PPO和GRPO。PPO通过采样轨迹更新策略,计算优势估计并进行裁剪操作以稳定训练;GRPO通过组内样本相对排名计算优势,避免额外值函数近似,增强训练稳定性。各方法均会对工具调用的token进行mask处理,只计算由llm输出token的loss。不同研究根据需求对算法改进,如R1-Searcher改进Reinforce++算法,增加基于RAG的Rollout和检索掩码损失计算;ReTool基于PPO结合代码沙箱,对训练过程优化(如掩码处理、缓存机制) 。
ToolRL这篇图画的基本包含了几大要素。
以下分阶段整理了各ToolRL方法的具体做法。
多轮rollout流程
R1-Searcher
在生成过程中,模型借助 <begin_of_query>…<end_of_query > 标签来调用外部检索系统。当生成 < end_of_query > 时,会暂停生成过程,提取其中的查询内容用于检索。检索到的文档会被 < begin_of_documents>…<end_of_documents > 标签封装,并融入到模型的推理过程中,以便模型基于这些检索文档继续推理,从而实现检索与推理过程的无缝结合。
ReSearch
ReSearch 的 rollout 过程与传统仅包含基于文本思考作为推理的 rollout 不同,它还涵盖搜索查询和检索结果。在生成过程中,当遇到</search>标签时,模型会将上一个<search>标签与当前</search>标签之间的内容作为搜索查询,以此检索相关事实信息,检索结果会被<result>和</result>标签包裹。之后,将现有的 rollout 与检索结果连接起来,作为下一次生成后续响应的输入,如此迭代,直至生成过程遇到句子结束(eos)标签(如 Qwen-2.5 模型中的<endoftext>或 <im_end>)。这是一个文本思考、搜索查询和检索结果之间的迭代过程。
ToRL
在ToRL的 rollout 过程中当检测到代码终止标识符(```output)时,系统暂停文本生成,提取最新的代码块进行执行,并将结构化的执行结果以```output\nOBSERVATION\n/```\n 的格式插入到上下文中,其中 OBSERVATION 为执行结果。之后系统继续生成后续的自然语言推理,直到模型给出最终答案或产生新的代码块。
TORL中有一些额外的设计选择,目的是优化训练过程,提升训练效果与稳定性,可以关注一下:
- 工具调用频率控制:在 rollout 过程中,工具集成会导致 GPU 出现较长空闲时间,且 rollout 速度与工具调用频率成反比。为保证合理的训练效率,引入超参数 C,它代表模型在单次响应生成中允许的最大工具调用次数。当工具调用次数超过该阈值,系统会忽略后续的代码执行请求,促使模型切换到纯文本推理模式。
- 执行环境选择:为平衡训练效率和效果,需要寻找稳定、准确且响应迅速的代码解释器。最初测试的 qwen - agent1 中的 Python 执行器虽然延迟极低,但执行环境与训练系统缺乏隔离,执行错误可能影响整个训练过程。最终选择了** Sandbox Fusion,它能提供隔离的执行环境,虽然延迟略高,但在持续训练操作中稳定性更强**。
- 错误消息处理:为增强训练效果,实施了特定的错误处理优化。Sandbox Fusion 在遇到执行错误时,会生成包含无关文件路径信息的冗长回溯信息。**为减少上下文长度,仅保留相关错误信息,只提取错误消息的最后一行,如 “NameError: name ’a’ is not defined” **。
- 沙盒输出掩码处理:在计算损失时,对沙盒环境的 OBSERVATION 输出进行掩码处理。这样做可防止模型记忆特定的执行输出,而是学习通用的推理模式,从而显著提高训练的稳定性。
Search-R1
多轮 rollout 流程
- 模型在生成响应时遵循迭代框架,交替进行文本生成和外部搜索引擎查询。当需要外部检索时,系统指令引导模型将搜索查询用<search>和</search>标签封装。
- 系统检测到生成序列中的<search></search>标签后,提取搜索查询并查询搜索引擎,将检索结果用<information>和</information>标签封装,追加到正在进行的 rollout 序列中,作为下一步生成的额外上下文。
- 该过程不断迭代,直到达到最大行动次数或模型生成最终响应(用<answer>和</answer>标签封装)。具体算法流程为:初始化 rollout 序列和行动计数;在每次循环中,生成响应令牌并添加到当前行动 rollout 序列,若遇到结束标签则停止当前循环;若检测到<search></search>标签则提取查询并检索,将结果插入 rollout 序列;若检测到<answer></answer>标签则返回最终响应;若都未检测到则要求重新思考;每次循环结束后增加行动计数 。
ToolRL
多轮 rollout 流程
借助system prompt引导模型自主生成推理轨迹和工具调用。模型输出含 <tool_call> 时,自动解析工具调用,执行后将输出插入<obs>字段并添加到对话历史;含<response>时,将响应也添加到对话历史,<tool_call> 和<response>可同时出现。用户初始查询置于 Initial User Input 占位符,后续输入也会追加到对话历史,以此形成模型的交互轨迹。
ReTool
多轮 rollout 流程
采用一种动态支持实时代码执行与自然语言推理过程交织的 rollout 方法。模型依据特定 prompt 模板,利用**<code></code>标签**标记生成代码的边界。
在 rollout 过程中,模型先进行文本推理,当检测到代码终止触发标签(</code>)时,暂停生成,将生成的代码(如 c1)发送到代码沙箱环境执行。沙箱执行完成后,其输出(成功结果或错误消息,如 f1)会用<interpreter></interpreter>标签包裹反馈给模型。模型继续生成 rollout,直到给出最终答案 o 或产生新的代码片段,最终形成混合推理轨迹 [t1 ⊕ c1 ⊕ f1 ⊕ … ⊕ o]。
DeepResearcher
多轮 rollout 流程
- 推理:在采取行动前进行推理,每个推理过程用<think>标签包裹。
- 网络搜索工具调用:通过生成 JSON 格式请求调用网络搜索工具,请求包含工具名 “web_search” 和搜索查询,搜索结果以包含网页标题、URL 和片段的结构化格式返回,当前固定返回前 10 条结果。
- 网络浏览代理交互:网络浏览代理为系统提供与问题相关且增量更新的信息。它为每个查询维护短期记忆库,接收到 “web_browse” 请求后,处理 URL 的第一页内容,根据查询、历史记忆和新获取的网页内容决定是否继续浏览下一页,并将相关信息添加到短期记忆中,浏览结束后将短期记忆中的新信息返回给系统。
- 回答:当模型认为有足够信息回答问题时,在<answer></answer>标签内生成最终响应返回给用户。整个过程根据用户问题和观察进行迭代,不断重复上述步骤,直至给出最终答案。
OTC
多轮 rollout 流程
语言模型 M M M 根据问题 q q q 与环境 E E E 进行交互,环境 E E E 提供一组工具 T T T 。在每一步 k k k ,模型生成推理内容 r k r_k rk ,选择工具调用 t c k tc_k tck (可能为空,即不调用工具),并获得相应的观察结果 o k o_k ok ,形成工具集成推理轨迹 τ k = ( r 0 , t c 0 , o 0 ) , ( r 1 , t c 1 , o 1 ) , . . . ( r k , t c k , o k ) \tau_k = (r_0, tc_0, o_0), (r_1, tc_1, o_1),...(r_k, tc_k, o_k) τk=(r0,tc0,o0),(r1,tc1,o1),...(rk,tck,ok) 。若某一步 p p p 不需要调用工具,则 t c p tc_p tcp 和 o p o_p op 为空字符串, r p r_p rp 可与后续推理步骤合并或直接用于得出最终答案。
模型不断重复该过程,直至得出最终答案,同时要在保证答案正确的前提下,尽量减少工具调用次数以降低成本。
Nemotron-Research-Tool-N1
多轮 rollout 流程
在每一步决策 t t t ,大语言模型(LLM)接收历史上下文 c t c_t ct 和当前可用工具集 Z \mathcal{Z} Z 作为输入,依据策略 π \pi π 从可用工具子集中选择一个或多个工具调用,形成行动 a t a_t at 。行动 a t a_t at 执行后会得到观察结果 o t o_t ot ,模型通过不断重复这个过程,生成一系列行动 - 观察对 ( a t , o t ) (a_t, o_t) (at,ot) ,以回应用户查询。
在训练过程中,模型会生成一组候选响应 [ O 1 , O 2 , . . . , O N ] [O^1, O^2, ..., O^N] [O1,O2,...,ON] ,每个响应包含文本推理和相关行动,通过奖励函数评估这些响应得到奖励集 { r 1 , r 2 , . . . , r N } \{r_1, r_2, ..., r_N\} { r1,r2,...,rN} ,再利用 GRPO 算法估计优势并更新策略模型 。
template
R1-Searcher
ReSearch
为引导大语言模型(LLMs)理解 rollout 格式,尤其是搜索操作调用的相关标签,创建了两种提示模板:
- 基础模型模板:以用户与助手对话的形式呈现,告知助手在思考过程中若有需要,可调用维基百科搜索工具获取特定主题事实信息。推理过程用<think> </think>标签括起来,答案用<answer> </answer>标签括起来,搜索查询用<search> </search>标签,搜索结果用<result> </result>标签。示例为<think> This is the reasoning process. </think> <search> search query here </search> <result> search result here </result> <think> This is the reasoning process. </think> <answer> The final answer is \boxed{answer here} </answer>,且最终答案需用 \boxed {} 以 latex 格式括起来。实际使用时,会将 prompt 替换为具体用户问题,作为基础模型的直接输入。
- 指令调整模型模板:作为系统提示,用于指导指令调整后的 LLM。其内容与基础模型模板类似,强调助手可借助维基百科搜索工具逐步解决给定问题,需先思考推理过程再给出答案,同样明确了各标签的使用规范。在使用时,会结合指令调整 LLM 相应的聊天模板。