标题:ReTool: 强化学习在LLMs中实现战略性工具使用
作者/机构:Jiazhan Feng∗, Shijue Huang∗, Xingwei Qu, Ge Zhang, Yujia Qin, Baoquan Zhong, Chengquan Jiang, Jinxin Chi, Wanjun Zhong†
ByteDance Seed


图1 ReTool和基于文本的RL基线在Qwen2.5-32B-Instruct模型上于AIME 2024 & 2025的得分。

A1 主要贡献

本文旨在解决当前通过强化学习(RL)训练的推理模型(如DeepSeek R1)在纯文本推理方面表现出色,但在需要结构化问题解决的场景(如几何推理、精确计算或复杂方程求解)中表现不佳的问题。这些场景正是代码解释器(CI)等计算工具的优势所在。为了弥合这一差距,本文提出了ReTool框架,该框架通过工具集成学习来增强长篇推理能力。

研究目标与创新点
ReTool的核心是提出一个工具增强的强化学习框架,旨在引导大型语言模型(LLMs)在推理过程中学习利用外部计算工具的最优策略。其包含两个关键特性:
1. 动态交错执行:在自然语言推理过程中,动态地、实时地交错执行代码。
2. 自动化RL范式:允许策略模型在多轮实时代码执行中进行推演(rollouts),并根据结果反馈教会模型何时以及如何调用工具。

核心贡献总结
1. 提出ReTool框架:本文提出了一个新颖的强化学习框架ReTool,它将代码解释器执行集成到LLMs的推理循环中。为了使模型具备调用代码解释器的基础能力,我们通过自研的流程构建了一个高质量的冷启动数据集。此外,我们设计了一个支持交错式代码执行的强化学习框架,使模型能够通过由沙箱式代码解释器反馈引导的工具增强交互,来迭代地探索、改进和优化其推理策略。

  1. 全面的实证与行为分析:如第3.3节所示,我们进行了全面的实证和行为分析,并观察到几个关键发现:
    • 推理效率提升:经过RL训练后,响应长度相比训练前减少了约40%,展示了CI赋能推理在提高推理token效率方面的潜力。
    • 工具使用能力的提升:在RL训练期间,代码比例、代码行数和正确代码数量均呈上升趋势,且代码调用时机提前,表明模型代码使用能力和战略性工具使用策略得到了发展。
    • 涌现出高级推理模式:在RL阶段观察到代码自纠正和自适应工具选择等涌现行为,带来了更先进的工具增强推理模式。

A2 方法细节

本节介绍ReTool,一个为解决数学问题而设计的由代码解释器(CI)驱动的强化学习(RL)框架。我们首先概述ReTool,接着描述我们的冷启动训练,包括数据构建流程和监督微调(第2.2节)。然后,我们阐述由代码解释器沙箱增强的强化学习流程,以进一步促进战略性工具使用的发展(第2.3节)。

2.1 概述

两阶段方法论。我们的方法论包括两个主要阶段:首先是冷启动监督微调,然后是带有交错式代码执行推演的强化学习。我们首先通过设计的流程收集数据进行冷启动监督微调(SFT),这为强化学习阶段提供了稳健的初始化。为了增强模型的工具利用能力,我们引入了一个专门的工具使用强化学习流程,该流程增强了模型在推理过程中恰当选择和应用工具的能力。

2.2 为工具集成推理奠定基础的冷启动

高质量冷启动数据构建流程。我们设计了一个用于收集和整理高质量数据的流程。具体来说,我们首先从多种来源收集现有的数学推理数据,包括像OpenThoughts【索引22,Open Thoughts,2025,https://open-thoughts.ai】这样的开源数据集。随后,我们实施了一种结合人类专家整理和Deepseek-R1【索引4,Deepseek-r1: Incentivizing reasoning capability in llms via reinforcement learning,2025,https://arxiv.org/abs/2501.12948】评估的双重验证方法来过滤无效数据。通过这些步骤,我们收集了一个高质量的纯文本推理数据集,记为D_init。

自动化代码集成数据转换。基于D_init,我们以自动化的方式进一步构建代码集成的推理数据。我们首先利用一个结构化的提示模板(详见图8)进行转换,该模板通过将原始思维过程中可以从代码执行中受益的手动计算步骤替换为相应的代码片段及其解释器的执行结果来修改原始思维过程。在这次初步转换之后,我们应用了一个两阶段的验证协议。第一阶段侧重于格式验证,这提高了可读性并确保了语法的一致性,从而能够在后续的强化学习阶段高效地检测计算工具调用触发器。第二阶段是答案验证,我们排除了最终输出与数学问题正确解不符的数据样本。最后,我们收集了一个由代码增强的长篇推理轨迹组成的数据集D_CI。

监督微调(SFT)。ReTool利用监督微调从前述数据集D_CI中学习何时以及如何调用代码解释器,从而增强模型恰当利用计算工具的能力。


图2 基于文本的RL训练过程与ReTool的RL训练过程的演示。

2.3 ReTool: 强化学习实现战略性工具使用

2.3.1 训练算法

基于PPO的训练算法。我们基于PPO算法【索引16,Proximal policy optimization algorithms,2017,https://arxiv.org/abs/1707.06347】训练ReTool,它通过以下目标来更新策略:

其中,$\pi_{\theta}$是策略模型,$\pi_{\theta_{ref}}$是参考模型,$\pi_{\theta}(o_t | q, o_{

适应工具集成的PPO改进。我们修改PPO以更好地适应工具集成推理。在训练期间,策略LLM将与一个代码沙箱协作,生成带有多次实时代码执行的推演来解决给定问题。我们实施一个基于规则的结果奖励,使模型能够灵活地自主探索和发展代码使用意识、代码选择、代码调用时机以及更多样化行为的策略。

基于结果准确性的奖励设计。为了教会模型学习何时以及如何调用工具,我们实施了一个基于规则的准确性奖励来优化模型。准确性奖励评估响应的正确性。我们要求模型以指定格式(例如,在\boxed{}内)呈现最终答案,从而实现可靠的基于规则的验证。奖励公式如下:

其中,$a$和$\hat{a}$分别代表真实答案和预测答案。我们简化奖励设计,旨在减轻奖励 hacking(投机取巧)问题,并基于纯粹的结果反馈(不考虑代码可执行性奖励)促进更多样化的问题解决行为。

交错式代码执行的Rollout机制。为了促进模型内部推理和可执行代码的整合,我们提出了一种动态支持自然语言推理过程与实时代码执行交错进行的推演方法。如图2(b)所示,我们的推演过程不同于传统方法,后者通常只生成基于文本的推理(如图2(a)所示)。相比之下,我们的推演方法集成了策略LLM与外部代码沙箱的协作,从而能够生成结合了文本、代码片段和实时解释器反馈的混合内容。具体来说,我们利用一个提示模板(图7)来引导模型通过使用<code></code>标签与代码沙箱交互,以明确标记生成代码的边界。在推演过程中,策略模型生成基于文本的推理$t_1$,当检测到代码终止触发器(</code>)时,生成暂停,生成的代码$c_1$被解析并发送到代码沙箱环境执行。完成后,沙箱的输出$f_1$(成功结果或错误消息)被填充在<interpreter></interpreter>标签内并反馈给模型,模型继续生成推演,直到提供最终答案$o$或产生新的代码片段,最终产生一个混合推理轨迹$[t_1 \oplus c_1 \oplus f_1 \oplus ... \oplus o]$。

动态反馈机制。值得注意的是,我们的方法将成功的代码执行结果和解释器错误消息都返回给模型。这种动态反馈机制使模型能够迭代地探索、改进和优化其推理和工具使用策略。

2.3.2 训练细节

冷启动与强化学习训练设置。在训练中,我们使用了VeRL框架。我们采用PPO作为我们的RL方法。我们在精心策划的冷启动数据上训练模型两个周期。关于超参数,我们使用AdamW优化器,初始学习率为1e-6。我们将预期的最大序列长度定义为16384个token。对于训练,mini-batch大小设置为512,KL系数设置为0.0。我们使用Qwen2.5-32B-Instruct【索引15,Qwen2.5 technical report,2025,https://arxiv.org/abs/2412.15115】作为主要骨干模型。

解释器反馈掩码。我们在损失计算中屏蔽了<interpreter></interpreter>的反馈输出。这种基于沙箱的输出屏蔽方法阻止了外部token干扰损失计算,确保了训练的稳定性,并保护了模型固有生成的连贯推理序列不受干扰。

KV-Cache复用优化。为了减少推演过程中的内存成本,每当检测到代码终止触发器(</code>)时,我们会缓存代码执行前的所有KV-cache,并只计算和附加来自解释器反馈(<interpreter></interpreter>)的KV-cache。这将大大减少每次推演的KV-cache。

异步代码沙箱构建。为了加速RL训练过程,我们设计了一个异步代码沙箱环境。沙箱Pod作为池中的工作者,根据其当前容量独立地拉取任务,创建了一个高效的负载均衡机制。这种分布式异步方法通过在多个线程上实现并行环境交互来加速RL训练,它防止较慢的线程造成瓶颈,并确保最优的资源利用,从而在训练过程中保持持续的吞吐量。

A3 背景知识/关键Observation/设计原则

4.1 LLM推理

LLM推理的进展。最近大型语言模型(LLMs)【索引3,Claude 3.7 sonnet,2025,https://www.anthropic.com/news/claude-3-7-sonnet】、【索引4,Deepseek-r1: Incentivizing reasoning capability in llms via reinforcement learning,2025,https://arxiv.org/abs/2501.12948】、【索引9,Reft: Reasoning with reinforced fine-tuning,2024,https://arxiv.org/abs/2401.08967】、【索引12,Openai o1 system card,2024,https://arxiv.org/abs/2412.16720】、【索引19,Gemini: a family of highly capable multimodal models,2023】、【索引20,Kimi k1.5: Scaling reinforcement learning with llms,2025,https://arxiv.org/abs/2501.12599】、【索引26,Chain-of-thought prompting elicits reasoning in large language models,2022】、【索引28,Grok,2023,https://x.ai/】、【索引30,Qwen2.5 technical report,2024】、【索引32】的进展表明,通过思维链(CoT)提示,它们在实现类似人类元认知的认知能力方面取得了显著进步。由Wei等人【索引27,Chain-of-thought prompting elicits reasoning in large language models,2023,https://arxiv.org/abs/2201.11903】首次提出的CoT提示,通过利用逐步的自然语言描述来增强LLMs的推理能力,显著提高了在各种推理任务上的性能。在此基础上,最近的研究已将重点从训练时扩展转向测试时扩展【索引17,Scaling llm test-time compute optimally can be more effective than scaling model parameters,2024,https://arxiv.org/abs/2408.03314】,即在推理期间分配额外的计算资源以生成中间推理步骤。诸如逐步偏好优化【索引7,Step-dpo: Step-wise preference optimization for long-chain reasoning of llms,2024,https://arxiv.org/abs/2406.18629】、蒙特卡洛树搜索(MCTS)【索引29,Monte carlo tree search boosts reasoning via iterative preference learning,2024,https://arxiv.org/abs/2405.00451】和强化学习【索引9,Reft: Reasoning with reinforced fine-tuning,2024,https://arxiv.org/abs/2401.08967】等技术已被用于改善多步和长篇数学推理。像OpenAI-o1【索引12,Openai o1 system card,2024,https://arxiv.org/abs/2412.16720】和DeepSeek-R1【索引4,Deepseek-r1: Incentivizing reasoning capability in llms via reinforcement learning,2025,https://arxiv.org/abs/2501.12948】等先进模型例证了基于CoT推理的有效性。作为CoT的补充,由Chen等人【索引1,PAL: Program-aided language models,2023,https://arxiv.org/abs/2211.12588】和Gao等人【索引5,PAL: Program-aided language models,2023,https://arxiv.org/abs/2211.10435】引入的思维程序(PoT)推理,集成了外部计算工具(如Python解释器)来简化和验证复杂的推理步骤,从而提高了准确性。

4.2 工具集成推理

工具集成推理的发展。工具集成推理最初是为了帮助LLMs通过整合编程策略来解决计算密集型的数学问题而引入的【索引1,PAL: Program-aided language models,2023,https://arxiv.org/abs/2211.12588】、【索引6,Search-r1: Training llms to reason and leverage search engines with reinforcement learning,2025,https://arxiv.org/abs/2503.09516】、【索引18,R1-searcher: Incentivizing the search capability in llms via reinforcement learning,2025,https://arxiv.org/abs/2503.05592】、【索引24,Empowering large language models: Tool learning for real-world interaction,2024】、【索引33】。在此基础上,Wang等人【索引25,Mathcoder: Seamless code integration in llms for enhanced mathematical reasoning,2023,https://arxiv.org/abs/2310.03731】提出了一种结合文本推理和代码执行的迭代方法,以相互验证和提高推理准确性。最近,Chen等人【索引2,An empirical study on eliciting and improving r1-like reasoning models,2025,https://arxiv.org/abs/2503.04548】通过对自建的代码集成CoT数据进行监督微调,将代码执行整合到推理过程中。然而,这种方法本质上受限于其对特定数据分布的依赖,并且无法通过强化学习来学习自适应的工具使用策略——例如决定何时以及如何调用工具。一项同期的工作【索引8,Torl: Scaling tool-integrated rl,2025,https://arxiv.org/abs/2503.23383】应用强化学习在Qwen2.5-Math模型【索引31】的1.5B和7B规模上学习工具使用策略,但性能仍不理想。我们进一步扩展了这一研究方向,并提出了ReTool,一个利用强化学习来战略性地决定何时以及如何调用代码解释器的框架。我们的方法在AIME2024和AIME2025上显著优于Qwen-Math-72B-TIR【索引31】和o1-preview【索引11,Learning to reason with llms,2024,https://openai.com/index/learning-to-reason-with-llms/】。我们还对学习到的工具使用行为进行了全面分析,并强调了关于ReTool训练后模型在代码调用方面的认知模式的几个关键发现。

A4 实验环境

  • 数据集

    • AIME2024 & AIME2025:用于模型性能评估的数学奥林匹克竞赛基准。
    • OpenThoughts:用于构建冷启动数据集的开源数学推理数据来源之一。
  • 模型架构

    • 主要骨干模型:Qwen2.5-32B-Instruct。
    • 增强骨干模型:DeepSeek-R1-Distill-Qwen-32B。
    • 对比基线模型:Qwen2.5-Math-72B-Instruct, Qwen2.5-Math-72B-Instruct-TIR, Sky-T1, DeepSeek-R1-Zero-Qwen-32B, QwQ-32B-Preview, s1-32B, OpenAI o1-preview, 以及一个不使用工具的纯文本强化学习基线(Text-based RL (Qwen2.5-32B-Instruct))。
  • 硬件配置

    • 论文中未明确提及具体的硬件配置(如GPU型号、数量等)。
  • 软件配置

    • 实现框架:VeRL 框架。
    • 强化学习算法:PPO (Proximal Policy Optimization)。
    • 优化器:AdamW,初始学习率为1e-6。
    • 核心依赖库/环境:一个自建的异步代码沙箱环境,用于执行Python代码。
    • 其他关键参数:最大序列长度16384,mini-batch大小512,KL系数0.0。
  • 评估设置

    • 评估指标:pass@1,通过重复评估32次并报告平均准确率来估算。
    • 推理超参数:temperature=1.0,top-p=0.7。

A4 实验结果

主要结果

如表1所示,ReTool使LLM能够在RL阶段灵活利用代码解释器,从而带来显著的性能提升。
- 性能与效率:ReTool (Qwen2.5-32B-Instruct) 仅用400个训练步骤就在AIME2024上达到67.0%的准确率,在AIME2025上达到49.3%。这显著优于使用超过1000个训练步骤的纯文本RL基线(在相应基准上分别为40.0%和36.7%),表明ReTool的工具集成学习范式不仅提升了模型的推理能力,还提高了训练效率。
- 与SOTA模型对比:在AIME2024上,ReTool (Qwen2.5-32B-Instruct) 比s1-32B高出10.3%;在AIME2025上,比OpenAI的o1-preview高出11.4%。当结合更先进的骨干模型ReTool (DeepSeek-R1-Distill-Qwen-32B)时,性能进一步提升,在AIME2024和AIME2025上分别达到72.5%和54.3%,这表明RL训练过程发现了更有效的问题解决策略。
- 冷启动模型有效性:基于Qwen2.5-32B-Instruct的冷启动模型在AIME2024上取得了40.9%的准确率,与纯文本RL基线(40.0%)相当,并远超基础模型(26.7%)。这证明了我们构建的数据集有效地捕捉了可执行推理轨迹中的工具使用模式,并且集成CI的训练对推理性能有积极贡献。

表1 主要结果。♠纯文本RL方法包括一个基于文本的冷启动SFT初始化以确保公平比较。♢冷启动模型的推理过程也集成了代码解释器。

认知分析

我们对ReTool的行为进行了全面分析,重点关注了代码解释器(CI)相关行为的动态、自纠正能力的涌现、RL前后代码目的的差异,以及CI赋能推理与纯文本推理的区别。

CI相关行为的演变:通过分析RL训练过程中各个检查点在AIME2024和AIME2025数据集上的输出,我们观察到以下趋势(如图3所示):
- 响应长度(图3(a)):平均响应长度在训练初期急剧下降,然后平缓上升,最终比训练前短40%(从10k tokens降至6k tokens)。这表明CI通过用简洁代码替代复杂计算,提高了推理token的利用效率。
- 代码率(图3(b)):包含代码的响应比例在RL训练中持续上升,最终覆盖近98%的问题,表明模型代码运用熟练度在RL过程中逐步提升。
- 代码行数(图3(c)):生成的平均代码行数持续增加,训练结束时几乎是训练前的五倍,反映出模型在RL阶段学会了更复杂的代码策略。
- 测试集正确代码总数(图3(d)):测试集上的正确代码总数从1k增加到5k,表明利用代码工具的熟练度得到增强。
- 代码通过率(图3(e)):正确响应的代码通过率接近100%,而错误响应的代码通过率呈下降趋势,说明代码的可执行性影响推理过程和最终结果。
- 代码调用时机(图3(f)):代码调用时机在RL训练中提前,表明模型学会了判断使用工具的时机。


图3 RL训练期间CI相关行为的演变。

“顿悟时刻”的代码自纠正:模型在没有明确的自纠正训练数据的情况下,涌现出了纠正不可执行代码的能力。如图4所示,模型最初生成的代码因未定义函数“greedy()”而执行失败。在收到解释器的反馈后,模型识别出错误并反思:“哦,函数需要在同一个作用域内定义。我们来修正一下。”随后,它生成了一个包含所有必要函数定义的可执行代码版本。这种涌现行为表明,强化学习可以培养元认知能力,使模型能够迭代地完善其生成的代码以解决更复杂的问题。


图4 关于代码自纠正的“顿悟时刻”案例。

代码目的分析:通过使用Doubao-1.5-pro对代码片段的主要目的进行分类,我们分析了RL训练前后代码目的的差异(如图5所示)。词云图显示,计算和验证是CI赋能推理中代码的主要目的。经过RL训练后,模型的代码目的变得更加多样化,这展示了自适应工具选择的元认知发展,并增强了ReTool对更广泛问题的泛化能力。


图5 代码目的分析。

CI赋能推理 vs. 纯文本推理:图6的案例研究展示了RL训练后的CI赋能推理与RL训练前的传统纯文本推理之间的区别。面对同一问题,纯文本推理依赖于“费力”的纯文本计算过程,这容易出现数值错误并导致错误的推理结果。相比之下,CI赋能推理用简洁的代码替代了这一复杂的计算过程。这种方法不仅通过外部代码解释器的帮助确保了计算的准确性,还使模型能更有效地专注于整体的推理策略。


图6 CI赋能推理与纯文本推理的案例对比。

A5 结论

本文提出了ReTool,一个新颖的强化学习框架,它使大型语言模型能够通过有效利用代码解释器来自我提升其数学推理能力。我们在AIME2024和AIME2025上的全面实验表明,与传统的纯文本RL方法相比,ReTool不仅取得了更高的准确率,而且收敛所需的训练步数也显著减少。通过精心的数据整理和我们专门的工具使用流程,ReTool使模型能够发展出复杂的计算干预策略,为LLMs中更高效、更强大的工具增强推理铺平了道路。

A6 附录

A 附录

RL Rollout的提示模板
该模板指示模型逐步解决问题,并赋予其选择性编写可执行Python代码以增强推理过程的能力。代码将由外部沙箱执行,其输出(包裹在<interpreter>output</interpreter>中)可被返回以辅助推理并得出最终答案。模板要求Python代码是完整的脚本,包含必要的导入。

  • 代码格式:每个代码片段都用<code></code>包裹,内部是标准的python代码块。
  • 答案格式:响应的最后部分应为<answer>\boxed{'最终答案在此处。'}</answer>
  • 用户问题:模板中包含一个占位符{question}来插入具体问题。

数据转换的提示模板
该模板旨在指导一个AI助手修改一个原始的、不使用代码的思维过程。

  • 目标:通过将可以从代码执行中受益的手动计算步骤替换为相应的代码片段及其解释器的执行结果,来使原始思维过程更准确。核心推理逻辑,包括任何不成功的尝试,都应保持不变。修改后的思维过程需要被包裹在<revised_thinking_process></revised_thinking_process>标签内。

  • 细节要求

    1. 识别可以被代码加速或提高准确性的部分。
    2. 用代码片段和解释器结果替换手动计算。
    3. 保持推理的逻辑流程完整,包括最初的失败探索。
    4. 代码片段应是完整脚本,包含导入,且不应包含markdown符号。
    5. 代码中的输出必须显式调用print函数。
    6. 执行结果必须与模型输出完全匹配。
    7. 如果原始思维过程没有<answer>部分,需要在修改后的思维过程中添加。
  • 输入:模板包含用户问题{question}和原始思维过程{original_response}的占位符。