本章将深入探讨Agentic-RL(基于强化学习的智能体训练)这一让智能体实现"自主进化"的关键技术。从LLM训练的基础流程出发,解析监督微调(SFT)与群组相对策略优化(GRPO)的训练流程,对比PPO、DPO、GRPO、RLVR等核心算法的演进逻辑,并介绍HelloAgents框架中Agentic RL的四层架构设计与GSM8K数学推理数据集上的训练实践,帮助读者理解如何通过强化学习让智能体学会推理与工具使用。
在前面的章节中,我们构建了具备推理、记忆、工具调用和通信能力的智能体。然而,这些能力主要来源于两个方面:一是大语言模型本身的预训练知识,二是我们通过精心设计的提示词和工具系统赋予它的行为模式。
但有一个根本性的问题始终没有解决:智能体的行为模式是被"设计"出来的,而不是被"训练"出来的。
当智能体处理复杂任务时表现不佳,我们通常会调整提示词、增加工具或优化工作流------这些都是在外部 调整智能体的行为,而非让智能体自己 学会更好地完成任务。这就引出了一个核心问题:如何让智能体具备更强的推理能力?如何让智能体学会更好地使用工具?如何让智能体能够自我改进?
这正是 Agentic RL(基于强化学习的智能体训练) 要解决的核心问题。本章将为HelloAgents框架引入强化学习训练能力,让你能够训练出具备推理、工具使用等高级能力的智能体。
📊 全文知识框架图
#mermaid-svg-UeAQ3f2vUoxabfSj{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-UeAQ3f2vUoxabfSj .error-icon{fill:#552222;}#mermaid-svg-UeAQ3f2vUoxabfSj .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-UeAQ3f2vUoxabfSj .marker{fill:#333333;stroke:#333333;}#mermaid-svg-UeAQ3f2vUoxabfSj .marker.cross{stroke:#333333;}#mermaid-svg-UeAQ3f2vUoxabfSj svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-UeAQ3f2vUoxabfSj p{margin:0;}#mermaid-svg-UeAQ3f2vUoxabfSj .edge{stroke-width:3;}#mermaid-svg-UeAQ3f2vUoxabfSj .section--1 rect,#mermaid-svg-UeAQ3f2vUoxabfSj .section--1 path,#mermaid-svg-UeAQ3f2vUoxabfSj .section--1 circle,#mermaid-svg-UeAQ3f2vUoxabfSj .section--1 polygon,#mermaid-svg-UeAQ3f2vUoxabfSj .section--1 path{fill:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .section--1 text{fill:#ffffff;}#mermaid-svg-UeAQ3f2vUoxabfSj .node-icon--1{font-size:40px;color:#ffffff;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-edge--1{stroke:hsl(240, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-depth--1{stroke-width:17;}#mermaid-svg-UeAQ3f2vUoxabfSj .section--1 line{stroke:hsl(60, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled circle,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:lightgray;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:#efefef;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-0 rect,#mermaid-svg-UeAQ3f2vUoxabfSj .section-0 path,#mermaid-svg-UeAQ3f2vUoxabfSj .section-0 circle,#mermaid-svg-UeAQ3f2vUoxabfSj .section-0 polygon,#mermaid-svg-UeAQ3f2vUoxabfSj .section-0 path{fill:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-UeAQ3f2vUoxabfSj .section-0 text{fill:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .node-icon-0{font-size:40px;color:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-edge-0{stroke:hsl(60, 100%, 73.5294117647%);}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-depth-0{stroke-width:14;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-0 line{stroke:hsl(240, 100%, 83.5294117647%);stroke-width:3;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled circle,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:lightgray;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:#efefef;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-1 rect,#mermaid-svg-UeAQ3f2vUoxabfSj .section-1 path,#mermaid-svg-UeAQ3f2vUoxabfSj .section-1 circle,#mermaid-svg-UeAQ3f2vUoxabfSj .section-1 polygon,#mermaid-svg-UeAQ3f2vUoxabfSj .section-1 path{fill:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .section-1 text{fill:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .node-icon-1{font-size:40px;color:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-edge-1{stroke:hsl(80, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-depth-1{stroke-width:11;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-1 line{stroke:hsl(260, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled circle,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:lightgray;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:#efefef;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-2 rect,#mermaid-svg-UeAQ3f2vUoxabfSj .section-2 path,#mermaid-svg-UeAQ3f2vUoxabfSj .section-2 circle,#mermaid-svg-UeAQ3f2vUoxabfSj .section-2 polygon,#mermaid-svg-UeAQ3f2vUoxabfSj .section-2 path{fill:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .section-2 text{fill:#ffffff;}#mermaid-svg-UeAQ3f2vUoxabfSj .node-icon-2{font-size:40px;color:#ffffff;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-edge-2{stroke:hsl(270, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-depth-2{stroke-width:8;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-2 line{stroke:hsl(90, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled circle,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:lightgray;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:#efefef;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-3 rect,#mermaid-svg-UeAQ3f2vUoxabfSj .section-3 path,#mermaid-svg-UeAQ3f2vUoxabfSj .section-3 circle,#mermaid-svg-UeAQ3f2vUoxabfSj .section-3 polygon,#mermaid-svg-UeAQ3f2vUoxabfSj .section-3 path{fill:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .section-3 text{fill:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .node-icon-3{font-size:40px;color:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-edge-3{stroke:hsl(300, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-depth-3{stroke-width:5;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-3 line{stroke:hsl(120, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled circle,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:lightgray;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:#efefef;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-4 rect,#mermaid-svg-UeAQ3f2vUoxabfSj .section-4 path,#mermaid-svg-UeAQ3f2vUoxabfSj .section-4 circle,#mermaid-svg-UeAQ3f2vUoxabfSj .section-4 polygon,#mermaid-svg-UeAQ3f2vUoxabfSj .section-4 path{fill:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .section-4 text{fill:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .node-icon-4{font-size:40px;color:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-edge-4{stroke:hsl(330, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-depth-4{stroke-width:2;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-4 line{stroke:hsl(150, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled circle,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:lightgray;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:#efefef;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-5 rect,#mermaid-svg-UeAQ3f2vUoxabfSj .section-5 path,#mermaid-svg-UeAQ3f2vUoxabfSj .section-5 circle,#mermaid-svg-UeAQ3f2vUoxabfSj .section-5 polygon,#mermaid-svg-UeAQ3f2vUoxabfSj .section-5 path{fill:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .section-5 text{fill:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .node-icon-5{font-size:40px;color:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-edge-5{stroke:hsl(0, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-depth-5{stroke-width:-1;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-5 line{stroke:hsl(180, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled circle,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:lightgray;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:#efefef;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-6 rect,#mermaid-svg-UeAQ3f2vUoxabfSj .section-6 path,#mermaid-svg-UeAQ3f2vUoxabfSj .section-6 circle,#mermaid-svg-UeAQ3f2vUoxabfSj .section-6 polygon,#mermaid-svg-UeAQ3f2vUoxabfSj .section-6 path{fill:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .section-6 text{fill:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .node-icon-6{font-size:40px;color:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-edge-6{stroke:hsl(30, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-depth-6{stroke-width:-4;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-6 line{stroke:hsl(210, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled circle,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:lightgray;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:#efefef;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-7 rect,#mermaid-svg-UeAQ3f2vUoxabfSj .section-7 path,#mermaid-svg-UeAQ3f2vUoxabfSj .section-7 circle,#mermaid-svg-UeAQ3f2vUoxabfSj .section-7 polygon,#mermaid-svg-UeAQ3f2vUoxabfSj .section-7 path{fill:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .section-7 text{fill:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .node-icon-7{font-size:40px;color:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-edge-7{stroke:hsl(90, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-depth-7{stroke-width:-7;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-7 line{stroke:hsl(270, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled circle,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:lightgray;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:#efefef;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-8 rect,#mermaid-svg-UeAQ3f2vUoxabfSj .section-8 path,#mermaid-svg-UeAQ3f2vUoxabfSj .section-8 circle,#mermaid-svg-UeAQ3f2vUoxabfSj .section-8 polygon,#mermaid-svg-UeAQ3f2vUoxabfSj .section-8 path{fill:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .section-8 text{fill:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .node-icon-8{font-size:40px;color:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-edge-8{stroke:hsl(150, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-depth-8{stroke-width:-10;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-8 line{stroke:hsl(330, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled circle,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:lightgray;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:#efefef;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-9 rect,#mermaid-svg-UeAQ3f2vUoxabfSj .section-9 path,#mermaid-svg-UeAQ3f2vUoxabfSj .section-9 circle,#mermaid-svg-UeAQ3f2vUoxabfSj .section-9 polygon,#mermaid-svg-UeAQ3f2vUoxabfSj .section-9 path{fill:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .section-9 text{fill:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .node-icon-9{font-size:40px;color:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-edge-9{stroke:hsl(180, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-depth-9{stroke-width:-13;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-9 line{stroke:hsl(0, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled circle,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:lightgray;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:#efefef;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-10 rect,#mermaid-svg-UeAQ3f2vUoxabfSj .section-10 path,#mermaid-svg-UeAQ3f2vUoxabfSj .section-10 circle,#mermaid-svg-UeAQ3f2vUoxabfSj .section-10 polygon,#mermaid-svg-UeAQ3f2vUoxabfSj .section-10 path{fill:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .section-10 text{fill:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .node-icon-10{font-size:40px;color:black;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-edge-10{stroke:hsl(210, 100%, 76.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .edge-depth-10{stroke-width:-16;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-10 line{stroke:hsl(30, 100%, 86.2745098039%);stroke-width:3;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled circle,#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:lightgray;}#mermaid-svg-UeAQ3f2vUoxabfSj .disabled text{fill:#efefef;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-root rect,#mermaid-svg-UeAQ3f2vUoxabfSj .section-root path,#mermaid-svg-UeAQ3f2vUoxabfSj .section-root circle,#mermaid-svg-UeAQ3f2vUoxabfSj .section-root polygon{fill:hsl(240, 100%, 46.2745098039%);}#mermaid-svg-UeAQ3f2vUoxabfSj .section-root text{fill:#ffffff;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-root span{color:#ffffff;}#mermaid-svg-UeAQ3f2vUoxabfSj .section-2 span{color:#ffffff;}#mermaid-svg-UeAQ3f2vUoxabfSj .icon-container{height:100%;display:flex;justify-content:center;align-items:center;}#mermaid-svg-UeAQ3f2vUoxabfSj .edge{fill:none;}#mermaid-svg-UeAQ3f2vUoxabfSj .mindmap-node-label{dy:1em;alignment-baseline:middle;text-anchor:middle;dominant-baseline:middle;text-align:center;}#mermaid-svg-UeAQ3f2vUoxabfSj :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Agentic-RL
什么是Agentic RL
从"被动对齐"到"主动决策"
核心思想:LLM作为可学习策略
与传统RL的区别
训练流程
第一阶段:SFT监督微调
数据准备
模型微调
第二阶段:GRPO强化学习
群组采样
相对优势估计
策略更新
核心算法对比
PPO:经典RLHF
DPO:删去奖励模型
GRPO:无需Critic网络
RLVR:基于规则验证
HelloAgents实现
四层架构
数据管理
奖励计算
训练逻辑
一、什么是Agentic RL?
1.1 从"会说"到"会做"
在深入技术细节之前,让我们先理解Agentic RL在整个智能体发展历程中的位置。
回顾我们构建智能体的方式,大致经历了三个阶段:
| 阶段 | 方法 | 特点 | 局限 |
|---|---|---|---|
| 第一阶段 | 提示工程 | 通过精心设计的提示词引导模型行为 | 依赖人工经验,难以规模化 |
| 第二阶段 | 工具与范式 | 通过ReAct、Reflection等范式组织行为 | 行为模式固定,缺乏自适应能力 |
| 第三阶段 | Agentic RL | 通过强化学习让模型自主优化行为 | 让智能体自己学会如何更好地完成任务 |
Agentic RL的出现标志着一次范式的转变------它将大语言模型从被动的序列生成器重新定义为嵌入于复杂、动态世界中的自主决策主体。它试图让LLM从"被动对齐"进化为"主动决策"的智能体,在动态环境中规划、行动、学习。
💡 通俗理解:如果说提示工程是"手把手教模型怎么做",那么Agentic RL就是"给模型一个目标,让它自己摸索怎么做得更好"。就像教孩子骑车------你不需要告诉他每块肌肉怎么动,只需要设定"保持平衡、向前走"的目标,让他自己在实践中学会。
1.2 Agentic RL的核心理念
Agentic RL的核心思想可以概括为一句话:将大语言模型视为一个可学习的策略(Policy),嵌入在一个顺序决策循环中。
在传统的LLM使用中,模型接收输入→生成输出→结束。这是一个单向的、无状态的过程。
在Agentic RL中,模型被置于一个持续的交互循环中:
#mermaid-svg-ekPYyWEr3oPvwIsJ{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ekPYyWEr3oPvwIsJ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ekPYyWEr3oPvwIsJ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ekPYyWEr3oPvwIsJ .error-icon{fill:#552222;}#mermaid-svg-ekPYyWEr3oPvwIsJ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ekPYyWEr3oPvwIsJ .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ekPYyWEr3oPvwIsJ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ekPYyWEr3oPvwIsJ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ekPYyWEr3oPvwIsJ .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ekPYyWEr3oPvwIsJ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ekPYyWEr3oPvwIsJ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ekPYyWEr3oPvwIsJ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ekPYyWEr3oPvwIsJ .marker.cross{stroke:#333333;}#mermaid-svg-ekPYyWEr3oPvwIsJ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ekPYyWEr3oPvwIsJ p{margin:0;}#mermaid-svg-ekPYyWEr3oPvwIsJ .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ekPYyWEr3oPvwIsJ .cluster-label text{fill:#333;}#mermaid-svg-ekPYyWEr3oPvwIsJ .cluster-label span{color:#333;}#mermaid-svg-ekPYyWEr3oPvwIsJ .cluster-label span p{background-color:transparent;}#mermaid-svg-ekPYyWEr3oPvwIsJ .label text,#mermaid-svg-ekPYyWEr3oPvwIsJ span{fill:#333;color:#333;}#mermaid-svg-ekPYyWEr3oPvwIsJ .node rect,#mermaid-svg-ekPYyWEr3oPvwIsJ .node circle,#mermaid-svg-ekPYyWEr3oPvwIsJ .node ellipse,#mermaid-svg-ekPYyWEr3oPvwIsJ .node polygon,#mermaid-svg-ekPYyWEr3oPvwIsJ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ekPYyWEr3oPvwIsJ .rough-node .label text,#mermaid-svg-ekPYyWEr3oPvwIsJ .node .label text,#mermaid-svg-ekPYyWEr3oPvwIsJ .image-shape .label,#mermaid-svg-ekPYyWEr3oPvwIsJ .icon-shape .label{text-anchor:middle;}#mermaid-svg-ekPYyWEr3oPvwIsJ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ekPYyWEr3oPvwIsJ .rough-node .label,#mermaid-svg-ekPYyWEr3oPvwIsJ .node .label,#mermaid-svg-ekPYyWEr3oPvwIsJ .image-shape .label,#mermaid-svg-ekPYyWEr3oPvwIsJ .icon-shape .label{text-align:center;}#mermaid-svg-ekPYyWEr3oPvwIsJ .node.clickable{cursor:pointer;}#mermaid-svg-ekPYyWEr3oPvwIsJ .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ekPYyWEr3oPvwIsJ .arrowheadPath{fill:#333333;}#mermaid-svg-ekPYyWEr3oPvwIsJ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ekPYyWEr3oPvwIsJ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ekPYyWEr3oPvwIsJ .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ekPYyWEr3oPvwIsJ .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ekPYyWEr3oPvwIsJ .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ekPYyWEr3oPvwIsJ .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ekPYyWEr3oPvwIsJ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ekPYyWEr3oPvwIsJ .cluster text{fill:#333;}#mermaid-svg-ekPYyWEr3oPvwIsJ .cluster span{color:#333;}#mermaid-svg-ekPYyWEr3oPvwIsJ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ekPYyWEr3oPvwIsJ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ekPYyWEr3oPvwIsJ rect.text{fill:none;stroke-width:0;}#mermaid-svg-ekPYyWEr3oPvwIsJ .icon-shape,#mermaid-svg-ekPYyWEr3oPvwIsJ .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ekPYyWEr3oPvwIsJ .icon-shape p,#mermaid-svg-ekPYyWEr3oPvwIsJ .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ekPYyWEr3oPvwIsJ .icon-shape .label rect,#mermaid-svg-ekPYyWEr3oPvwIsJ .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ekPYyWEr3oPvwIsJ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ekPYyWEr3oPvwIsJ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ekPYyWEr3oPvwIsJ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Agentic RL交互循环
更新策略
👀 观察 Observation
环境状态/用户输入
🧠 策略 Policy
LLM决策
⚡ 行动 Action
工具调用/输出
🏆 奖励 Reward
环境反馈
这个循环的每个环节对应着强化学习中的核心概念:
| 概念 | 在Agentic RL中的对应 | 说明 |
|---|---|---|
| 环境(Environment) | 用户对话、工具API、外部系统 | 智能体所处的外部世界 |
| 状态(State) | 对话历史、任务进度、上下文 | 当前时刻的完整情境 |
| 动作(Action) | 生成文本、调用工具、执行代码 | 智能体采取的行为 |
| 奖励(Reward) | 任务完成度、用户反馈、结果正确性 | 衡量行为好坏的信号 |
| 策略(Policy) | LLM的权重和生成策略 | 决定在什么状态下采取什么行动 |
1.3 Agentic RL vs 传统RL
Agentic RL与传统强化学习(如用于游戏AI的RL)有显著区别:
| 对比维度 | 传统RL | Agentic RL |
|---|---|---|
| 策略载体 | 小型神经网络(MLP/CNN) | 大语言模型(千亿参数) |
| 动作空间 | 离散(如上下左右)或连续 | 离散但巨大(整个词表) |
| 状态空间 | 结构化(游戏画面、传感器数据) | 非结构化(自然语言) |
| 训练数据 | 环境交互产生的轨迹 | 语言数据 + 环境交互 |
| 核心挑战 | 样本效率、探索与利用 | 稳定性、计算成本、奖励设计 |
💡 通俗理解:传统RL像是训练一只狗学会"坐下"------动作简单,状态清晰,奖励明确。Agentic RL则像是训练一个CEO经营一家公司------需要理解复杂信息、做出多步决策、承担长期后果。
二、Agentic RL的训练流程:从SFT到GRPO
Agentic RL的训练并非一步到位,而是遵循一个清晰的两阶段流程:先通过SFT"热身",再通过GRPO"强化" 。
2.1 为什么需要SFT?
一个关键的问题是:为什么不能直接从零开始用RL训练智能体?
答案是:直接从头用RL训练LLM智能体极其困难。原因主要有三个:
- 探索空间巨大:LLM的动作空间是整个词表,在如此巨大的空间中随机探索几乎不可能找到有效行为
- 奖励稀疏:大多数中间步骤无法获得有效奖励信号,只有最终结果才有反馈
- 稳定性问题:直接在大规模神经网络上运行RL算法极易导致训练不稳定
因此,SFT(Supervised Fine-Tuning,监督微调)是RL之前必要的"热身"步骤。
2.2 第一阶段:SFT------让模型学会"基本动作"
SFT阶段的目标是:让模型具备基本的指令遵循能力和工具使用能力。
#mermaid-svg-JNvbKDI2TlyD8Wbr{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-JNvbKDI2TlyD8Wbr .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-JNvbKDI2TlyD8Wbr .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-JNvbKDI2TlyD8Wbr .error-icon{fill:#552222;}#mermaid-svg-JNvbKDI2TlyD8Wbr .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-JNvbKDI2TlyD8Wbr .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-JNvbKDI2TlyD8Wbr .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-JNvbKDI2TlyD8Wbr .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-JNvbKDI2TlyD8Wbr .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-JNvbKDI2TlyD8Wbr .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-JNvbKDI2TlyD8Wbr .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-JNvbKDI2TlyD8Wbr .marker{fill:#333333;stroke:#333333;}#mermaid-svg-JNvbKDI2TlyD8Wbr .marker.cross{stroke:#333333;}#mermaid-svg-JNvbKDI2TlyD8Wbr svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-JNvbKDI2TlyD8Wbr p{margin:0;}#mermaid-svg-JNvbKDI2TlyD8Wbr .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-JNvbKDI2TlyD8Wbr .cluster-label text{fill:#333;}#mermaid-svg-JNvbKDI2TlyD8Wbr .cluster-label span{color:#333;}#mermaid-svg-JNvbKDI2TlyD8Wbr .cluster-label span p{background-color:transparent;}#mermaid-svg-JNvbKDI2TlyD8Wbr .label text,#mermaid-svg-JNvbKDI2TlyD8Wbr span{fill:#333;color:#333;}#mermaid-svg-JNvbKDI2TlyD8Wbr .node rect,#mermaid-svg-JNvbKDI2TlyD8Wbr .node circle,#mermaid-svg-JNvbKDI2TlyD8Wbr .node ellipse,#mermaid-svg-JNvbKDI2TlyD8Wbr .node polygon,#mermaid-svg-JNvbKDI2TlyD8Wbr .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-JNvbKDI2TlyD8Wbr .rough-node .label text,#mermaid-svg-JNvbKDI2TlyD8Wbr .node .label text,#mermaid-svg-JNvbKDI2TlyD8Wbr .image-shape .label,#mermaid-svg-JNvbKDI2TlyD8Wbr .icon-shape .label{text-anchor:middle;}#mermaid-svg-JNvbKDI2TlyD8Wbr .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-JNvbKDI2TlyD8Wbr .rough-node .label,#mermaid-svg-JNvbKDI2TlyD8Wbr .node .label,#mermaid-svg-JNvbKDI2TlyD8Wbr .image-shape .label,#mermaid-svg-JNvbKDI2TlyD8Wbr .icon-shape .label{text-align:center;}#mermaid-svg-JNvbKDI2TlyD8Wbr .node.clickable{cursor:pointer;}#mermaid-svg-JNvbKDI2TlyD8Wbr .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-JNvbKDI2TlyD8Wbr .arrowheadPath{fill:#333333;}#mermaid-svg-JNvbKDI2TlyD8Wbr .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-JNvbKDI2TlyD8Wbr .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-JNvbKDI2TlyD8Wbr .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-JNvbKDI2TlyD8Wbr .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-JNvbKDI2TlyD8Wbr .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-JNvbKDI2TlyD8Wbr .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-JNvbKDI2TlyD8Wbr .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-JNvbKDI2TlyD8Wbr .cluster text{fill:#333;}#mermaid-svg-JNvbKDI2TlyD8Wbr .cluster span{color:#333;}#mermaid-svg-JNvbKDI2TlyD8Wbr div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-JNvbKDI2TlyD8Wbr .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-JNvbKDI2TlyD8Wbr rect.text{fill:none;stroke-width:0;}#mermaid-svg-JNvbKDI2TlyD8Wbr .icon-shape,#mermaid-svg-JNvbKDI2TlyD8Wbr .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-JNvbKDI2TlyD8Wbr .icon-shape p,#mermaid-svg-JNvbKDI2TlyD8Wbr .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-JNvbKDI2TlyD8Wbr .icon-shape .label rect,#mermaid-svg-JNvbKDI2TlyD8Wbr .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-JNvbKDI2TlyD8Wbr .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-JNvbKDI2TlyD8Wbr .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-JNvbKDI2TlyD8Wbr :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} SFT阶段
📚 标注数据
指令-响应对
🧠 基础LLM
🎯 监督微调
✅ SFT模型
能遵循指令、使用工具
SFT阶段的关键要素:
| 要素 | 说明 |
|---|---|
| 训练数据 | 高质量的"指令-响应"对,包含工具调用的示例轨迹 |
| 训练目标 | 最大化模型生成正确响应的概率(标准监督学习) |
| 输出 | 一个能够遵循指令、调用工具的"初步可用"模型 |
💡 通俗理解:SFT就像是让一个天才学生先"看书学习"------给他看大量"好学生是怎么做题的"示例,让他先学会基本套路。
一个关键的经验法则是:经过SFT热身的模型已经能够发出合法的工具调用指令(如合法的搜索查询),这是后续RL能够成功的前提。
2.3 第二阶段:GRPO------让模型学会"优化策略"
在SFT模型的基础上,我们进入真正的强化学习阶段。HelloAgents采用的强化学习算法是 GRPO(Group Relative Policy Optimization,群组相对策略优化) 。
GRPO的核心思想:
#mermaid-svg-ncyP8nj8R3dC9KHZ{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ncyP8nj8R3dC9KHZ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ncyP8nj8R3dC9KHZ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ncyP8nj8R3dC9KHZ .error-icon{fill:#552222;}#mermaid-svg-ncyP8nj8R3dC9KHZ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ncyP8nj8R3dC9KHZ .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ncyP8nj8R3dC9KHZ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ncyP8nj8R3dC9KHZ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ncyP8nj8R3dC9KHZ .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ncyP8nj8R3dC9KHZ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ncyP8nj8R3dC9KHZ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ncyP8nj8R3dC9KHZ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ncyP8nj8R3dC9KHZ .marker.cross{stroke:#333333;}#mermaid-svg-ncyP8nj8R3dC9KHZ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ncyP8nj8R3dC9KHZ p{margin:0;}#mermaid-svg-ncyP8nj8R3dC9KHZ .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ncyP8nj8R3dC9KHZ .cluster-label text{fill:#333;}#mermaid-svg-ncyP8nj8R3dC9KHZ .cluster-label span{color:#333;}#mermaid-svg-ncyP8nj8R3dC9KHZ .cluster-label span p{background-color:transparent;}#mermaid-svg-ncyP8nj8R3dC9KHZ .label text,#mermaid-svg-ncyP8nj8R3dC9KHZ span{fill:#333;color:#333;}#mermaid-svg-ncyP8nj8R3dC9KHZ .node rect,#mermaid-svg-ncyP8nj8R3dC9KHZ .node circle,#mermaid-svg-ncyP8nj8R3dC9KHZ .node ellipse,#mermaid-svg-ncyP8nj8R3dC9KHZ .node polygon,#mermaid-svg-ncyP8nj8R3dC9KHZ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ncyP8nj8R3dC9KHZ .rough-node .label text,#mermaid-svg-ncyP8nj8R3dC9KHZ .node .label text,#mermaid-svg-ncyP8nj8R3dC9KHZ .image-shape .label,#mermaid-svg-ncyP8nj8R3dC9KHZ .icon-shape .label{text-anchor:middle;}#mermaid-svg-ncyP8nj8R3dC9KHZ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ncyP8nj8R3dC9KHZ .rough-node .label,#mermaid-svg-ncyP8nj8R3dC9KHZ .node .label,#mermaid-svg-ncyP8nj8R3dC9KHZ .image-shape .label,#mermaid-svg-ncyP8nj8R3dC9KHZ .icon-shape .label{text-align:center;}#mermaid-svg-ncyP8nj8R3dC9KHZ .node.clickable{cursor:pointer;}#mermaid-svg-ncyP8nj8R3dC9KHZ .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ncyP8nj8R3dC9KHZ .arrowheadPath{fill:#333333;}#mermaid-svg-ncyP8nj8R3dC9KHZ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ncyP8nj8R3dC9KHZ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ncyP8nj8R3dC9KHZ .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ncyP8nj8R3dC9KHZ .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ncyP8nj8R3dC9KHZ .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ncyP8nj8R3dC9KHZ .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ncyP8nj8R3dC9KHZ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ncyP8nj8R3dC9KHZ .cluster text{fill:#333;}#mermaid-svg-ncyP8nj8R3dC9KHZ .cluster span{color:#333;}#mermaid-svg-ncyP8nj8R3dC9KHZ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ncyP8nj8R3dC9KHZ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ncyP8nj8R3dC9KHZ rect.text{fill:none;stroke-width:0;}#mermaid-svg-ncyP8nj8R3dC9KHZ .icon-shape,#mermaid-svg-ncyP8nj8R3dC9KHZ .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ncyP8nj8R3dC9KHZ .icon-shape p,#mermaid-svg-ncyP8nj8R3dC9KHZ .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ncyP8nj8R3dC9KHZ .icon-shape .label rect,#mermaid-svg-ncyP8nj8R3dC9KHZ .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ncyP8nj8R3dC9KHZ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ncyP8nj8R3dC9KHZ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ncyP8nj8R3dC9KHZ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} GRPO训练循环
迭代
📝 输入Prompt
🎲 采样N条轨迹
从当前策略
📊 评估每条轨迹
计算奖励
📈 组内相对比较
计算优势值
🔄 更新策略
优化相对优势
GRPO的工作流程可以分解为三个核心步骤:
第一步:群组采样(Group Sampling)
对于同一个输入Prompt,从当前策略中采样N条完整的轨迹(通常N=4)。每条轨迹代表智能体完成整个任务的一种尝试。
第二步:评估与奖励计算(Evaluation & Reward)
对每条轨迹进行完整评估,计算其最终奖励。奖励信号的来源可以是:
- 结果验证:任务是否成功完成(如数学题答案是否正确)
- 规则检查:是否满足约束条件
- 用户反馈:人类对结果的评价
第三步:组内相对优势估计(Group-Relative Advantage)
GRPO的核心创新在于:不依赖外部价值网络(Critic)来估计优势,而是在同一组采样轨迹内部进行相对比较。
具体来说:
- 计算组内所有轨迹的奖励均值
- 每条轨迹的优势 = 该轨迹的奖励 − 组内平均奖励
- 用这个相对优势来更新策略------表现优于平均的轨迹被强化,低于平均的被弱化
2.4 为什么GRPO更适合Agentic RL?
GRPO之所以成为Agentic RL的首选算法,是因为它解决了传统RL算法(如PPO)在LLM训练中的几个关键痛点:
| 挑战 | PPO的问题 | GRPO的解决方案 |
|---|---|---|
| 内存开销 | 需要维护4个模型(Policy、Old Policy、Value、Reward) | 无需独立的Critic网络(价值网络) |
| 计算成本 | 需要额外的价值网络前向传播 | 通过组内比较替代价值网络,算力开销通常比PPO少2-4倍 |
| 训练稳定性 | 价值网络估计可能不准确 | 组内相对比较更稳定,不易受绝对估计误差影响 |
💡 通俗理解:PPO像是请了一个"评委"给每个动作打分(需要额外训练评委),GRPO则是让几个选手同台竞技------谁表现好就奖励谁,不需要单独的评委。这大大降低了训练成本和复杂度。
三、核心算法演进:从PPO到GRPO
为了更好地理解GRPO在Agentic RL中的位置,我们需要回顾LLM强化学习算法的演进历程。
3.1 算法演进时间线
#mermaid-svg-TBOlwRrj9Okh4D17{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-TBOlwRrj9Okh4D17 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-TBOlwRrj9Okh4D17 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-TBOlwRrj9Okh4D17 .error-icon{fill:#552222;}#mermaid-svg-TBOlwRrj9Okh4D17 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-TBOlwRrj9Okh4D17 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-TBOlwRrj9Okh4D17 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-TBOlwRrj9Okh4D17 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-TBOlwRrj9Okh4D17 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-TBOlwRrj9Okh4D17 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-TBOlwRrj9Okh4D17 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-TBOlwRrj9Okh4D17 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-TBOlwRrj9Okh4D17 .marker.cross{stroke:#333333;}#mermaid-svg-TBOlwRrj9Okh4D17 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-TBOlwRrj9Okh4D17 p{margin:0;}#mermaid-svg-TBOlwRrj9Okh4D17 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-TBOlwRrj9Okh4D17 .cluster-label text{fill:#333;}#mermaid-svg-TBOlwRrj9Okh4D17 .cluster-label span{color:#333;}#mermaid-svg-TBOlwRrj9Okh4D17 .cluster-label span p{background-color:transparent;}#mermaid-svg-TBOlwRrj9Okh4D17 .label text,#mermaid-svg-TBOlwRrj9Okh4D17 span{fill:#333;color:#333;}#mermaid-svg-TBOlwRrj9Okh4D17 .node rect,#mermaid-svg-TBOlwRrj9Okh4D17 .node circle,#mermaid-svg-TBOlwRrj9Okh4D17 .node ellipse,#mermaid-svg-TBOlwRrj9Okh4D17 .node polygon,#mermaid-svg-TBOlwRrj9Okh4D17 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-TBOlwRrj9Okh4D17 .rough-node .label text,#mermaid-svg-TBOlwRrj9Okh4D17 .node .label text,#mermaid-svg-TBOlwRrj9Okh4D17 .image-shape .label,#mermaid-svg-TBOlwRrj9Okh4D17 .icon-shape .label{text-anchor:middle;}#mermaid-svg-TBOlwRrj9Okh4D17 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-TBOlwRrj9Okh4D17 .rough-node .label,#mermaid-svg-TBOlwRrj9Okh4D17 .node .label,#mermaid-svg-TBOlwRrj9Okh4D17 .image-shape .label,#mermaid-svg-TBOlwRrj9Okh4D17 .icon-shape .label{text-align:center;}#mermaid-svg-TBOlwRrj9Okh4D17 .node.clickable{cursor:pointer;}#mermaid-svg-TBOlwRrj9Okh4D17 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-TBOlwRrj9Okh4D17 .arrowheadPath{fill:#333333;}#mermaid-svg-TBOlwRrj9Okh4D17 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-TBOlwRrj9Okh4D17 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-TBOlwRrj9Okh4D17 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-TBOlwRrj9Okh4D17 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-TBOlwRrj9Okh4D17 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-TBOlwRrj9Okh4D17 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-TBOlwRrj9Okh4D17 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-TBOlwRrj9Okh4D17 .cluster text{fill:#333;}#mermaid-svg-TBOlwRrj9Okh4D17 .cluster span{color:#333;}#mermaid-svg-TBOlwRrj9Okh4D17 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-TBOlwRrj9Okh4D17 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-TBOlwRrj9Okh4D17 rect.text{fill:none;stroke-width:0;}#mermaid-svg-TBOlwRrj9Okh4D17 .icon-shape,#mermaid-svg-TBOlwRrj9Okh4D17 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-TBOlwRrj9Okh4D17 .icon-shape p,#mermaid-svg-TBOlwRrj9Okh4D17 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-TBOlwRrj9Okh4D17 .icon-shape .label rect,#mermaid-svg-TBOlwRrj9Okh4D17 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-TBOlwRrj9Okh4D17 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-TBOlwRrj9Okh4D17 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-TBOlwRrj9Okh4D17 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} PPO+RLHF
2022
DPO
2023
GRPO
2024
RLVR
(新兴)
3.2 各算法核心特点
| 算法 | 核心思想 | 关键特点 | 主要局限 |
|---|---|---|---|
| PPO+RLHF | 用奖励模型打分,PPO更新策略 | 需要4个模型,RLHF的经典实现 | 资源消耗大,训练复杂 |
| DPO | 直接在偏好对上做监督优化 | 删去奖励模型,只需2个模型 | 不做探索,依赖静态数据 |
| GRPO | 组内相对比较,无需价值网络 | 无需独立的Critic网络,只需1个模型 | 需要组内采样 |
| RLVR | 基于规则验证,无需奖励模型 | 完全移除奖励模型(新兴方向) | 仅适用于可验证的任务 |
3.3 核心洞察:奖励信号的变迁
从PPO到GRPO的演进,本质上反映的是奖励信号来源的变迁:
| 阶段 | 奖励来源 | 特点 |
|---|---|---|
| PPO+RLHF | 人类偏好训练的奖励模型 | 昂贵、主观、难以规模化 |
| RLAIF | AI模型替代人类标注 | 成本降低,效果接近RLHF |
| DPO | 隐式地从偏好数据中学习 | 无需显式奖励模型,但依赖静态偏好 |
| GRPO | 组内相对比较 | 无需外部奖励模型,通过组内比较产生信号 |
| RLVR | 规则验证(如答案是否正确) | 完全自动化,零人工标注(新兴方向) |
四、HelloAgents中的Agentic RL实现
4.1 四层架构
HelloAgents的Agentic RL训练流水线采用模块化的四层架构:
#mermaid-svg-r04eDCHGZObG82RF{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-r04eDCHGZObG82RF .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-r04eDCHGZObG82RF .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-r04eDCHGZObG82RF .error-icon{fill:#552222;}#mermaid-svg-r04eDCHGZObG82RF .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-r04eDCHGZObG82RF .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-r04eDCHGZObG82RF .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-r04eDCHGZObG82RF .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-r04eDCHGZObG82RF .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-r04eDCHGZObG82RF .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-r04eDCHGZObG82RF .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-r04eDCHGZObG82RF .marker{fill:#333333;stroke:#333333;}#mermaid-svg-r04eDCHGZObG82RF .marker.cross{stroke:#333333;}#mermaid-svg-r04eDCHGZObG82RF svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-r04eDCHGZObG82RF p{margin:0;}#mermaid-svg-r04eDCHGZObG82RF .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-r04eDCHGZObG82RF .cluster-label text{fill:#333;}#mermaid-svg-r04eDCHGZObG82RF .cluster-label span{color:#333;}#mermaid-svg-r04eDCHGZObG82RF .cluster-label span p{background-color:transparent;}#mermaid-svg-r04eDCHGZObG82RF .label text,#mermaid-svg-r04eDCHGZObG82RF span{fill:#333;color:#333;}#mermaid-svg-r04eDCHGZObG82RF .node rect,#mermaid-svg-r04eDCHGZObG82RF .node circle,#mermaid-svg-r04eDCHGZObG82RF .node ellipse,#mermaid-svg-r04eDCHGZObG82RF .node polygon,#mermaid-svg-r04eDCHGZObG82RF .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-r04eDCHGZObG82RF .rough-node .label text,#mermaid-svg-r04eDCHGZObG82RF .node .label text,#mermaid-svg-r04eDCHGZObG82RF .image-shape .label,#mermaid-svg-r04eDCHGZObG82RF .icon-shape .label{text-anchor:middle;}#mermaid-svg-r04eDCHGZObG82RF .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-r04eDCHGZObG82RF .rough-node .label,#mermaid-svg-r04eDCHGZObG82RF .node .label,#mermaid-svg-r04eDCHGZObG82RF .image-shape .label,#mermaid-svg-r04eDCHGZObG82RF .icon-shape .label{text-align:center;}#mermaid-svg-r04eDCHGZObG82RF .node.clickable{cursor:pointer;}#mermaid-svg-r04eDCHGZObG82RF .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-r04eDCHGZObG82RF .arrowheadPath{fill:#333333;}#mermaid-svg-r04eDCHGZObG82RF .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-r04eDCHGZObG82RF .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-r04eDCHGZObG82RF .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-r04eDCHGZObG82RF .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-r04eDCHGZObG82RF .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-r04eDCHGZObG82RF .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-r04eDCHGZObG82RF .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-r04eDCHGZObG82RF .cluster text{fill:#333;}#mermaid-svg-r04eDCHGZObG82RF .cluster span{color:#333;}#mermaid-svg-r04eDCHGZObG82RF div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-r04eDCHGZObG82RF .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-r04eDCHGZObG82RF rect.text{fill:none;stroke-width:0;}#mermaid-svg-r04eDCHGZObG82RF .icon-shape,#mermaid-svg-r04eDCHGZObG82RF .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-r04eDCHGZObG82RF .icon-shape p,#mermaid-svg-r04eDCHGZObG82RF .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-r04eDCHGZObG82RF .icon-shape .label rect,#mermaid-svg-r04eDCHGZObG82RF .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-r04eDCHGZObG82RF .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-r04eDCHGZObG82RF .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-r04eDCHGZObG82RF :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Agentic RL四层架构
🖥️ 统一接口层
RLTrainingTool
⚙️ 训练器层
SFTTrainerWrapper/GRPOTrainerWrapper
📊 奖励函数层
MathRewardFunction
💾 数据集层
GSM8KDataset
各层职责:
| 层级 | 职责 | 核心功能 |
|---|---|---|
| 数据集层 | 管理训练数据集 | 数据加载、格式转换(GSM8KDataset、create_sft_dataset) |
| 奖励函数层 | 评估智能体行为并生成奖励信号 | 准确率奖励、长度惩罚、步骤奖励 |
| 训练器层 | 实现SFT和GRPO等训练算法 | SFTTrainerWrapper、GRPOTrainerWrapper、LoRA支持 |
| 统一接口层 | 配置训练参数、统一训练入口 | RLTrainingTool,支持train/load_dataset/create_reward/evaluate四种操作 |
4.2 训练流程概览
#mermaid-svg-sK2IzFxVQLBHtwTI{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-sK2IzFxVQLBHtwTI .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-sK2IzFxVQLBHtwTI .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-sK2IzFxVQLBHtwTI .error-icon{fill:#552222;}#mermaid-svg-sK2IzFxVQLBHtwTI .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-sK2IzFxVQLBHtwTI .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-sK2IzFxVQLBHtwTI .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-sK2IzFxVQLBHtwTI .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-sK2IzFxVQLBHtwTI .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-sK2IzFxVQLBHtwTI .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-sK2IzFxVQLBHtwTI .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-sK2IzFxVQLBHtwTI .marker{fill:#333333;stroke:#333333;}#mermaid-svg-sK2IzFxVQLBHtwTI .marker.cross{stroke:#333333;}#mermaid-svg-sK2IzFxVQLBHtwTI svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-sK2IzFxVQLBHtwTI p{margin:0;}#mermaid-svg-sK2IzFxVQLBHtwTI .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-sK2IzFxVQLBHtwTI .cluster-label text{fill:#333;}#mermaid-svg-sK2IzFxVQLBHtwTI .cluster-label span{color:#333;}#mermaid-svg-sK2IzFxVQLBHtwTI .cluster-label span p{background-color:transparent;}#mermaid-svg-sK2IzFxVQLBHtwTI .label text,#mermaid-svg-sK2IzFxVQLBHtwTI span{fill:#333;color:#333;}#mermaid-svg-sK2IzFxVQLBHtwTI .node rect,#mermaid-svg-sK2IzFxVQLBHtwTI .node circle,#mermaid-svg-sK2IzFxVQLBHtwTI .node ellipse,#mermaid-svg-sK2IzFxVQLBHtwTI .node polygon,#mermaid-svg-sK2IzFxVQLBHtwTI .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-sK2IzFxVQLBHtwTI .rough-node .label text,#mermaid-svg-sK2IzFxVQLBHtwTI .node .label text,#mermaid-svg-sK2IzFxVQLBHtwTI .image-shape .label,#mermaid-svg-sK2IzFxVQLBHtwTI .icon-shape .label{text-anchor:middle;}#mermaid-svg-sK2IzFxVQLBHtwTI .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-sK2IzFxVQLBHtwTI .rough-node .label,#mermaid-svg-sK2IzFxVQLBHtwTI .node .label,#mermaid-svg-sK2IzFxVQLBHtwTI .image-shape .label,#mermaid-svg-sK2IzFxVQLBHtwTI .icon-shape .label{text-align:center;}#mermaid-svg-sK2IzFxVQLBHtwTI .node.clickable{cursor:pointer;}#mermaid-svg-sK2IzFxVQLBHtwTI .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-sK2IzFxVQLBHtwTI .arrowheadPath{fill:#333333;}#mermaid-svg-sK2IzFxVQLBHtwTI .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-sK2IzFxVQLBHtwTI .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-sK2IzFxVQLBHtwTI .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-sK2IzFxVQLBHtwTI .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-sK2IzFxVQLBHtwTI .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-sK2IzFxVQLBHtwTI .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-sK2IzFxVQLBHtwTI .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-sK2IzFxVQLBHtwTI .cluster text{fill:#333;}#mermaid-svg-sK2IzFxVQLBHtwTI .cluster span{color:#333;}#mermaid-svg-sK2IzFxVQLBHtwTI div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-sK2IzFxVQLBHtwTI .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-sK2IzFxVQLBHtwTI rect.text{fill:none;stroke-width:0;}#mermaid-svg-sK2IzFxVQLBHtwTI .icon-shape,#mermaid-svg-sK2IzFxVQLBHtwTI .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-sK2IzFxVQLBHtwTI .icon-shape p,#mermaid-svg-sK2IzFxVQLBHtwTI .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-sK2IzFxVQLBHtwTI .icon-shape .label rect,#mermaid-svg-sK2IzFxVQLBHtwTI .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-sK2IzFxVQLBHtwTI .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-sK2IzFxVQLBHtwTI .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-sK2IzFxVQLBHtwTI :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 否
是
开始训练
📂 加载SFT模型
训练循环
🎲 采样N条轨迹
📊 评估并计算奖励
📈 计算组内相对优势
🔄 更新策略
收敛?
💾 保存模型
训练完成
4.3 关键设计决策
(1)技术选型
HelloAgents集成了TRL(Transformer Reinforcement Learning)框架 ------Hugging Face的强化学习库,成熟稳定、功能完整、易于集成。模型选择Qwen3-0.6B------阿里云的小型语言模型,0.6B参数适合普通GPU训练,性能优秀且开源免费。
(2)奖励信号的设计
HelloAgents提供了三种内置奖励函数,可以单独使用或组合使用:
| 奖励函数 | 核心思想 | 适用场景 |
|---|---|---|
| 准确率奖励(AccuracyReward) | 答案正确得1分,错误得0分 | 有明确正确答案的任务 |
| 长度惩罚(LengthPenaltyReward) | 奖励简洁答案,惩罚过长输出 | 对话系统、问答系统 |
| 步骤奖励(StepReward) | 奖励清晰的推理步骤 | 教育场景、可解释AI |
(3)训练稳定性保障
强化学习训练LLM的最大挑战是稳定性。HelloAgents通过以下机制保障训练稳定:
- SFT热身:确保模型在RL开始前已经具备基本能力
- KL散度约束:限制策略更新幅度,防止模型"走偏"
- 组内归一化:通过组内相对比较,使训练信号更加稳定
五、核心概念速查表
| 术语 | 通俗解释 |
|---|---|
| Agentic RL | 用强化学习训练LLM智能体,让它从"被动响应"进化到"主动决策" |
| SFT(监督微调) | 用标注数据训练模型,让它学会"基本动作"------理解指令、调用工具 |
| GRPO(群组相对策略优化) | 一种强化学习算法,通过组内比较来优化策略,无需独立的Critic网络 |
| 策略(Policy) | 智能体的"决策大脑"------在什么状态下采取什么行动 |
| 奖励(Reward) | 衡量智能体行为好坏的信号------"做对了有赏,做错了受罚" |
| 轨迹(Trajectory) | 智能体完成一次任务的完整记录------从开始到结束的每一步 |
| 组内相对优势 | GRPO的核心机制------在同一组尝试中,表现好的被强化,表现差的被弱化 |
| PPO(近端策略优化) | RLHF的经典算法,需要维护4个模型,资源消耗大 |
| DPO(直接偏好优化) | 在静态偏好数据上直接优化,无需奖励模型,但不做探索 |
| RLVR(基于规则验证的RL) | 通过规则自动验证结果正确性(新兴方向) |
| TRL(Transformer Reinforcement Learning) | Hugging Face的强化学习库 |
| KL散度约束 | 防止策略更新幅度过大,确保训练稳定的"安全阀" |
六、思考题(帮助加深理解)
-
为什么Agentic RL不能直接从零开始训练,而必须先经过SFT阶段? 如果跳过SFT直接运行RL,可能会遇到什么问题?
-
GRPO通过"组内相对比较"来估计优势,而PPO需要单独的价值网络。 这两种方法各有什么优劣?为什么GRPO更适合LLM训练?
-
奖励信号的设计是Agentic RL的关键。 对于一个"智能旅行规划助手",你会如何设计奖励函数?哪些信号可以作为奖励的来源?
-
从PPO到DPO到GRPO再到RLVR,这条演进路径反映了什么趋势? 你认为下一代RL算法会朝什么方向发展?
-
在实际应用中,Agentic RL面临的主要挑战是什么? 计算成本、数据质量、训练稳定性、还是其他因素?
参考资料
-
Datawhale Hello-Agents 第十一章《Agentic-RL》
https://datawhalechina.github.io/hello-agents/#/./chapter11/第十一章 Agentic-RL
-
hello-agents/docs/chapter11/第十一章 Agentic-RL.md
https://github.com/datawhalechina/hello-agents/blob/main/docs/chapter11/第十一章 Agentic-RL.md
结语
在这一章中,我们系统学习了Agentic RL这一让智能体"自主进化"的关键技术:
- 什么是Agentic RL------将LLM从被动序列生成器转变为嵌入动态环境中的自主决策主体
- 训练流程------从SFT"热身"到GRPO"强化"的两阶段方法论
- 核心算法演进------从PPO到DPO到GRPO再到RLVR,奖励信号来源不断进化
- HelloAgents实现------四层架构设计(数据集层→奖励函数层→训练器层→统一接口层)
Agentic RL代表了一条从"设计智能体"到"训练智能体"的演进路径。在前面的章节中,我们通过提示工程、工具系统和通信协议来"设计"智能体的行为。而Agentic RL则让智能体自己在与环境的交互中学会如何更好地完成任务。
这种转变的意义是深远的------它意味着智能体不再依赖于工程师的精心设计,而是能够通过持续的自我优化,不断突破能力边界。掌握了Agentic RL,你就掌握了让智能体"自主进化"的关键能力。
本文参考:Datawhale《Hello-Agents》教程第十一章《Agentic-RL》的内容框架与核心知识点。本文在忠实呈现该教程内容的基础上,为便于新手理解进行了通俗化改写和图表化呈现。