agent 与环境 — 训练会做事的模型
这一章讲三件事: 为什么聊天能力和做事能力是两回事;训练「会做事的模型」为什么非有环境不可; 多步任务的奖励该怎么拆。 这是后训练版图上最新、最没定型的一块——书里自己也说工具还在演化。 读完你能回答:「为什么不能把单轮训练的那套直接搬到 agent 上?」
1. 先看现象:会答题,不会做事
拿一个过完三段训练的模型去干活:让它改一个报错的程序,它可能喋喋不休地分析那段代码,却从来不去运行一下看看结果。它会聊天,不会做事。
做事的样子是:在一个环境里连续多步行动——编码 agent 写代码、跑测试、读报错、再改;研究 agent 搜索、读文档、综合;客服 agent 读账户数据、做决策、执行操作1。
这些活儿需要的能力——跨步规划、从错误里恢复、正确用工具、验证自己的产出——书里点得很硬:它们是学出来的行为,不是提示工程出来的。靠系统提示词堆出来的「做事流程」,跨输入稳不住2。
2. 顶层全景:从一轮问答到一个回合
单轮训练(前面三章的世界)
prompt ──→ 模型 ──→ 回答 ──→ 打分 ──→ 更新 一回合,一步
agent 训练(本章)
重置环境 ──→ 模型行动 ──→ 环境返回观察(+也许给分)
│ │
└──── 再行动 ←──────────────────┘
……直到回合结束,按「整个轨迹」结算一次奖励
图说:轨迹(trajectory)= 一整串「动作+观察」。打分的对象从
「这一句回答」变成「这一整趟做得成不成」。同样的更新循环,
只是每一圈变长了。
3. 核心原理:为什么 RL 是 agent 的自然匹配
结局可验证
agent 的行动结果大多程序能断:代码编译过还是没过、测试通过还是失败、检索回来的文档答没答上问题。第 05 章说过,「可验证」意味着奖励免费——不用人打分,不用替身打分器3。
同一个循环,加长的回合
书里的原话:这就是产出 R1 的那个循环,扩展到带工具使用和环境交互的多步任务4。模型生成一条轨迹(一串动作与观察),奖励按轨迹有没有达成目标给,模型被更新成「多产出成功的轨迹、少产出失败的」。第 05 章的每一个词——策略、奖励、rollout——原样适用,只是 rollout 从「采一条回答」变成「走完整趟」。
4. 三件新难事
书里列的这三条,就是「不能直接搬」的原因5:
| 新难事 | 具体是什么 | 后果 |
|---|---|---|
| 回合更长 | 一步错了要很多步之后才暴露 | 信用分配变难:第 10 步失败了,是第几步埋的雷? |
| 动作空间更大 | 除了说话,还能调工具、写代码、产结构化输出(按固定格式组织的 JSON 之类) | 候选行为多到数不过来 |
| 必须有环境 | 训练时得有东西让它交互:跑代码的隔离容器、可调的 API、模拟用户 | 环境本身成了工程量 |
主走查:一个编码 agent 的一回合
场景是书里点名的「写、跑、调代码」(对话与报错内容为演示编的,回合结构与「按结局给分」是书里的)6:
重置 开一个代码仓库:三个测试里有一个红的
行动① 读失败测试的报错 观察:「assert sum([1,2]) == 5」失败
行动② 打开 sum 的实现改一行 观察:测试仍然红——改错了地方
行动③ 回滚,查另一个文件 观察:发现硬编码的返回值
行动④ 删掉硬编码,真算 观察:三个 测试全绿 → 回合结束
奖励按结局结算:任务完成,奖励 1;超时或放弃,奖励 0。
图说:信用分配的难题在这条轨迹里看得见——行动②浪费了一步,
但轨迹最后是成功的;如果行动③回滚失败、就此超时,
「该怪哪一步」没有一个显式的答案,奖励只有一个 0。
5. 环境的协议与生态
协议朴素得像游戏机
书里给的环境协议四句话:重置到初始状态 → 模型做一个动作 → 返回观察(可带奖励)→ 循环到回合结束。这就是标准的强化学习循环,套在语言模型 agent 上7。
好环境有三个标准,书里原样列出:信号真实(别拿玩具任务训出假本事)、变化足够(防背题——模型把题库背下来就不是能力了)、够快(RL 要几千个回合喂饱更新)8。
OpenEnv:正在长出来的标准
环境设计是活跃开发区,书里点名了 OpenEnv 项目:给「语言模型 ↔ 训练环境」的对接定标准协议,自带两样关键设计——程序化生成(现场生成新任务实例,防背题)和沙箱——把模型的代码跑在隔离容器里,搞不坏真机。
网页导航、数据库交互、API 工具调用(让模型按固定格式向某个接口(API 的另一叫法)发起操作)的环境都已经有了9。
奖励怎么拆:多步的新设计问题
单轮任务里,奖励是「输出」的函数;多步任务里,奖励可能落在四个不同的问题上10:
- 结局:任务完成了吗?
- 效率:用了几步?
- 中间步质量:工具用对了吗?
- 安全:避开了危险动作吗?
把这些拆成分量、再定各占多少权重,是单轮后训练里不存在的设计问题。书里还给了个务实的中间态:可以只把环境搭起来用于评测、先不做完整的强化学习——观察模型在真实任务里的成活率,再决定要不要上 RL11。
6. 作者的判断与证据
给了证据的:
- OpenEnv 与既有环境类型(网页/数据库/API)——对应公开项目,可核实;
- 「可验证的结果让 RL 自然匹配 agent」——与第 05 章 R1 的已证实路线同构,是把已验证的机制扩展到多步的场景。
是作者的论断:
- 「规划、纠错、工具使用是学出来的、不是提示出来的」——方向有依据(提示词跨输入不稳,第 02 章讲过),但书里没给「提示版 agent vs 训练版 agent」的对照数据;
- 「工具还在演化」——作者自己把这一章标成了进行时,原书承诺在后续章节展开环境设计与多步奖励构造,Early Release 尚未出版。
7. 边界与局限
这是全书最薄的一章(原书两节、不到三千词),对应的是这个领域本身 的成熟度:协议在定、项目在动、最佳实践没凝固。三条要记住的边界:
- 环境是新的工程大头:要真实、要多样、要快——三样全占不难才怪,书里明说这是活跃开发中的问题;
- 信用分配没有现成答案:奖励只在回合终点,长轨迹里哪步该记功、哪步该记过,书里只提出问题,没给解法;
- 安全分量的加法没讲:奖励里放多少「安全权重」,是设计问题,书里点到为止。
书里没覆盖、读时别指望的:具体某个环境的搭建教程、多步 RL 的完整训练配置、agent 评测基准——这些都在未出版的后续章节计划里。
8. 可带走的
- 聊天能力和做事能力是两种东西:做事 = 在环境里连续多步行动;
- 规划、纠错、工具使用、自验证是学出来的,提示堆出来的流程稳不住;
- agent 行动的结局大多可验证——编译、测试、检索命中,所以 RL 匹配;
- 轨迹是打分的新对象:从「这句回答好不好」变成「这一整趟成没成」;
- 回合变长,信用分配变难:终点失败,不知道该怪哪一步;
- 环境协议四句话:重置、行动、观察、给分,循环到结束;
- 好环境三标准:信号真实、变化防背题、快到喂得起几千回合;
- 程序化生成防背题,沙箱执行防搞坏东西——OpenEnv 把这些做成了标准件;
- 多步奖励要拆分量、定权重: 结局/效率/中间步/安全,单轮里不存在这个问题;
- 可以先只拿环境做评测,确认值得,再上完整 RL——最短流水线原则在 agent 上的样子。
9. 原文地图
| 主题 | 原书章 | 原文位置 |
|---|---|---|
| agent 的定义与三类例子 | Chapter 1. Introduction to Post-Training | text/04-ch01-chapter-1-introduction-to-post-training.txt:118(搜「takes actions in an environment over multiple steps」) |
| 能力是学出来的、结果可验证 | Chapter 1. Introduction to Post-Training | text/04-ch01-chapter-1-introduction-to-post-training.txt:120(搜「learned behaviors, not prompt-engineered」) |
| 与 R1 同一循环、按轨迹给奖励 | Chapter 1. Introduction to Post-Training | text/04-ch01-chapter-1-introduction-to-post-training.txt:122(搜「sequence of actions and observations」) |
| 三件新难事 | Chapter 1. Introduction to Post-Training | text/04-ch01-chapter-1-introduction-to-post-training.txt:124(搜「credit assignment harder」) |
| 环境给观察、收动作、返结局 | Chapter 1. Introduction to Post-Training | text/04-ch01-chapter-1-introduction-to-post-training.txt:182(搜「output of a code execution」) |
| 环境协议与好环境三条件 | Chapter 1. Introduction to Post-Training | text/04-ch01-chapter-1-introduction-to-post-training.txt:184(搜「until the episode ends」) |
| OpenEnv、程序化生成、沙箱 | Chapter 1. Introduction to Post-Training | text/04-ch01-chapter-1-introduction-to-post-training.txt:186(搜「OpenEnv」) |
| 多步奖励的分解 | Chapter 1. Introduction to Post-Training | text/04-ch01-chapter-1-introduction-to-post-training.txt:188(搜「Decomposing the reward」) |
| 建环境只做评测的中间态 | Chapter 1. Introduction to Post-Training | text/04-ch01-chapter-1-introduction-to-post-training.txt:200(搜「only use them for evaluation」) |
| 后续章节的承诺 | Chapter 1. Introduction to Post-Training | text/04-ch01-chapter-1-introduction-to-post-training.txt:126(搜「environment design」) |