MUA-RL
Agentic Tool Use · arXiv 2025

MUA-RL:把「会变卦的用户」塞进 RL 循环

多轮工具调用里,用户会追问、补信息、改主意,而现有的 agentic RL 大多面对脚本化的问题单和固定环境。 这篇把 LLM 扮演的用户放进 GRPO 的 rollout,让 agent 一边和用户对话澄清意图、一边调工具查数据库, 奖励只看最终任务是否完成。代价是全流程依赖 GPT-4o 当用户模拟器,且只在 TAU1 的 retail/airline 上训。

Weikang Zhao, Xili Wang et al. · 美团 / 中科院自动化所 / 北大 arXiv 2508.18669 ↗ 代码:论文称将开源于 github.com/zzwkk/MUA-RL(v1 中标注「will be open-sourced」)
TL;DR · 30 秒抓住核心

问题不是「不会调工具」,而是「不会和人来回核对」。论文把 rollout 从「文本生成」推到「多步调工具」再推到 「多轮用户交互 + 实时工具执行」:agent 每一轮可以选择调工具或给用户发消息,LLM 用户按 agent 的回复动态回应。

训练配方极简:SFT 冷启动约 2000 条轨迹 → GRPO(β=0.001、每 query 8 个 rollout、最长 32768 token、最多 30 轮)→ 二元奖励(完成 1,否则 0),工具结果与用户消息在 loss 里被掩码。

最亮眼的是泛化:用 TAU1 的 retail(115 题)+ airline(50 题)训练,在没见过的 TAU2 Telecom 上 MUA-RL-32B 的 TCR 从冷启动的 21.6% 拉到 45.1%;但 8B 在 BFCL-V3 上反而比冷启动低。

72.6
MUA-RL-32B · TAU1 Retail(基线 47.6)
45.1% TCR
MUA-RL-32B · TAU2 Telecom(冷启动 21.6%)
28.0 点
Telecom 成功率:32B 的 TCR 45.1 vs 成功率 28.3,相差 28.0 个百分点(25B 级 Qwen3-235B 成功率仅 24.6)
01

用户会变卦,环境却按剧本走

读完这节你应该知道:为什么「多轮工具调用」不是把单轮函数调用重复几次。

论文在 §1 里把真实用户的需求描述为「highly dynamic and unpredictable」:用户会「根据模型的回复调整问题和预期」, 形成「a feedback loop that requires continuous bidirectional adaptation」。在 TAU 这类任务里,超过一半的槽位信息 agent 无法直接从工具拿到,必须开口问用户;而用户只会在被问到(或按 policy 规定)时才给出关键信息。

形式化上(§3.1, Eq.1),一条轨迹是 o1,user → t1 → o1,db → … → m1 → … 的交替:工具调用 ti 后得到数据库观测 oi,db,发给用户消息 mi 后得到用户观测 oi,user。每一轮 agent 自己决定调几个工具、要不要先说话。

难点在于「每一步都不是独立可验证的」:同一次订单修改,先问地址还是先查订单都行;用户第一次回答常常含糊,需要追问。 这种路径依赖让「每步都给格式分」的奖励容易把 agent 引到复制某种回复模板上,而不是真的解决任务。

02

两类前人都停在「环境是死的」

读完这节你应该知道:现有 RL 的 rollout 缺的到底是哪一环。

A

文本 / 多步工具 RL

Retool · SkyRL · RAGEN · Search-R1 …

论文 §1:这些系统「operate in predetermined environments and rely on pre-scripted queries」。 rollout 里 agent 要么只输出文本拿奖励,要么和代码沙箱、Docker、搜索引擎这类「数据库」交替交互(§3.3.2, Figure 4(a)(b))。 它们证明了工具执行能进训练循环,但没有用户这个角色。

B

LLM 模拟人类 + SFT

Generative Agents · PLM world models · 各类工具轨迹合成

LLM 可以扮演用户来造数据、做基准里的 user simulator(TAU 评测本身就用 LLM 用户)。论文 §3.3.2 承认已有工作「explored using LLMs as simulators of human characters」, 但指出这些模拟没被放进大规模 RL rollout,agent 因此学不到「对动态用户的反向适配」。

于是缺口很清楚:RL 训练里有真实的工具和数据库,唯独没有会随 agent 回复而改变行为的用户。 MUA-RL 就是把 A 的工具执行和 B 的 LLM 用户拼在同一个 rollout 里(Figure 4(c))。

03

核心只有三件事:GRPO、掩码、0/1 奖励

读完这节你应该知道:adv 是怎么从一组 rollout 里算出来的,而本模拟和原文哪里不同。

第 1 件:组内归一化的优势

§3.3.1 采用 GRPO(Eq.2/3):对每个 query 采一组 G 个轨迹,组内标准化得到 advantage Ai = (ri − mean) / std,再做带裁剪的 ratio 目标并减去 KL。原文没写 std 的口径; 本页交互按 总体标准差(÷G,即 numpy 默认 df=0) 实现,下面的手算块同口径。原文的超参:裁剪系数 ε 未给出具体值, KL 系数 β = 0.001(§4.1)。

Ai = (ri − r̄) / std(r) ,   Li = min(ρiAi, clip(ρi, 1−ε, 1+ε)·Ai) − β·(ρi − 1 − ln ρi)   ,ρi = πθ/πold

Eq.2/3 的改写;GRPO 的 KL 项在 Eq.2 只写成 βDKL(πθ‖πref),具体估计用 k3 形式是页面自定,见交互说明。

第 2 件:用户消息与工具结果不进 loss

§4.1 的 “Loss mask strategy”:在 loss 计算时掩掉「tool execution results and user messages」的 token。 交互里把 4 笔交易的 token 范围可视化——只有 agent 自己生成的部分(标 self)参与梯度。

user msg agent 发言 tool 结果 tool call agent 最终

示意排布(agent 发言 → 调工具 → 工具返回 → … → 任务完成)。原文只给了「掩掉 tool results 和 user messages」这一句, 没说明 tool call 参数本身是否参与 loss;这里按「agent 生成的一切都参与」画,属于推断。实际轨迹里 tool call 常以格式化文本写在 agent 消息内,二者无法从原文区分。

第 3 件:奖励只剩 0 或 1

§3.3.3:只有 agent「successfully fulfills the task in accordance with the system prompt」时才 r = 1,否则 r = 0。 论文给的理由是「Robustness to dialogue variation」与「Mitigation of reward hacking」:不限定走哪条对话路径,也不让 agent 靠输出格式骗分。 §4.1 还特别说明:训练时去掉了 TAU1 原本的对话内容要求(例如必须告诉用户某件衣服的库存)——因为作者观察到这些要求 「impede the model’s ability to learn correct tool invocation patterns」。

y₁ r=1.00
A=1.1180 · L=1.1180
y₂ r=0.00
A=-1.1180 · L=-1.1180
y₃ r=0.50
A=0.0000 · L=0.0000
y₄ r=0.00
A=-1.1180 · L=-1.1180
r₅=1.00
A=1.1180 · L=1.1180
组统计 · 总体标准差(÷N)
N=5 · mean 0.5000 · std 0.4472(总体)· 组内有 3 种奖励,adv 非零
ρ=1.0:裁剪不生效,Lᵢ = ρᵢAᵢ − β(ρᵢ−1−ln ρᵢ) = Aᵢ(KL=0)

交互覆盖:Eq.3 的组内标准化、Eq.2 的裁剪与 KL 惩罚(KL 用 k3 估计 ρ−1−ln ρ)。 未覆盖:多 token 上对 ratio 取和再相除的实际计算、πref 与 πold 分开(这里把 ref 概率当 1,即 KL 只相对 old 计)、 原文未给出的 ε 默认值。这是简化模拟,4 个固定 rollout + 1 个可调 rollout(r₅)是页面自定的例子: 前四个奖励 {1, 0, 0.5, 0} 用来让组内出现多种取值,r₅ 可以让人手动改变组均值与 std; MUA-RL 实际奖励只有 0/1(§3.3.3),若一组全 0 或全 1,Eq.3 的分母为 0,原文未讨论这一情形推断。

手算四组参数与上方读数逐位一致

第 1 组:r = {1, 0, 0.5, 0},ρ = 1.0,ε = 0.2,β = 0.01。(这组对应 r₅ 滑到 0 时的前 4 个固定 rollout;β 拉大是为了让 KL 项可见。)

均值 = (1+0+0.5+0)/4 = 0.375;离差² = 0.390625 + 0.140625 + 0.015625 + 0.140625 = 0.6875; 总体方差 = 0.6875/4 = 0.171875,总体 std = √0.171875 = 0.414578098794425(四位 0.4146)。

A = (r − 0.375)/0.414578… = 1.5076(1.507556722888818), −0.9045(−0.904534033733291), 0.3015(0.301511344577764), −0.9045(同第 2 项)。 ρ=1.0 时 clip(1.0, 0.8, 1.2)=1.0,L = 1.0·A − 0.01·(1−1−ln1) = A,与交互读数 A=… · L=… 逐位一致。

第 2 组:r = {1, 0, 0.5, 0, 1}(即 4 个固定 rollout + r₅=1,交互的默认视图),ρ = 1.0,ε = 0.2,β = 0.001(默认值;ρ=1 时 KL=0,β 取什么都一样)。

N = 5,均值 = (1+0+0.5+0+1)/5 = 0.5000;离差² = 0.25 + 0.25 + 0 + 0.25 + 0.25 = 1.00; 总体方差 = 1.00/5 = 0.2,总体 std = √0.2 = 0.447213595499958(四位 0.4472)。

A = (r − 0.5)/0.447213… = 1.1180(1.118033988749895), −1.1180(−1.118033988749895), 0.0000(0), −1.1180, 1.1180。 L = A − 0.001·(1−1−ln1) = A。交互默认读数「N=5 · mean 0.5000 · std 0.4472」与五个 slot 的 A/L 都与此逐位一致。

第 3 组(ρ=1.4):r = {1, 0, 0.5, 0},ρ = 1.4,ε = 0.2,β = 0.01。(r₅ 滑到 0、β 拉到 0.01 时的前 4 个固定 rollout。)A 同第 1 组,A 全程保留全精度,只在显示时四舍五入。

ρ=1.4 > 1+ε=1.2,clip(1.4, 0.8, 1.2) = 1.2;KL = 1.4 − 1 − ln 1.4 = 0.06352776337878707(四位 0.0635),β·KL = 0.01 × 0.0635278 = 0.000635278。

对每个 A 先算 min(ρA, clip(ρ)A),再减 β·KL:

L₁:ρA = 1.4×1.507556722888818 = 2.1105794,clip(ρ)A = 1.2×1.507556722888818 = 1.8090681 → min = 1.8090681; L₁ = 1.8090681 − 0.0006353 = 1.8084。

L₂:ρA = 1.4×(−0.904534033733291) = −1.2663476,clip(ρ)A = 1.2×(−0.904534033733291) = −1.0854408 → 取 min 时负数上界更小,ρA 更小,min = −1.2663476;L₂ = −1.2663476 − 0.0006353 = −1.2670。

L₃:ρA = 1.4×0.301511344577764 = 0.4221159,clip(ρ)A = 1.2×0.301511344577764 = 0.3618136 → min = 0.3618136; L₃ = 0.3618136 − 0.0006353 = 0.3612。(若误用非裁剪的 1.4A 会得到 0.4215;若再把 0.3015 先截成四位会得到 0.3584,两者都不是交互输出。)

L₄:同 L₂,−1.2670。

交互中把 r₅ 滑到 0、β 拉到 0.01、ρ 切到 1.4,四个 slot 依次显示 A=1.5076 / −0.9045 / 0.3015 / −0.9045,L = 1.8084 / −1.2670 / 0.3612 / −1.2670,与上面逐位一致。

第 4 组(默认视图切到 ρ=1.4):r = {1, 0, 0.5, 0, 1},ρ = 1.4,ε = 0.2,β = 0.01。A 同第 2 组。

ρA = 1.4×1.118033988749895 = 1.5652476,clip(ρ)A = 1.2×1.118033988749895 = 1.3416408 → min = 1.3416408; L₁ = 1.3416408 − 0.0006353 = 1.3410;L₂ = 1.4×(−1.118033988749895) − 0.0006353 = −1.5659; L₃(A=0):min(0, 0) − 0.0006353 = −0.0006;L₄ 同 L₂,L₅ 同 L₁。 交互默认切到 ρ=1.4 时五个 slot 即显示这组。

注:标准差口径会明显改变 adv——同样 r={1,0,0.5,0,1},若改用样本 std(÷(N−1),0.5),A 会变成 1.0000 / −1.0000 / 0 / −1.0000 / 1.0000,和交互读数对不上;交互一律用总体 std(÷N),原文 Eq.3 未写明用的是哪一种。

04

1000 条训练题、25 个 epoch、每轮 8 条轨迹

读完这节你应该知道:这套训练要花多少、哪些开销原文没报。

冷启动

≈2000 条轨迹

9 个场景(5 个合成 + 4 个真实 MCP server)。batch 128、2 个 epoch、AdamW、lr 5e-6、cosine 衰减(§4.1)。两条合成管线:LLM 模拟工具结果、真实 MCP 执行(§3.2)。全部数据经「人工专家 + DeepSeek-R1」双重校验。

RL

165 道题

训练数据是 TAU1 的 115 retail + 50 airline 题。25 个 epoch、batch 32、每 query 8 个 rollout、KL β=0.001、序列上限 32768 token、每题最多 30 轮、rollout 温度 1.0(§4.1)。

评测

temp = 0

全部 non-thinking、全走 Function Calling、温度 0.0;TAU1/TAU2 与 ACEBench 用 GPT-4.1 当用户(§4.1),每个测试集重复 4 次取平均。

规模上,一次 RL step 要同时跑 agent 生成和用户模拟器回复,每个 query 8 个 rollout、每个最多 30 轮、32k token; 论文说基于 VeRL 实现并接入「a real, operational database environment」验证工具调用结果,但没有报告训练耗时或 GPU 数, 与 SFT 或离线 RL 的成本对比也未给出。

TAU2 Telecom 的评测指标是 TCR(§4.1):TCR(q) = |{cᵢ ∈ C_q : satisfied(cᵢ)}| / |C_q|, 即满足的验证项占比,从 0.0% 到 100.0%,用来衡量部分完成。注意这是 0–100 的百分比刻度,而其余 TAU 数字是任务成功率刻度,两者不可直接相减比较。

05

三轮 rollout:说话、调工具、被掩码

读完这节你应该知道:一条轨迹里谁产出了什么、哪些 token 进了梯度。

Policy LLM
Qwen3-8B/14B/32B
数据库 / 工具
实时执行,结果进 obs
用户模拟器
GPT-4o-2024-11-20
tool call tool result(掩码) agent 消息
TURN k(Figure 4(c) 的多轮用户交互 rollout)
  1. agent 读入 system prompt + 工具说明 + 历史(含被掩码的 user/tool 段),生成文本或 tool call;
  2. 若是 tool call,数据库实时执行,结果追加为 tool 观测;若是消息,GPT-4o 用户按人格 + 任务指令回复;
  3. 直到任务完成、用户道别或达到 30 轮上限;整条轨迹写入 buffer;
  4. TAU1 评测器跑验证项,完成 → r=1,否则 r=0;与同题另外 7 条轨迹一起做组内标准化(Eq.3)。
Figure 4(c) 与 §3.3.2、§4.1 的流程化;箭头方向表示消息流向。虚线箭头同时与实线重叠,仅用于示意用户回复路径。
训练中的行为变化§4.3.1、Figure 5–6
  • rollout 轮数先升后稳,平均约 21–23 轮;而回复长度基本不变——作者据此认为提升来自「更多轮的结构化交互」,不是测试时加长输出。
  • Calculate、Think、Transfer to Human Agent 三个通用工具的调用频次都下降;作者解释为减少了对「对完成任务贡献有限」的工具的依赖。
  • KL 曲线随训练上升(模型逐渐偏离冷启动模型);MUA-RL-8B 波动明显大于 14B/32B,作者归因于小模型容量有限。梯度范数曲线显示训练稳定。
  • Figure 5 的曲线未转录(纵轴数值以图形式给出,正文只描述了趋势)。
06

小模型追上大模型;冷启动在最难的域反而掉分

读完这节你应该知道:哪些提升是稳的,哪些只出现在个别格子。

Qwen3-32B
47.6
58.9
72.6
Non-thinkingCold-startMUA-RL

柱高按当前标签下的最大值归一。TAU1 Retail(Table 1):MUA-RL-32B 比原始 Qwen3-32B 高 25.0 个百分点(72.6 − 47.6,相对 +52.5%), 比冷启动高 13.7 个百分点(72.6 − 58.9,相对 +23.3%)。 TAU2 Telecom(Table 1):MUA-RL-32B 的任务成功率 28.3 高于原始 Qwen3-32B 的 24.8,但仍低于 GPT-4.1(38.9); 比冷启动高 9.0 个百分点(28.3 − 19.3,相对 +46.6%),比原始模型高 3.5 个百分点(28.3 − 24.8,相对 +14.1%)。

Table 1 转录(TAU1 / TAU2;每个模型均为 non-thinking)

ModelTAU1 RetailTAU1 AirlineTAU2 RetailTAU2 AirlineTAU2 TelecomTelecom TCR
GPT-4o-2024-11-2063.045.567.346.924.1–
GPT-4.166.542.570.253.038.9–
DeepSeek-V3-032470.442.464.737.032.9–
Qwen3-235B-A22B65.232.064.936.024.6–
Qwen3-8B40.011.041.012.519.122.9%
Qwen3-8B Cold-start36.712.031.416.09.012.1%
MUA-RL-8B56.529.549.819.021.825.2%
Qwen3-14B46.913.043.114.829.946.6%
Qwen3-14B Cold-start50.823.053.724.023.532.9%
MUA-RL-14B65.942.066.038.033.454.3%
Qwen3-32B47.618.550.223.524.823.7%
Qwen3-32B Cold-start58.936.058.231.119.321.6%
MUA-RL-32B72.646.567.345.428.345.1%

高亮行标的是 MUA-RL 系列,不代表每格都是全表最高:TAU2 Retail 与 TAU2 Telecom 的最高值属于 GPT-4o/GPT-4.1。Table 1 中的 Qwen3-30B-A3B、Qwen3-4B 两行未转录。

Table 2 转录(BFCL-V3 Multi Turn / ACEBench Agent,Overall)

ModelBFCL BaseMiss FuncMiss ParamLong CtxBFCL OverallACEBe Multi TurnACEBe Multi StepACEBe Overall
GPT-4.148.034.035.045.540.583.390.086.7
DeepSeek-V3-032441.021.023.034.529.873.375.074.2
Qwen3-8B20.04.013.010.011.833.345.039.2
Qwen3-8B Cold-start24.011.016.510.015.436.755.045.9
MUA-RL-8B21.011.515.011.014.646.760.053.3
Qwen3-32B29.511.020.018.019.660.085.072.5
Qwen3-32B Cold-start35.021.028.519.526.053.3100.076.6
MUA-RL-32B42.020.030.021.528.470.095.082.5

为控制篇幅只转录 8B/32B 两组及两个强基线;14B 组与 Qwen3-30B-A3B、Qwen3-235B-A22B 行未转录(原文 Table 2 可查)。

反直觉 1

冷启动在 Telecom 上掉分

Qwen3-32B 在 TAU2 Telecom 从 24.8 掉到冷启动的 19.3(−5.5 个百分点),14B 从 29.9 掉到 23.5(−6.4);8B 也从 19.1 掉到 9.0(−10.1)。 作者归因于冷启动数据带来了「domain-specific patterns and biases」,在训练分布外难以泛化。MUA-RL 之后三个规模都超过冷启动,32B 达 28.3(比冷启动 +9.0 个百分点)。

反直觉 2

8B 在 BFCL 上没赢冷启动

MUA-RL-8B 的 BFCL-V3 Overall 是 14.6,低于冷启动的 15.4(−0.8 个百分点),也低于 32B 冷启动的 26.0。 而在 ACEBench Agent 上 8B 从冷启动 45.9 升到 53.3(+7.4 个百分点)。论文未专门讨论 8B 在 BFCL 上的这一回退。

Table 3 消融转录(第 3 列起为相对 Qwen3-32B 和相对 MUA-RL-32B 的变化)

ModelTAU2 RetailTAU2 AirlineTAU2 TelecomBFCL BaseBFCL OverallACEBe Overall
Qwen3-32B50.223.524.829.519.672.5
+ MUA-RL w/o RL58.2 (↑8.0, ↓9.1)31.1 (↑7.6, ↓14.3)19.3 (↓5.5, ↓9.0)35.0 (↑5.5, ↓7.0)26.0 (↑6.4, ↓2.4)76.6 (↑4.1, ↓5.9)
+ MUA-RL w/o cold-start61.6 (↑11.4, ↓5.7)41.0 (↑17.5, ↓4.4)28.1 (↑3.3, ↓0.2)29.5 (0.0, ↓12.5)19.3 (↓0.3, ↓9.1)82.5 (↑10.0, 0.0)
MUA-RL-32B67.345.428.342.028.482.5

去掉任意一阶段都会掉分:w/o cold-start 在 TAU2 Retail 拿 61.6(比完整模型低 5.7),在 BFCL Overall 只有 19.3(比 Qwen3-32B 基线还低 0.3); w/o RL(即只冷启动)在 Table 3 所列各项均低于完整模型。正文把这两者概括为「eliminating any stage leads to notable performance degradation」。 值得注意的是 Table 3 里 w/o cold-start 的 BFCL Overall(19.3)甚至低于原始基线(19.6),正文没有单独讨论。

07

用户是 GPT-4o,训练域只有两个

读完这节你应该知道:什么条件下结果可以照搬,什么条件下要打问号。