摘要
虽然通过强化学习(RL)训练的推理模型(如 DeepSeek R1)在文本推理方面表现出色,但它们在需要结构化问题解决的场景中面临困难,例如几何推理、简洁计算或复杂方程求解——这些恰恰是计算工具(如代码解释器 CI)展现出明显优势的领域。为了弥合这一差距,我们提出了 ReTool,它通过工具集成学习增强长篇推理能力,包括两个关键特性:(1) 在自然语言推理过程中动态穿插实时代码执行,以及 (2) 一种自动化的强化学习范式,允许策略在执行过程中进行多轮实时代码执行,并基于结果反馈教导模型学习何时以及如何调用工具。
ReTool 采用系统化的训练框架,首先进行合成冷启动数据生成,产生代码增强的长篇推理轨迹,用于微调基础模型。随后的强化学习训练利用任务结果作为奖励信号,迭代完善模型的工具使用策略,使其能够自主发现最佳工具调用模式,无需人类先验知识。
在具有挑战性的 MATH 奥赛基准 AIME 上的实验证明了 ReTool 的优越性:我们的 32B 模型在 400 个训练步骤中达到了 67% 的准确率,在效率和性能上大幅超越了基于纯文本的强化学习基线(40% 准确率,1080 步骤)。值得注意的是,ReTool-32B 在扩展设置中获得了 72.5% 的准确率,比 OpenAI 的 o1-preview 高出 27.9%。进一步分析揭示了诸如代码自我修正等涌现行为,标志着模型经历了"顿悟时刻",自主掌握了自适应工具使用能力。这些发现凸显了结果驱动的工具集成在推进复杂数学推理方面的巨大潜力,并为混合神经-符号系统提供了新的见解。
引言
在这项工作中,我们采纳强化学习范式,并引入 ReTool,一个工具(Tool)增强的强(Reinforcement)化学习框架,其明确设计旨在引导大语言模型在推理过程中利用外部计算工具达到最优策略。ReTool 包含两个关键组成部分:首先,我们开发了一个数据构建流程,以策划一个高质量的冷启动数据集,该数据集明确演示了何时以及如何调用代码解释器。这教会了模型在工具使用和执行结果分析方面的初步能力。然后,我们应用工具增强的强化学习来训练模型发现最优的工具操作推理策略,并通过基于结果的奖励调整其行为,这超越了仅靠监督学习所能捕捉到的范围。在长链推理过程中,策略模型通过灵活编写代码块并从沙盒式代码解释器获取实时执行结果来辅助后续思考,从而进行展开。
我们在具有挑战性的数学奥林匹克基准 AIME2024 和 AIME2025 上评估 ReTool。基于 Qwen2.5-32B-Instruct 构建,我们的模型仅用 400 个训练步骤就在 AIME2024 上达到了 67.0% 的准确率,显著优于基于文本的强化学习基线,后者用 1080 个训练步骤达到了 40.0% 的准确率。这些显著的提升突出表明,将工具使用显式地建模为决策过程的一部分,不仅突破了模型推理能力的极限,也提高了训练效率。此外,当在 DeepSeek-R1-Distill-Qwen-32B 上训练时,我们的模型展现了进一步的改进,超越了诸如 QwQ-32B-Preview、s1-32B 和 OpenAI o1-preview 等有竞争力的基线。这表明强化学习训练过程激发了更高效的问题解决策略。另外,我们基于 Qwen2.5-32B-Instruct 的冷启动模型在 AIME2024 上达到了 40.9% 的准确率,与基于相同骨干网络的基于文本的强化学习基线(40.0%)相当,并显著超过了未经训练的 Qwen2.5-32B-Instruct(26.7%)。这些结果表明,我们精心策划的数据集有效地捕捉了可执行推理轨迹中的工具使用模式,并且集成代码解释器的训练对推理性能有积极贡献。我们进一步通过强化学习训练对代码解释器的认知行为进行了全面分析,并确定了几个关键发现。我们的模型展示了增强的代码利用能力,使其能够使用更准确和复杂的代码片段;它还学会了适当地调用工具,自适应地选择工具,有效地组织工具调用,并通过涌现的代码自我修正能力迭代地优化推理。
方法论
概述
我们的方法论包含两个主要阶段:冷启动监督微调 (SFT),随后是包含交错代码执行推演的强化学习。首先,我们通过我们设计的流程收集数据用于冷启动监督微调,这为强化学习阶段提供了一个稳健的初始化。为了增强我们模型的工具利用能力,我们引入了一个专门的工具使用强化学习流程,该流程增强了模型在推理过程中适当选择和应用工具的能力。
工具集成推理基础的冷启动
我们设计了一个用于收集和筛选管理高质量数据的流程。具体来说,我们首先从不同来源收集现有的数学推理数据,包括像 Open-Thoughts 这样的开源数据集。随后,我们结合人工专家校阅和 Deepseek-R1 评估,实施了一种双重验证方法来过滤无效数据。通过这些步骤,我们收集了一个高质量的基于文本的推理数据集,记为 $\mathcal{D}_\text{init}$。
基于 $\mathcal{D}_\text{init}$,我们以自动化的方式进一步构建了代码集成的推理数据。我们首先利用一个结构化的提示词模板(详见图8)进行转换,该模板通过将可以受益于代码执行的手动计算步骤替换为相应的代码片段及其解释器的执行结果,来修改原始的思维过程。初步转换之后,我们应用了一个两阶段验证协议。第一阶段侧重于格式验证,这提高了可读性并确保了语法的一致性,从而能够在后续的强化学习阶段有效检测计算工具调用触发器。第二阶段需要进行答案验证,我们在此阶段剔除最终输出与数学问题正确解不符的数据样本。最终,我们收集了一个包含代码增强的长式推理过程的数据集 $\mathcal{D}_\text{CI}$。
ReTool 采用监督微调技术,从上述数据集 $\mathcal{D}_\text{CI}$ 中学习何时以及如何调用代码解释器,从而增强模型恰当利用计算工具的能力。
训练算法
我们基于 PPO 算法训练 ReTool,它通过以下目标更新策略:
其中 $\pi_{\theta}$ 是策略模型,$\pi_{\theta_{\text{old}}}$ 是参考模型,$\pi_{\theta}(o_t\mid q,o_{ 我们修改 PPO 以更好地适应工具集成的推理。在训练期间,策略大语言模型将与代码沙箱协作,生成带有 多轮实时代码执行的轨迹生成,以解决给定的问题。我们实现了一个基于规则的结果奖励,使模型能够灵活地自主探索和开发策略,以实现代码使用意识、代码选择、代码调用时机以及进一步的多样化行为。 奖励设计 为了教导模型学习何时以及如何调用工具,我们实现了一个基于规则的准确性奖励来优化模型。准确性奖励评估响应的正确性。我们要求模型以指定格式(例如,在 其中 $a$ 和 $\hat{a}$ 分别代表真实答案和预测答案。我们简化奖励设计旨在减轻奖励操纵并促进更多样化的问题解决行为,这些行为仅基于结果反馈,而不考虑代码可执行性奖励。 带有交错代码执行的轨迹生成 为了促进模型内推理和可执行代码的集成,我们提出了一种轨迹生成方法,该方法动态支持交错的实时代码执行与自然语言推理过程。如图2(b) 所示,我们的轨迹生成过程不同于传统方法,后者通常只生成基于文本的推理(如图2(a) 所示)。相比之下,我们的轨迹生成方法集成了策略大语言模型与外部代码沙箱的协作,从而能够生成结合了文本、代码片段和实时解释器反馈的混合内容。具体来说,我们利用一个提示词模板(图7)来指导模型通过使用标签 $\texttt{ 值得注意的是,我们的方法将成功的代码执行结果和解释器错误消息都返回给模型。这种动态反馈机制使模型能够迭代地探索、改进和优化其推理和工具使用策略。 冷启动与强化学习 (RL) 在训练方面,我们采用了 VeRL 框架[^1]。我们选用 PPO 作为我们的强化学习方法。我们在精选的冷启动数据上训练模型两个周期 (epoch)。超参数方面,我们使用 AdamW 优化器,初始学习率为 1e-6。我们设定的预期最大序列长度为 16384 个 Token。训练时,小批量大小 (mini-batch size) 设为 512,KL 系数设为 0.0。我们使用 Qwen2.5-32B-Instruct 作为主干模型。 解释器反馈掩码。 我们在损失计算中排除了 $\texttt{ KV 缓存重用。 为了降低推演 (rollout) 过程中的内存开销,每当检测到代码终止触发器 ($\texttt{}$) 时,我们会缓存代码执行前的全部 KV 缓存,之后仅计算并附加来自解释器反馈 ($\texttt{ 沙箱构建。 为加速强化学习 (RL) 训练过程,我们设计了一个异步代码沙箱环境。沙箱 Pod 作为工作单元池中的 worker,根据自身当前的处理能力独立拉取任务,从而创建了一种高效的负载均衡机制。这种分布式异步方法通过支持跨多个线程的并行环境交互来加速 RL 训练,它能防止较慢线程造成瓶颈,确保最优的资源利用率,并在整个训练过程中维持持续的吞吐量。 在本节中,我们评估 ReTool 的性能,并对模型输出的行为进行全面分析。 为确保评估的稳定性,我们将评估集 AIME2024&2025 重复运行 32 次,并报告整体平均准确率以估计 pass@1。评估所用的推理超参数设置为温度 1.0 和 top-p 0.7。我们将 ReTool 与有竞争力的基线模型进行比较,这些基线模型包括 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。为了验证我们 ReTool 方法的有效性,我们还将其性能与不使用工具的强化学习(即基于文本的强化学习,模型为 Qwen2.5-32B-Instruct)进行了比较。至于基线模型的结果,我们报告的 avg@k 值是作为 pass@1 从相应文献来源复制而来的。 如表1所示,ReTool 使大语言模型能够在 RL 阶段灵活地利用代码解释器,从而显著提高了性能。具体而言,ReTool(Qwen2.5-32B-Instruct) 仅用 400 个训练步骤就在 AIME2024 上达到了 67.0% 的准确率,在 AIME2025 上达到了 49.3% 的准确率。这显著优于基于文本的 RL 基线 (Qwen2.5-32B-Instruct),后者尽管使用了超过 1000 个训练步骤,但在相应基准测试上的准确率分别为 40.0% 和 36.7%。这些发现表明,ReTool 采用的工具集成学习范式不仅增强了模型的推理能力,还提高了训练效率。此外,在 AIME2024 上,ReTool(Qwen2.5-32B-Instruct) 的性能超过了有竞争力的基线 s1-32B 10.3%。同样,在 AIME2025 上,它比 OpenAI 的 o1-preview 提高了 11.4%。当结合更先进的骨干模型时,ReTool(DeepSeek-R1-Distill-Qwen-32B) 进一步提升了性能,在 AIME2024 上取得了 72.5% 的分数,在 AIME2025 上取得了 54.3% 的分数。这些结果表明,在 RL 训练过程中发现了更有效的问题解决策略。 此外,我们基于 Qwen2.5-32B-Instruct 的冷启动模型在 AIME2024 上实现了 40.9% 的准确率,与基于文本的 RL 基线 (40.0%) 的性能非常接近,并显著超过了基础模型 (26.7%)。这些结果表明,我们精心策划的数据集有效地捕捉了可执行推理轨迹中的工具使用模式,并且代码解释器集成训练(CI-integrated training)对推理性能有积极贡献。 我们进行了一项全面的分析,并从我们的探索中提炼出几个关键发现,包括:(1) 在整个强化学习(RL)过程中代码解释器(CI)相关行为的动态变化;(2) 自我纠正能力的涌现;(3) 强化学习前后代码目的的差异;(4) CI 驱动的推理与基于文本的推理之间的区别。 CI 相关行为演变。 为了更深入地理解 ReTool 的强化学习过程,我们系统地评估了与 CI 相关的指标。具体而言,我们基于 RL 训练期间保存的每个检查点,通过分析模型在 AIME2024 和 AIME2025 数据集上生成的输出,计算了这些指标。结果如图3所示,我们的分析包括: 响应长度 (图3(a)):我们计算了平均响应长度,并观察到一个明显的趋势:生成的响应长度初期急剧下降,随后相对平缓地增加。我们将最初的下降归因于模型使用更简洁的代码替代了复杂的计算过程,而随后的上升则可能是由于在 RL 训练期间涌现出更多样化、更复杂的代码行为。值得注意的是,最终的平均响应长度仍比 RL 训练前短 40%(即从 10k 降至 6k)。这表明,CI 驱动的推理方法通过用代码替换复杂的计算过程,可能提高了推理 Token 利用率。 代码比例 (图3(b)):我们还计算了包含代码的响应所占的比例。分析显示,在整个 RL 训练过程中,平均代码比例呈现总体上升趋势,最终覆盖了近 98% 的问题。这表明模型运用代码的熟练度在 RL 过程中逐步提高,促进了策略性工具使用能力的发展。 代码行数 (图3(c)):生成的代码行数在一定程度上反映了其复杂性。观察表明,响应中的平均代码行数在整个训练过程中呈现持续上升的趋势。到 RL 训练结束时,最终的平均代码行数几乎是 RL 训练前的五倍。这一趋势表明,模型在 RL 阶段学习了更复杂的代码策略。 测试集总正确代码数 (图3(d)):测试集上的总正确代码数在 RL 训练期间呈现总体上升趋势,从 1k 增加到 5k。这一改进表明模型利用代码工具的熟练度有所提高。 代码通过率 (图3(e)):CI 驱动的推理过程涉及生成可能最初不正确的中间代码,然后基于解释器反馈进行迭代改进以产生可执行代码。因此,我们报告了在未能正确解答问题的响应中,最后一段代码的平均通过率。我们的分析显示,对于正确解答问题的响应,其代码通过率始终保持很高,接近 100%;而对于未能正确解答问题的响应,其代码通过率则呈现下降趋势。这种模式表明代码的可执行性会影响推理过程和最终结果。 代码调用时机 (图3 (f)):我们还计算了代码调用时机,该时机通过将代码的起始位置除以响应的总长度来确定。此指标反映了在响应中调用代码的时间点。结果显示,代码调用时机在 RL 训练过程中趋于提前,表明模型学会了判断使用工具的时机。 代码自我修正的“顿悟时刻”。 有趣的是,尽管缺乏明确的代码自我修正训练数据,我们的模型展现出一种涌现的自我修正不可执行代码的能力。如图 4所示,模型最初生成的代码由于未定义的函数 “greedy()” 而无法执行。在收到解释器的反馈后,模型识别了错误并回应反思:“哎呀,函数需要在同一个作用域内定义。我们来修正一下。” 随后,它便生成了一个修正后的、可执行的代码版本,包含了所有必要的函数定义。这种涌现行为表明,强化学习可以培养元认知能力,使模型能够迭代地改进其生成的代码,以解决更复杂的问题。 代码目的分析。 我们还分析了强化学习训练前后代码目的的差异,这些差异反映了代码的类型。我们使用 Doubao-1.5-pro[^2] 根据代码片段的上下文信息对其主要目的进行分类,然后计算出现超过一次的代码目的的频率,结果如图 5所示。词云显示,计算和验证是基于代码解释器推理 (CI-powered reasoning) 中代码的主要目的。经过强化学习训练后,我们模型中的代码目的变得更加多样化,这展示了自适应工具选择方面的元认知发展,并增强了 ReTool 对更广泛问题的泛化能力。 基于代码解释器的推理 (CI-powered Reasoning) vs. 基于文本的推理。 我们提供一个案例研究来说明强化学习 (RL) 训练后的基于代码解释器的推理 (CI-powered reasoning) 与 RL 训练前的传统基于文本的推理之间的区别,如图 6所示。当面对相同问题时,基于文本的推理依赖于一个“繁琐的”纯文本计算过程,该过程容易出现数值错误,并常常导致错误的推理结果。相比之下,基于代码解释器的推理 (CI-powered reasoning) 用简洁的代码替代了这个复杂的计算过程。这种方法不仅通过外部代码解释器的辅助确保了计算的准确性,而且使模型能够更有效地专注于整体推理策略。 在本文中,我们提出了 ReTool,一个新颖的强化学习框架,该框架使大语言模型能够通过有效利用代码解释器 (Code Interpreter) 来自我增强其数学推理能力。我们在 AIME2024 和 AIME2025 数据集上进行的全面实验表明,与传统的基于文本的强化学习方法相比,ReTool 不仅实现了更高的准确性,而且其收敛所需的训练步数也显著减少。通过细致的数据整理和我们专门设计的工具使用流程,ReTool 使模型能够发展出复杂的计算干预策略,为实现大语言模型中更高效、更强大的工具增强推理铺平了道路。\boxed{}
内)呈现最终答案,从而实现可靠的基于规则的验证。奖励公式如下:
}\texttt{
}$ 与代码沙箱交互,以明确标记生成代码的边界。在轨迹生成过程中,策略模型生成基于文本的推理 $t_1$,当检测到代码终止触发器($\texttt{}$)时,生成暂停,生成的代码 $c_1$ 被解析并发送到代码沙箱环境执行。完成后,沙箱的输出 $f_1$(成功结果或错误消息)被填充在 $\texttt{训练细节
实验
评估设置
主要结果
认知分析
结论