Agentic-RL:从SFT到GRPO,让智能体学会“自主进化”

本章将深入探讨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智能体极其困难。原因主要有三个:

  1. 探索空间巨大:LLM的动作空间是整个词表,在如此巨大的空间中随机探索几乎不可能找到有效行为
  2. 奖励稀疏:大多数中间步骤无法获得有效奖励信号,只有最终结果才有反馈
  3. 稳定性问题:直接在大规模神经网络上运行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)来估计优势,而是在同一组采样轨迹内部进行相对比较

具体来说:

  1. 计算组内所有轨迹的奖励均值
  2. 每条轨迹的优势 = 该轨迹的奖励 − 组内平均奖励
  3. 用这个相对优势来更新策略------表现优于平均的轨迹被强化,低于平均的被弱化

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

各层职责

层级 职责 核心功能
数据集层 管理训练数据集 数据加载、格式转换(GSM8KDatasetcreate_sft_dataset
奖励函数层 评估智能体行为并生成奖励信号 准确率奖励、长度惩罚、步骤奖励
训练器层 实现SFT和GRPO等训练算法 SFTTrainerWrapperGRPOTrainerWrapper、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散度约束 防止策略更新幅度过大,确保训练稳定的"安全阀"

六、思考题(帮助加深理解)

  1. 为什么Agentic RL不能直接从零开始训练,而必须先经过SFT阶段? 如果跳过SFT直接运行RL,可能会遇到什么问题?

  2. GRPO通过"组内相对比较"来估计优势,而PPO需要单独的价值网络。 这两种方法各有什么优劣?为什么GRPO更适合LLM训练?

  3. 奖励信号的设计是Agentic RL的关键。 对于一个"智能旅行规划助手",你会如何设计奖励函数?哪些信号可以作为奖励的来源?

  4. 从PPO到DPO到GRPO再到RLVR,这条演进路径反映了什么趋势? 你认为下一代RL算法会朝什么方向发展?

  5. 在实际应用中,Agentic RL面临的主要挑战是什么? 计算成本、数据质量、训练稳定性、还是其他因素?

参考资料

  1. Datawhale Hello-Agents 第十一章《Agentic-RL》

    https://datawhalechina.github.io/hello-agents/#/./chapter11/第十一章 Agentic-RL

  2. 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》的内容框架与核心知识点。本文在忠实呈现该教程内容的基础上,为便于新手理解进行了通俗化改写和图表化呈现。

相关推荐
XLYcmy1 天前
小红书 算法一面 四
深度学习·llm·sft·强化学习·多模态·grpo·奖励函数
盼小辉丶1 天前
PyTorch强化学习实战(22)——将强化学习应用于TextWorld互动小说游戏
pytorch·深度学习·强化学习
XLYcmy2 天前
小红书 算法一面 三
llm·sft·强化学习·多模态·损失函数·visual r1·奖励机制
XLYcmy3 天前
小红书 算法一面 二
llm·sft·memory·多模态·位置编码·grpo·视觉数据
chen_zn953 天前
《VLA 系列》RLT | RL Token | 轻量 Actor-Critic | 在线强化学习与源码解析
人工智能·强化学习·具身智能·vla
计科杨某人4 天前
机器学习基本常识
随机森林·机器学习·支持向量机·监督学习·强化学习·最小二乘法·无监督学习
云和数据.ChenGuang6 天前
fastapi项目拆分实战数据模型
java·服务器·数据库·人工智能·深度学习·fastapi·强化学习
thesky12345611 天前
27届大模型面试准备(十六):后训练全攻略——SFT、RLHF、DPO、PPO 一次讲透
大模型·sft·rlhf·ppo·dpo·面试准备·后训练
林泽毅13 天前
PyTRIO快速入门实战篇(二):用 GRPO 提升 GSM8K 数学推理准确率
人工智能·深度学习·机器学习·llm·强化学习