本文深入解析ReAct范式,阐述Agent系统如何通过LLM进行理解决策与Harness连接环境工具,形成推理行动闭环。文章对比ReAct与CoT、Act-only的优势局限,并通过HotpotQA、FEVER、ALFWorld和WebShop任务验证ReAct价值。核心观点包括:推理提升行动质量、工具不保证优于纯推理、外部证据降低幻觉、动态组合策略效果更佳,以及Agent能力依赖LLM与Harness协同。对于希望掌握大模型应用的开发者,本文提供实用框架与工程化建议。
Agent = LLM + Harness:从 ReAct 理解 Agent 的推理—行动闭环
核心观点
在工程语境中,可以将 Agent 近似理解为:
其中,LLM 负责理解、推理与决策;Harness 负责把模型连接到工具和环境,并管理状态、上下文、执行预算、异常恢复与终止条件。
更完整地说,一个可运行的 Agent 系统还应显式包含环境:
- ReAct 提出了什么
ReAct:Synergizing Reasoning and Acting in Language Models 最初于 2022 年发布,并发表于 ICLR 2023。它提出了一种通用的语言模型推理与交互范式:让语言模型交替生成语言形式的推理轨迹和面向环境的动作,再将动作产生的观察结果送回模型,形成闭环。
其基本轨迹可以写成:
ReAct 对 Reason-only、Act-only 与 Reason+Act 的对比
图 1:ReAct 范式示意图。图片来源:ReAct 官方项目页。
需要准确区分的是:ReAct 并不是最早研究语言模型推理、工具使用或环境交互的工作,也不能简单称为“第一篇 Agent 论文”。更严谨的说法是:
ReAct 较早系统化提出并验证了一个通用范式:让同一个语言模型在闭环系统中交错生成推理轨迹与环境动作,使“推理指导行动”和“行动反哺推理”发生在同一条任务轨迹中。
论文作者称这两个方向为:
- Reason to Act
:通过推理创建、维护和调整行动计划;
- Act to Reason
:通过行动从外部环境获取信息,再将新信息纳入后续推理。
flowchart LR T["Thought<br/>形成判断与计划"] --> A["Action<br/>调用工具或操作环境"] A --> O["Observation<br/>接收真实反馈"] O --> T这不是一条单向流水线,而是两个相互耦合的闭环:
- 推理闭环
:当前状态与历史观察决定下一步应当做什么;
- 反馈闭环
:动作返回的结果更新当前认知、计划和状态。
- ReAct 出现前的两类能力
2.1 Chain-of-Thought:会推理,但不能主动获得外部证据
Chain-of-Thought(CoT)提示让模型在给出答案前生成多步语言推理:
它能够把复杂问题拆成若干中间步骤,但这些步骤主要依赖:
- 模型参数中存储的知识;
- 当前提示中已经提供的信息;
- 模型自身生成的中间结论。
如果某个中间事实错误,错误就可能沿推理链继续传播:
因此,CoT 的问题不是“不会推理”,而是推理过程缺少主动访问外部世界、验证事实和修正状态的能力。
2.2 Act-only:能操作环境,但缺少显式的高层推理
另一类方法让语言模型直接预测环境动作,例如:
Search[Apple Remote] Search[Front Row] Finish[keyboard function keys]它能够通过搜索、浏览或环境操作获得真实反馈,但如果没有显式推理轨迹,模型需要直接从冗长历史中完成:
- 目标分解;
- 信息提取;
- 状态维护;
- 下一步规划;
- 异常恢复;
- 最终信息综合。
因此,Act-only 的问题不是“没有工具”,而是缺少用于组织工具调用的高层计划与显式工作记忆。
2.3 ReAct:将 Reason 与 Act 放入同一条轨迹
ReAct 试图同时缓解上述两类问题:
| 方法 | 优势 | 主要局限 |
|---|---|---|
| CoT | 推理结构灵活,擅长分解问题 | 不能主动获取或验证外部事实,错误可能逐步传播 |
| Act-only | 能访问真实环境并获取反馈 | 不擅长规划、状态维护和结果综合 |
| ReAct | 推理指导行动,环境反馈更新推理 | 仍可能受到推理错误、检索错误和上下文污染影响 |
一个简化的 ReAct 轨迹如下:
Thought 1: 我需要先确认 Apple Remote 最初控制的程序。 Action 1: Search[Apple Remote] Observation 1: Apple Remote 最初用于控制 Front Row 媒体中心程序。 Thought 2: 现在需要查找还有哪些设备能够控制 Front Row。 Action 2: Search[Front Row] Observation 2: Front Row 可以由 Apple Remote 或键盘功能键控制。 Thought 3: 因此答案是键盘功能键。 Action 3: Finish[keyboard function keys]这里的关键不在于工具调用前多写一句“让我想想”,而在于:
推理、行动和环境反馈共同构成一条可持续更新的状态轨迹。
- ReAct 的数学理解
3.1 传统的行动策略
设 Agent 在第 步看到的上下文为:
其中:
- 表示环境观察;
- 表示会改变外部环境或触发工具的动作;
- 表示截至当前时刻的完整轨迹上下文。
传统行动模型直接根据上下文预测下一步动作:
当 隐含着复杂的多步推理、状态追踪与规划时,这个映射很难一次完成。
3.2 ReAct 扩展了 Agent 的输出空间
ReAct 将原有动作空间 扩展为:
其中:
- 是会作用于外部环境的动作空间;
- 是语言形式的推理空间;
- 可以是 Thought,也可以是 Action。
统一策略写作:
当模型生成 Thought 时,它不会直接改变外部环境,也不会产生新的环境观察,只会更新模型后续可见的上下文:
当模型生成 Action 时,Harness 将其发送给环境 ,环境返回 Observation:
随后上下文更新为:
从直觉上看,ReAct 相当于将一个复杂映射:
拆成两个更容易处理的阶段:
也可以近似写成:
但这只是便于理解的分解。ReAct 原论文没有训练一个独立 Planner,也没有显式建立符号状态机,更没有把 Thought 和 Action 拆给两个不同模型。 Thought 仍然是语言模型生成的 Token;论文的核心改动是提示格式、轨迹结构与环境交互协议。
- ReAct 与 Harness 的关系
ReAct 主要定义了 Agent Loop 中模型输出与环境交互的基本协议,但它本身不是一个完整的生产级 Harness。
可以将二者区分如下:
| 层次 | 主要职责 |
|---|---|
| ReAct 范式 | 定义 Thought、Action、Observation 如何交错出现 |
| LLM | 根据当前上下文生成推理、动作或最终答案 |
| Harness | 解析动作、调用工具、返回观察、维护状态并控制循环 |
| Environment | 搜索引擎、代码仓库、终端、浏览器、数据库或物理环境 |
一个最小 ReAct Harness 至少需要完成:
构造包含任务、工具说明和示例轨迹的 Prompt;
调用 LLM 并解析 Thought、Action 或 Finish;
校验 Action 名称和参数;
调用对应工具或环境;
将工具结果转换为 Observation;
把新轨迹写回上下文;
判断是否继续、回退或终止。
生产级 Harness 通常还需要增加:
- 工具权限与参数校验;
- 超时、重试与幂等控制;
- 上下文裁剪和 Observation 压缩;
- 重复动作与无进展检测;
- 错误分类和恢复策略;
- 最大步数、Token 与费用预算;
- Verifier、测试或结果校验;
- 安全策略和危险操作审批;
- 可观测性、轨迹记录与评测指标。
因此,“Agent = LLM + Harness”强调的是:Agent 的最终能力不仅取决于模型权重,也取决于 Harness 如何组织模型、工具、环境和反馈。
- 知识推理任务:HotpotQA 与 FEVER
论文首先在两个知识密集型任务上测试 ReAct:
- HotpotQA
:需要跨多个 Wikipedia 页面完成多跳问答;
- FEVER
:判断给定陈述属于支持(SUPPORTS)、反驳(REFUTES)还是证据不足(NOT ENOUGH INFO)。
在实验设置中,模型最初只获得问题或待验证陈述,不直接获得支持段落。模型必须依靠内部知识,或者主动调用 Wikipedia 工具获取信息。
5.1 Wikipedia 工具空间
论文设计了三个简单动作:
| 动作 | 作用 |
|---|---|
search[entity] | 搜索 Wikipedia 实体页面,返回页面开头内容;若没有精确页面,则返回相近实体 |
lookup[string] | 在当前页面中查找字符串,并依次返回包含该字符串的片段 |
finish[answer] | 提交最终答案 |
作者没有使用复杂的神经检索器,而是让模型显式决定:
- 搜索哪个实体;
- 使用什么关键词;
- 从 Observation 中提取什么信息;
- 下一跳应该搜索什么;
- 何时信息已经充分。
5.2 PaLM-540B 的实验结果
| 方法 | HotpotQA EM | FEVER Acc |
|---|---|---|
| Standard | 28.7 | 57.1 |
| CoT | 29.4 | 56.3 |
| CoT-SC | 33.4 | 60.4 |
| Act-only | 25.7 | 58.9 |
| ReAct | 27.4 | 60.9 |
| CoT-SC ReAct | 34.2 | 64.6 |
| ReAct CoT-SC | 35.1 | 62.0 |
| Supervised SoTA | 67.5 | 89.5 |
注:CoT-SC 指带自一致性(Self-Consistency)的 CoT。论文默认从 21 条 CoT 采样轨迹中选取多数答案。
5.3 结论一:ReAct 并非在所有任务上都高于 CoT
在 HotpotQA 上:
在 FEVER 上:
因此,不能把论文结论简化成“加入 Thought 和工具后一定比 CoT 更强”。
论文观察到:
- CoT 的推理结构通常更灵活,但更容易引入未经验证的事实;
- ReAct 的轨迹更有事实依据,但结构约束更强,也可能被不理想的检索结果带偏;
- FEVER 对精确事实的依赖更强,因此外部检索带来的收益更加明显;
- HotpotQA 需要灵活组织多跳推理,纯 ReAct 的结构约束可能限制这种灵活性。
5.4 结论二:ReAct 稳定超过 Act-only
两个任务上,ReAct 均优于 Act-only:
这说明,仅仅给模型提供搜索工具并不足以获得稳定收益。模型还需要:
- 从搜索结果中提取关键信息;
- 组合多跳证据;
- 判断当前信息是否充分;
- 规划下一次查询;
- 综合形成最终答案。
5.5 结论三:动态混合策略效果最好
论文在两个任务上的最佳方法都不是纯 ReAct,而是 ReAct 与 CoT-SC 的动态组合。
CoT-SC ReAct
先采样 条 CoT 推理轨迹。如果多数答案出现次数小于 ,说明模型基于内部知识无法形成足够一致的判断,于是回退到 ReAct,通过外部检索补充证据。
ReAct CoT-SC
先执行 ReAct。如果在规定步数内没有返回答案,则回退到 CoT-SC。
论文为 ReAct 设置的上限为:
- HotpotQA:7 步;
- FEVER:5 步。
这个结果揭示了一个重要设计思想:
内部推理和外部检索并不是非此即彼的两条路线。Harness 可以根据置信度、进展状态和执行预算,在不同推理策略之间动态切换。
- 轨迹错误分析
作者从 HotpotQA 中分别抽取 ReAct 和 CoT 的正确、错误轨迹各 50 条,共检查 200 条轨迹。
6.1 正确答案中的假阳性
| 成功类型 | ReAct | CoT |
|---|---|---|
| 推理与事实均正确 | 94% | 86% |
| 最终答案正确,但推理或事实存在幻觉 | 6% | 14% |
即使最终答案正确,CoT 也更可能通过错误事实“碰巧”得到正确答案。ReAct 依靠外部证据,将该比例从 14% 降至 6%。
6.2 失败样本的错误类型
| 失败类型 | ReAct | CoT |
|---|---|---|
| 推理错误 | 47% | 16% |
| 搜索结果错误 | 23% | — |
| 幻觉 | 0% | 56% |
| 标签歧义 | 29% | 28% |
这里需要注意:
- “ReAct 幻觉失败为 0%”只适用于作者抽样检查的失败轨迹,不能理解为 ReAct 永远不会幻觉;
- ReAct 的“推理错误”还包括无法从重复 Thought 或重复 Action 中恢复;
- 搜索返回为空、没有包含有效信息,也被单独归为搜索结果错误;
- 百分比经过取整,因此总和可能不严格等于 100%。
两类方法呈现出不同的失败模式:
CoT:
- 推理形式灵活;
- 但容易脱离事实;
- 错误事实会在推理链中持续传播。
ReAct:
- 事实依据通常更充分;
- 但可能被错误搜索结果或噪声 Observation 带偏;
- 还可能重复前面的 Thought 和 Action,陷入无进展循环。
这说明工具并不会自动消除幻觉,只会改变错误的来源与结构。
- 决策任务:ALFWorld 与 WebShop
知识推理任务主要使用严格交替的:
而交互式决策任务可能包含几十个动作。如果每一步都生成完整 Thought,会增加上下文和执行成本。因此,论文采用 Sparse Thought:只在目标分解、状态变化、异常处理和子任务切换等关键位置进行显式推理。
7.1 ALFWorld
ALFWorld 是文本形式的家庭环境。Agent 需要执行类似以下任务:
找到胡椒瓶 打开抽屉 拿起胡椒瓶 把胡椒瓶放入抽屉环境可能包含超过 50 个位置,专家策略也可能需要很长的动作序列。ReAct 的 Thought 主要承担:
- 将高层目标拆分为子目标;
- 记录哪些子目标已经完成;
- 决定下一子目标;
- 根据常识推断物品可能位于何处;
- 在动作失败后调整计划。
ALFWorld 总体成功率如下:
| 方法 | 总体成功率 |
|---|---|
| Act-only(6 次试验最佳) | 45% |
| BUTLER(8 次试验最佳) | 37% |
| ReAct(6 次试验平均) | 57% |
| ReAct(6 次试验最佳) | 71% |
论文观察到,Act-only 的主要问题包括:
- 无法将高层目标稳定拆分为子目标;
- 丢失当前环境状态;
- 完成一个动作后不知道下一步是什么;
- 动作失败后继续重复无效操作。
ReAct 的语言推理在这里发挥了类似显式工作记忆和软状态机的作用。它不是严格的符号状态机,但能够通过自然语言维护目标、进度和下一步计划。
7.2 WebShop
WebShop 要求 Agent 根据自然语言需求浏览商品并作出选择,例如:
寻找带抽屉、镍色饰面且价格低于 140 美元的床头柜。
论文使用两个指标:
- Score
:最终商品覆盖目标属性的平均比例;
- Success Rate
:最终商品满足全部要求的任务比例。
| 方法 | Score | Success Rate |
|---|---|---|
| Act-only | 62.3 | 30.1 |
| ReAct | 66.6 | 40.0 |
| IL | 59.9 | 29.1 |
| IL + RL | 62.4 | 28.7 |
| 人类专家 | 82.1 | 59.6 |
ReAct 可以在 Thought 中持续维护:
- 用户要求了哪些属性;
- 当前商品满足哪些属性;
- 还缺少哪些选项;
- 是否需要继续搜索;
- 当前是否具备购买条件。
不过,ReAct 与人类专家仍有明显差距。论文认为,人类会进行更多商品探索和搜索词改写,而基于少量示例提示的 ReAct 在这两点上仍然不足。
- 从 ReAct 到现代 Harness
ReAct 证明了推理与行动闭环的价值,但论文中的实现相对简洁。面向现代 Agent,尤其是代码 Agent,仅靠基础循环通常还不够。
8.1 论文暴露的问题与 Harness 对策
| ReAct 暴露的问题 | 现代 Harness 可采用的机制 |
|---|---|
| 搜索词不准确 | 查询重写、同义词扩展、分层检索 |
| 搜索到错误的同名实体 | 实体消歧、来源过滤、交叉验证 |
| Observation 没有有效信息 | 结果质量评分、自动换工具或换查询 |
| Observation 太长或噪声过多 | 截断、摘要、结构化提取、相关片段选择 |
| 重复 Thought 或 Action | 重复检测、轨迹去重、无进展计数器 |
| 动作失败后无法恢复 | 错误分类、重试、替代工具、回退策略 |
| 不知道何时停止 | 最大步数、完成条件、置信度阈值 |
| 最终答案缺少验证 | Verifier、多样本一致性、规则或测试校验 |
| 工具可能产生危险副作用 | 权限分级、沙箱、审批与审计 |
这些机制是从论文失败模式出发得到的工程化延伸,不应被表述为 ReAct 原论文已经实现的功能。
8.2 在代码 Agent 中的对应关系
| ReAct 概念 | 代码 Agent 中的对应内容 |
|---|---|
| Thought | 分析报错、提出假设、规划修改、判断测试结果 |
| Action | read_file、grep、LSP 查询、编辑文件、执行测试 |
| Observation | 文件内容、符号定义、编译错误、测试日志、Git diff |
| Environment | 代码仓库、文件系统、编译器、终端、语言服务器 |
| Finish | 提交补丁、输出结论或声明任务完成 |
一个合理的编码闭环是:
flowchart TD S["理解需求与建立假设"] --> R["读取代码或查询语义信息"] R --> E["实施最小修改"] E --> V["编译、测试或静态检查"] V --> D{"结果是否满足完成条件?"} D -- "否" --> S D -- "是" --> F["汇总修改与验证结果"]这并不意味着模型必须在每次工具调用前输出冗长推理。更实用的策略通常是:
- 在任务开始、证据冲突、动作失败和计划切换时进行显式规划;
- 对连续的简单读取或机械操作减少无意义 Thought;
- 将编译、测试和静态分析结果作为关键 Observation;
- 只有在验证满足完成条件后才结束任务。
换言之,现代 Harness 追求的不是“Thought 越多越好”,而是:
在真正影响决策的位置生成足够的推理,并让每次行动尽可能获得高质量、低噪声、可验证的反馈。
- 总结
ReAct 的本质不是让模型一直思考,也不是让模型不加判断地连续调用工具。它建立的是一个由模型、Harness 和环境共同驱动的闭环:
论文实验说明:
- 推理能够提升行动质量。
ReAct 在 HotpotQA、FEVER、ALFWorld 和 WebShop 上都优于受控的 Act-only 基线。
- 工具不能保证效果一定高于纯推理。
在 HotpotQA 上,纯 ReAct 仍低于 CoT;错误检索与僵化的交互结构可能抵消工具收益。
- 外部证据能够降低事实幻觉。
在事实依赖较强的 FEVER 上,ReAct 明显优于 CoT。
- 内部推理与外部检索应动态组合。
ReAct 与 CoT-SC 的混合策略取得了更好的总体结果。
- Agent 能力不仅取决于 LLM。
工具设计、Observation 质量、上下文管理、异常恢复、验证机制和停止条件都会直接影响最终表现。
因此,对现代 Agent 更准确的理解是:
LLM 决定系统“如何理解和选择”,Harness 决定系统“能够看到什么、能够做什么、如何获得反馈,以及何时算真正完成”。
大模型的知识又多又杂,到底怎么学?
做这行久了,被问最多的问题就一个:大模型的知识又多又杂,我到底先学啥?翻了一堆资料,看啥都像重点,结果啥都没学进去。今天把我自己一路摸出来的顺序捋一遍,零基础、应届生、转行的都适用。跟着走,至少方向不乱、不瞎忙,学完拿得出手。
第一阶段(10天):初阶应用
这一阶段就一个目标:把大模型真正"玩明白",不是只会聊天那种,而是能调教它、能用代码把大模型和业务接起来。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
这阶段正式进实战,目标很实在:做出两个能拿出手的东西——一个私有知识库,一个 agent 对话机器人。
为什么要做 RAG
搭建一个简单的 ChatPDF
检索的基础概念
什么是向量表示(Embeddings)
向量数据库与向量检索
基于向量检索的 RAG
搭建 RAG 系统的扩展知识
混合检索与 RAG-Fusion 简介
向量模型本地部署
…
走完这 30 天,Python 或 JavaScript 背景的基本能独立做一套 RAG 应用,简历上也敢写"大模型应用开发"了。
第三阶段(约20天):动手微调
学到这,你已经开始 “造” 模型了 —— 通过微调,搞出垂直领域的专用小模型。
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你从 “只会用” 变成 “能造” 的 AI 小子。那么你还想往下探索吗?
想要入局AI大模型赛道、抢占行业红利的朋友,微信扫描下方CSDN官方认证二维码,即可100%免费领取全套学习资料!
第四阶段(20天):商业闭环,部署落地
技术学完,落地才算数。这阶段带你搞明白大模型怎么真正跑起来、用起来。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
想要入坑大模型的朋友,给大家准备了一份2026 年最新 AI 大模型全套学习资料:
1、大模型系统化学习路线
2、大模型学习视频教程
3、大模型学习书籍&电子文档
4、AI大模型最新行业报告
5、大模型项目实战&配套源码
6、2026大模型大厂面试真题
7、为什么要学习大模型?
我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着AI技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。
8、适合谁学?
- 传统后端 / Java / 前端开发,想转型 AI 应用
- 大学生、应届生,想拿更好的 offer
- 产品经理、运营,想武装职业竞争力
- 技术负责人,想给团队落地提效
学习是反人性的,但回报是真金白银。技术会更新,赛道会切换,但只要你先动手,机会就永远站在你这边。
9、这些资料真的有用吗?
这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。
资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。
想要入局AI大模型赛道、抢占行业红利的朋友,微信扫描下方CSDN官方认证二维码,即可100%免费领取全套学习资料!
好了,就写到这。路线是死的,人是活的,卡住了随时来问我。觉得有用就点个收藏,别让它进收藏夹吃灰——动起来比啥都强。