Skip to content

Agent-Tool-RL 笔记

📅 发表于 2025/05/30
🔄 更新于 2025/05/30
👁️ -- 次访问
📝 0 字
0 分钟
agent-tool-rl
#ToRL
#ToolRL
#ReTool
#OTC-PO
#SkyRL-v0
#Nemotron-Tool-N1
#ARTIST
#ZeroTIR
#Tool-Use
#Agent-RL

工具调用-论文阅读

(2505) Agent RL Scaling Law: Spontaneous Code Execution for Mathematical Problem Solving

Agent RL Scaling Law
  • ZeroTIR Paper, openrlhf_async_pipline
  • 单工具场景,提出ZeroTIR,仅靠任务Reward让模型自主编写python解决数学问题🔢。
  • 做了一些scaling的实验,模型越大越好、交互代码次数并非越多越好😔。

同haotian的Zero-TIR-RL应该是同一个工作。

❓问题背景

问题背景
  • LLM在需要精准计算和验证的数学推理上表现困难
  • 尽管RL可以增强纯文本推理,但如何自主使用工具,仍然很重要

📕核心方法

Zero-TIR 核心方法

基于ZeroRL 提出 ZeroTIR

  • 不使用工具监督示例,仅靠任务成功奖励,纯RL让模型自主编写python解决math问题

  • 不依赖人工示例,允许模型自主探索,实现纠正反思等能力

✍️实验配置

ZeroTIR 实验配置
  • 模型:Qwen2.5-7B/32B
  • 框架:OpenRLHF、Open-Reasoner-Zero
    • 异步rollouts+pipeline 提高吞吐量
  • 算法:PPO、Reinforce++
  • 训练数据:ORZ-57k、DeepMath
  • 参数:交互次数变化(0, 2, 4, 20次代码执行);模型缩放等

🍑关键结果

关键结果
  • ZeroTIR比不使用工具的ZeroRL好
  • Agent RL 缩放定律
    • 性能随模型大小增加而增长,32B > 7B > 1.5B
    • 交互次数和效果有单调关系,0到4可以提升15个百分点但4以后则会递减,表明模型可能已经学会了

(2505) ARTIST: Agentic Reasoning and Tool Integration for LLMs via Reinforcement Learning

ARTIST 摘要

❓问题背景

问题背景
  • 真实世界问题需要动态多步推理外部环境交互自适应决策过程等能力。
  • LLM受限于自身静态知识和纯文本推理,在面对时效信息/复杂计算/依赖专业工具时,限制尤其明显

📕核心方法

ARTIST 核心方法
  • ARTIST 框架
    • 💥智能推理:每次rollout是动态的,模型自主决定是内部推理或外部工具交互
    • 🛠️动态工具集成:包括数学计算、python、专用函数、外部API、数据库等。
    • 🏆复合奖励机制答案奖励(2,0)格式奖励(0,0.5)工具执行奖励(计算成功调用比例)
  • ARTIST 架构
  • ARTIST 方法(RTO)

✍️实验配置

ARTIST 实验配置
  • 模型:Qwen2.5-7B/14B
  • 算法:GRPO、Verl框架
  • 任务:数学推理和多轮函数调用 2个场景
  • 🔢数学推理
    • 训练数据:20k 数据(主要来自 NuminaMath)
    • 评估数据:AMC、AIME、MATH500、Olympiad Bench。
  • ☎️多轮函数调用
    • 训练数据:BFCL-v3 100个标注任务
    • 评估数据:τ-bench(复杂的多轮场景)BFCL v3(具有挑战性的函数场景)

🍑关键结果

ARTIST 关键结果
  • Bench 提升 🚀
    • 数学任务中,相比基线提升22%,甚至不少超过GPT-4o
    • 函数调用中,τ-bench效果是基线/prompt的2倍,BFCL效果也很强劲。
  • 涌现行为
    • 自适应工具选择、迭代自我纠正、战略信息收集、上下文感知多步推理
  • ARTIST 意义 ❤️
    • 增强问题解决能力(集成外部工具和环境,超越纯文本)
    • 减少幻觉
    • 提高可解释性:结构化推理格式使决策过程更透明
    • 适应新工具🔧 :基于RL的ARTIST能推广到新工具,无需重新训练

(2505) Nemotron-Research-Tool-N1: Tool-Using Language Models with Reinforced Reasoning

Nemotron-Research-Tool-N1

❓问题背景

问题背景

当前SFT让模型使用工具(蒸馏/死记硬背),存在问题

  • 缺乏推理能力👿:完全忽略过程,只关注最终调用是否正确
  • 假性推理(模仿式推理😢):只是模仿数据,并未真正理解

📕核心方法

Nemontron 核心方法

Rule-based RL方法:让模型自己学会推理,不是简单记忆模仿

  • 结构化思考模板:调用工具前 <think>...</think>一下
  • 二元奖励🎁:格式正确+工具调用准确才为1其余为0
  • 灵活的评估标准:不要求严格字符匹配,只关注工具调用正确性

✍️实验配置

实验配置
  • 模型:Qwen2.5-7/14B-Instruct
  • 数据:现有SFT数据(xLAM/ToolACE),过滤无效工具调用,多轮拆分成单轮
  • 算法:GRPO
  • 评估数据:BFCL(单步推理/多工具调用等7类任务)、API-Bank(3种难度,73种复杂API)

🍑关键结果

关键结果
  • 在API-Bank 达 82.19%,优于GPT-4o 77.16%;BFCL 全面超越GPT-4o,14B达新SOTA
  • RL优于SFT方法,具有强大泛化能力👍。
  • 基础模型很重要,Qwen2.5比LLaMA3好。

API-Bank

BFCL(new sota)

(2505) SkyRL-v0: Train Real-World Long-Horizon Agents via Reinforcement Learning

SkyRL 摘要
  • skyrl-v0
  • 基于VeRL+OpenHands构建了SkyRL在真实环境中使用多轮工具调用RL训练,设计一套可扩展env和异步高效rollouts系统
  • 基于Qwen3-8B/14B模型,从SWE-Gym筛选训练数据在SWE-Bench上验证均有提升

❓问题背景

问题背景
  • 现有RL任务大多单轮、短期、无状态交互(简单搜索/代码等)。但复杂真实任务需要高级agent能力(如多工具调用、code、测试长期规划等)。

    • 复杂任务:SWE-BenchWebDevWeb浏览
  • online-rl 训练具有挑战

    • 训练框架需要高效环境执行交互式rollout
    • 有效训练需要强大long horizon算法

📕核心方法

SkyRL 核心方法
  • SkyRL(基于VeRL+OpenHands构建):在真实环境执行多轮工具使用的RL训练流程

    • (agent训练) 支持在复杂交互环境中执行多步规划
    • 高吞吐量生成:异步并行rollouts,交叠轨迹计算密集和环境交互密集型两阶段。
    • 预设及可扩展的RL算法
  • 通过agents层扩展了verl

    • 高效的异步多轮rollouts
    • 通用工具使用
    • 通用和可扩展的环境执行
  • Reward设计

    • Agent和环境交互后,获取Git补丁进行测试问题解决1,未解决0
  • 系统设计

    • 使用远程sandbox server,扩展环境。把环境执行和训练分离确保高gpu利用率
    • 异步rollouts&三阶段生产者消费者pipeline

✍️实验配置

实验配置
  • 数据集📚:从SWE-Gym2.4k真实问题中过滤构建3个子集。(该数据非常难,gpt-4o仅4.55%-9.13%)

  • 模型 🤖:

    • OpenHands-7B-Agent -> SkyRL-Agent-7B-v
    • Qwen3-8B(非推理) -> SkyRL-Agent-8B-v0
    • Qwen3-14B(推理) -> SkyRL-Agent-14B-v0
  • 评估📊 :

    • 数据集:SWE-Bench
    • 评估框架:OpenHands scaffoldCodeAct Agent,使用3个动作空间:bash_execute, finish, str_replace_editor
    • 最多交互50轮,序列长度32k

🍑关键结果

  • 训练后的模型,比基线均有明显提升

三个尺寸模型:7B、8B、14B,四种实验方法:Zero-Shot, Zero-Shot(推理)、SFT、RL。具体如下表所示:

Resolved RateTechnique
Qwen3-14B18%Zero-Shot (Thinking)
SkyRL-Agent-14B-v0 (Best👍)21.6%Outcome based Reinforcement Learning
Qwen3-8B3.6%Zero-Shot (Non thinking)
SkyRL-Agent-8B-v09.4%Outcome based Reinforcement Learning
Qwen2.5-Coder-Instruct1.8%Zero-Shot
OpenHands-7B-Agent11.0%Supervised Fine-tuning
SkyRL-Agent-7B-v014.6%Outcome based Reinforcement Learning

(2504) OTC: Optimal Tool Calls via Reinforcement Learning

OTC 概要
  • OTC 论文
  • 针对RL工具效率问题🔨,提出工具生产力reward🎁,鼓励高效工具调用,简单有效。
  • 基于SearchR1和ToRL实验,保持准确率且工具调用大幅降低,训练快且稳定

❓问题背景

问题背景
  • 针对TIR,现有RL方法有效,但往往忽略工具使用效率只关注答案正确性,导致过多的工具调用。

📕核心方法

OTC 核心方法
  • OTC-PO方法(OTC-PPO/OTC-GRPO),简单易用鼓励模型以最少工具调用生成正确答案
  • 提出工具生产力reward:从纯正确性 --> 工具生产力(效率),鼓励高效工具调用
    • 工具生产力 = 任务收益(答案正确性) / 工具使用成本(调用次数),此处有详细公式。

工具生产力奖励随工具调用次数增多而减少(c为不同交互次数)

✍️实验配置

实验配置
  • Qwen2.5-3B/7B-Base,Qwen2.5-Math-1.5B/7B-Base
  • 工具:网页搜索💻、 代码执行 🔠
  • BaselineSearch R1(搜索借问答题) , ToRL(代码解数学)
  • 训练数据集📚:NQ/HotPotQA,ToRL 28k

🍑关键结果

关键结果
  • OTC-PPO/OTC-GRPO 在NQ/HotpotQA Bench上,保持准确率同时工具调用次数减少73.1%,效率提高229%
  • OTC 相比base,实现了更快、更稳定的优化。显著降低响应长度及工具调用次数。

效果好、效率高 👍

泛化性好 🌟

训练更快更稳定 🚀

(2504) ReTool: Reinforcement Learning for Strategic Tool Use in LLMs

ReTool
  • ReTool论文, Seed-ReTool分析文章
  • 构建高质code-integrated数据​,SFT+RL两阶段来训练LLM自行决定何时调用工具🔨
  • 使用code在数学任务上验证🔢:AIME24/25上超越s1-32B,使用DS-Qwen-32B效果更好👍

❓问题背景

问题背景
  • LLM在精确计算/符号操作等方面仍然存在问题,在数学领域尤其明显。
  • 现有方法存在弊端
    • PoT(思维程序推理):通常以预定方式进行 ✍️
    • SFT:受训练数据分布限制,泛化性不足 💔
    • 纯文本RL无工具集成 🛠️

📕核心方法

ReTool 核心方法
  • 提出ReTool RL框架,模型自行决定何时调用工具、通过RL进行强化、代码执行和内部推理动态交替。

  • SFT 冷启动阶段 👨‍🎓

    • 构建高质量数据,冷启动基础,教导何时及如何使用代码的基础。
    • 高质量code-integrated数据构建过程
      • 收集开源数学推理数据集
      • 过滤不合格数据dual-verify结合人工专家和DeepSeek-R1来过滤,得到Dinit
      • 构建code-integrated数据把手动计算过程替换成代码片段,最终得到DCI
  • RL 强化阶段 🤖

    • Rollout: 连接异步沙盒代码环境
    • Reward只看最终答案,正确为1,否则为-1

✍️实验配置

实验配置
  • 模型:Qwen2.5-32B-Instruct,
  • 算法:PPO算法,VeRL框架
  • 数据:SFT是自行构建的代码集成数据DCI,RL好像没说👿。
  • 参数:冷启动 2 epoch。16k长度,mini-bs 512,KL 0

🍎关键结果

关键结果
  • 仅需400 step,AIME24 67%、AIME25 49.3%,超越s1-32B,超越o1-preview。
  • 使用DS-R1-Qwen-32B效果更好,AIME24 72.5%、AIME25 54.3%。
  • 一些关键技术🔑:代码结果mask loss、KV-Cache Reuse、异步代码沙盒等。
  • 一些涌现行为:响应效率更快、代码利用率更高、代码策略时机、自我纠错等。

(2504) ToolRL: Reward is All Tool Learning Needs

概要

❓问题背景

问题背景
  • 当前LLM工具能力依赖SFT,存在泛化弱、探索不足等问题😞
  • RL展现推理和泛化能力,但针对多工具调用,reward设计仍然困难 💔
    • 不同工具参数不同,针对有效学习,粗粒度奖励信号无法提供细粒度反馈(仅判断答案是否正确)。
    • 在TIR多步交互中,需实时调整策略,奖励信号需有效指导每一步 🔨(工具选择和参数生成)。

📕核心方法

ToolRL 核心方法
  • Tool-Intregrated Reasoning (TIR) 任务定义

    • 给定n个工具τ=t1,t2,...,tn

    • 第k步推理轨迹推理->工具->结果r-推理步骤,τ-调用工具集合,o-工具返回结果

      sk=(r1,τ1,o1),(r2,τ2,o2),...,(rk,τk,ok)
    • 模型策略π的目标是最大化累计奖励

      maxπEπ[k=1K(R(sk,τk+1,ok+1))]
  • Reward定义格式 0, 1;正确性 [-3, 3],整体[-3, 4]

    • 正确性包括工具名匹配参数名匹配参数值匹配

✍️实验配置

实验配置
  • 模型:Qwen2.5-Instruct(1.5B/3B/7B)、LLama
  • 算法:GRPO,原始模型、SFT、PPO作为基线。verl框架。
  • 训练数据:混合ToolACE(多步决策)、Hammer(工具名掩码,增强泛化)、xLAM(多工具组合),共4K样本,分解为单步实例。
  • 评估基准
    • BFCL:单步推理,多工具调用等7类任务
    • API-Bank:73种复杂API,3种难度
    • Bamboogle:多跳QA数据

🍑关键结果

关键结果
  • TooRL 实现了稳健可扩展的训练,相比基模提升17%,相比SFT模型提升15% 🚀
  • 探索了4个维度的各种奖励配置,奖励类型(哪些方面需要奖励)、奖励尺度(奖励多少)、奖励粒度(详细程度)、奖励动态(如何随时间改变)。
    • 简洁胜于冗长:推理太长可能导致过度推理(引入噪声),不一定带来更好的工具调用性能
    • 动态奖励助力平滑过渡reward随训练步数实时调整,有助于LLM从简单泛化至复杂目标,逐步积累TIR能力
    • 细粒度反馈是关键每一次工具调用都能获得细粒度reward,这提升了LLM多步操作及外部工具使用能力

(2503) ToRL: Scaling Tool-Integrated RL

ToRL 概要

❓问题背景

问题背景
  • 纯文本推理复杂计算/方程求解等任务表现不好,需要使用工具
  • 但现有工具集成(TIR)方法依赖SFT,限制模型探索能力,无法自主发现最优工具策略。

📕核心方法

ToRL 核心方法
  • 设计ToRL框架,通过RL训练模型自主利用工具,探索、发现最佳工具使用策略,比SFT好。

  • ToRL 设计

    • Reward正确性:1, -1代码可执行:0, -0.5(实验发现此惩罚无效)。
    • 执行环境:使用Sandbox Fusion
    • 训练优化:控制最大工具调用次数c,超过后就强制纯文本推理
    • TIR推理轨迹推理->代码->结果,r-自然语言推理,c-代码,o-代码执行结果
    sk=r1,c1,o1,...,rk,ck,ok

✍️实验配置

实验配置
  • 模型:Qwen2.5-Math 1.5B、7B,

  • 算法:VERL框架,GRPO算法,

  • 数据集利用LIMR,抽取高质量样本,均衡难样本分布,从75k -> 筛选到28k,数据来源于NuminaMath/Math等竞赛题。

  • 参数:bs=128,temperature=1, 忽略KL散度

🍑关键结果

关键结果
  • ToRL-7B 在AIME24上达43.4%,比无工具RL模型提升14%超越现有TIR(Qwen-2.5-Math-指令-TIR)17%。
  • 通过ToRL,模型自主发展出新兴行为,如策略工具调用、无效代码自我调节、计算推理和分析推理的动态适应。

技术博客-阅读

(2505) haotian: Zero-TIR-Scale&Async-Pipline

Zero-TIR-Scale 摘要
  • 知乎haotian-Zero-TIR-Scale原文
  • 基于openrlhf实现的异步生成+pipline的环境交互框架,比async-rollout提速1.6倍,比sync-rollout快4倍,能更好支持更多实验及更大尺寸的zero-tir实验
  • 使用7B/14B在数学-代码工具上做实验验证。
实现思路
  • 让训练和rollout能并行跑完。
    • rollout完一个完整batch data存到队列。
    • 训练时读取队列数据训练。
    • 训练结束后,等待rollout结束才能更新参数。
  • 思路类似 verl-pipelineTrinity-RFT
    • 每个actor保存一个异步队列。训练前rollout N个batch存储到队列中,每次从队列中取数据
    • 向rollout-actor提交1次rollout任务,参数更新后再回收任务并存储到队列中。
    • 在replay-buffer数据不足支持一次参数更新时,增加rollout任务回收,确保rollout引擎不会过于堆积数据。

✍️实验配置

实验配置
  • 模型数据:Qwen25-base 7b/ 32b,
  • 训练数据:orz57k + dapo17k,deepmath-103k
  • 算法:reinforce++_baseline + replay-buffer-filter(acc/length) + clip-higher
  • 训练配置:exact-on-policy

🍎 关键结果

实验结果

7b-base-zero-tir

  • 训练数据影响
    • orz57k + dapo17k,更容易让base model使用code解math问题,前期code-ratio远高于deepmath103k。
    • 数据scale似乎没带来特别强的效果提升。
  • 环境交互次数
    • 环境交互次数 scale 对base model训练似乎很难,前期code比例很低,需更多step才能提升code比例
    • 测试阶段环境交互次数 scale 没有显示出特别好的效果,交互2次增加到4次,效果不明显
  • 总的来说:在math上,zero-tir比text-cot提升比较显著

32b-base-tir(知乎博主还没跑完,后续跟进)

Aime24在step300,可以跑到53.33,而text-co则需要参数更新上千次才能达到类似效果。

Replay-buffer需要根据acc选择数据,训练到后期:

  • replay-buffer攒batch的时间越来越慢,大部分rollout样本倍acc-filter过滤,训练速度越来越慢,导致pipeline没有大的提升
  • 此时,大概需要动态调整pipeline,增加pipeline,尽量避免单次replay-buffer不足就等待rollout的数据回收。

(2504) haotian: agent-rl之环境异步交互rollout

摘要
原生 Agent 能力

Agent能力已成标配,从以下2方面考虑:

  • Pretrain阶段:给模型先验知识,尽可能见多的tool/function/mcp-server等
  • RL阶段:不提sft,是因为人为经验不一定是好的,让模型自主探索才是最好的
Agent-RL 场景

Actor和环境

  • Actor需和环境不停交互:获取final rewardstep feedback
  • 环境:数据 + 交互/调用 + step/traj 反馈
    • final/traj reward(全局反馈): 如math场景,rule判断最终结果
    • step reward(中间反馈):如使用tool,判断tool中间结果,是step feeedback

两种scale

  • 环境scale扩展模型的环境泛化能力。
    • 依赖较多人工投入,可以mcp-server作为环境基础
    • 现有rl框架rollout基本是同步机制,难支持不同环境交互方法、环境交互延时可能大于rollout本身
  • 环境交互scale:扩展模型在特定环境上的效果及最优决策
  • Rollout动态组batch环境交互异步并行 则成为agent-rl比较关键的因素
    • batch越大,可能拖慢环境异步交互并行度,其异步效率是关键因素

agent-rl框架(实现)

openrlhf/verl的rollout是同步引擎,直观就是同步改成异步好了rollout变成server,做异步消息队列

  • 注意:截止0522,目前verl/openrlhf均有异步rollout开源实现。verl-agent
Agent-RL haotian 框架实现
  • 在ray-rollout-actor里启动univorn,提供serving;实现消息队列+动态组batch,实现异步roolout改造
  • 环境使用fastapi/server,配合asnycio并发执行
  • 将每个prompt需要的环境组group,并在该group内组batch,实现prompt和环境绑定
  • 每次环境交互完,需要等待一点时间,尽可能组batch再做下一轮rollout

基于该实现,博主测试了math+tir场景下rollout+环境交互耗时:(tool=为python code)

  • 同步:全部prompt vllm-rollout,for循环串行环境交互,拼接环境反馈,下一轮vllm-rollout
  • 异步:组batch vllm-rollout,并行环境交互,拼接环境反馈,动态组batch 下一轮vllm-rollout

(2504) haotian: ZERO-TIR-RL: 以小搏大

ZERO-TIR-RL 摘要
Zero-TIR vs Qwen2.5-Math

Tool-Integrated Reasoning(TIR),注意TIR不仅限于Code环境

  • Qwen2.5-Math基于SystemPrompt切换来选择是否调用tool。
  • Zero-TIR-RL:则通过RL训练模型自主决定是否调用tool。

常见Agent-RL为搜索场景,比如search-r1, r1-searcher等,其使用向量检索作为tool,基于base跑zero-rl提升模型问答能力。

方法特点。
TIR-SFT强制模型每道题都是有code解决。这类工作比较多。
TIR-RL不强制,通过RL自行决定是否使用python-code解题。

📕核心方法

同论文Agent RL Scaling Law一致,引入code环境,生成python code来解题把结果(环境反馈)拼接回去

✍️实验设置

实验设置
  • 模型:Qwen25-7b-base
  • 训练数据:orz-57k数据
  • prompt:加上 you can use python-code to solve your problem
  • reward 设置
    • Code-reward:response中出现code的比例
    • Code-in-correct:response中出现code且答案正确的比例
  • 环境最大交互次数:2

🍑实验结果

Zero-TIR 实验结果
  • zero-tir比不带工具的zero-rl收敛效率和效果更好
  • math+code环境,code-reward先降后升,随code比例提高,acc也提高
  • code-in-correct和code-reard基本一致。
讨论:是否需要把环境反馈加入loss?
  • 按理说env是一个observation,不该被计入loss;但具备gt的环境,预测输出也是make-sense的。相当于让模型模拟环境,是一个dreamerworld model
  • 模拟环境阶段:不加env-mask,预测环境输出。通过内部世界模型进行模拟训练,模型快速探索各种action 策略,找到最优方案。
  • 真实环境阶段:加env-mask,不预测环境输出。模型和环境互动,获取真实反馈。
总访客数:   ·   总访问量:
PLM's Blog @ 2016 - 2025