论文学习《ReAct: 在大语言模型中协同推理与行动》

ReAct 论文学习

论文标题 :ReAct: Synergizing Reasoning and Acting in Language Models
中文译名 :ReAct:在语言模型中协同推理与行动
发表会议 :ICLR 2023(国际学习表示会议)
作者 :Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan, Yuan Cao
机构 :Princeton University & Google Research
arXivhttps://arxiv.org/abs/2210.03629
项目主页https://react-lm.github.io
代码仓库https://github.com/ysymyth/ReAct


目录

  1. 背景知识:读懂这篇论文需要了解什么
  2. 论文核心问题:作者在解决什么问题
  3. [ReAct 的核心思想](#ReAct 的核心思想)
  4. [ReAct 的工作原理](#ReAct 的工作原理)
  5. 具体的实验任务
  6. 实验结果与分析
  7. [ReAct 的优势:为什么比之前方法更好](#ReAct 的优势:为什么比之前方法更好)
  8. [ReAct 的局限性](#ReAct 的局限性)
  9. [ReAct 的影响与后续发展](#ReAct 的影响与后续发展)
  10. [总结:一图看懂 ReAct](#总结:一图看懂 ReAct)

1. 背景知识:读懂这篇论文需要了解什么

在阅读这篇论文之前,我们需要理解几个关键概念:

1.1 大型语言模型(LLM, Large Language Model)

是什么:像 GPT-3、PaLM 这样的超大规模 AI 模型,通过在海量文本上训练,学会了理解和生成人类语言。

能做什么:回答问题、写文章、翻译、编程等等。

局限性

  • 知识是"冻结"的 ------ 训练完成后就不再更新,无法获取最新信息
  • 可能产生"幻觉"(hallucination)------ 一本正经地说出错误内容
  • 推理复杂问题时容易出错

1.2 思维链(Chain-of-Thought, CoT)提示

是什么:一种让 LLM "一步一步思考"的提示技术。

举例

复制代码
问题:Roger 有 5 个网球,买了 2 罐网球(每罐 3 个),现在有几个?
传统提示 → 模型直接回答:11
CoT 提示 → 模型先推理:
  思考:Roger 原来有 5 个。买了 2 罐,每罐 3 个,就是 6 个。5 + 6 = 11
  答案:11

问题:CoT 只是"闭卷推理"------ 模型只能依靠自己训练时学到的知识,无法查阅外部信息,容易出错。

1.3 行动计划生成(Action Plan Generation)

是什么:让 LLM 生成一系列操作步骤来完成任务,比如"先搜索X,再点击Y,然后填写Z"。

问题:只有行动,没有推理 ------ 模型不知道"为什么这样做",遇到意外情况不会灵活应对。

1.4 少样本提示(Few-shot Prompting)

是什么:在给模型提问时,先提供几个"示范例子",让模型学习解题模式。

举例

复制代码
示范1:问题... 答案...
示范2:问题... 答案...
现在回答:新问题...

1.5 幻觉(Hallucination)

是什么:LLM 生成的内容听起来很有道理,但实际上是错误或虚构的。

举例:问 AI "爱因斯坦在哪里出生",AI 可能自信地回答"纽约"(错了,是德国乌尔姆市),因为它混淆了记忆。


2. 核心问题:作者在解决什么问题

2.1 现状

在 2022 年,研究者们发现了两种让 LLM 更强大的方向:

方向 方法 优点 缺点
推理(Reasoning) Chain-of-Thought 等 能逐步思考复杂问题 无法获取外部信息,容易产生幻觉
行动(Acting) WebGPT、SayCan 等 能与外部环境交互 缺乏推理,遇到意外不知如何应对

这两个方向一直是分开研究的!

2.2 核心问题

如果把推理和行动结合在一起会怎样?

论文的直觉很简单,类比人类解决问题的方式:

  • 当我们遇到一道不会的题,我们会先思考 (推理)→ 去查资料 (行动)→ 阅读资料 (观察)→ 再思考 (推理)→ 给出答案
  • 现有 AI 要么只会推理,要么只会行动,而人类是交替进行推理和行动的

2.3 解决方案预告

作者提出了 ReActRe asoning + Acting 的组合词):

  • 让 LLM 在一个统一的框架下,交替生成推理轨迹(思考过程)和行动
  • 推理帮助模型制定计划、处理异常
  • 行动让模型能从外部获取最新、准确的信息

3. ReAct 的核心思想

3.1 核心理念:思考-行动-观察的循环

ReAct 的工作模式可以用这个简单的循环来理解:

复制代码
┌─────────────────────────────────────────────┐
│                                             │
│   Thought(思考):分析当前情况,制定下一步  │
│         ↓                                   │
│   Action(行动):执行具体操作              │
│         ↓                                   │
│   Observation(观察):获取行动结果          │
│         ↓                                   │
│   重复上述过程,直到任务完成                 │
│                                             │
└─────────────────────────────────────────────┘

3.2 三类核心输出

在 ReAct 框架中,模型的每一步输出属于以下三类之一:

类型 描述 示例
Thought(思考/推理轨迹) 模型的内部推理过程,不直接与环境交互 "我需要先找到 X 的相关信息,再确认 Y"
Action(行动) 调用外部工具或接口 Search[爱因斯坦]Click[购买按钮]
Observation(观察) 来自外部环境的反馈信息 Wikipedia 返回的搜索结果

3.3 一个直观的完整示例(HotpotQA 问答任务)

问题:除了《古罗马帝国》,科罗拉多克里普尔克里克是否也是 George Carmack 出生地的所在州?

复制代码
Thought 1: 我需要查找 George Carmack,然后找到他的出生地和出生州。
Action 1: Search[George Carmack]
Observation 1: George Washington Carmack(1860-1922),美国探险家,在加拿大育空地区发现了金矿。出生在加利福尼亚州的 Port Costa。

Thought 2: George Carmack 出生在加利福尼亚州。现在我需要确认科罗拉多克里普尔克里克是否在加利福尼亚州。
Action 2: Search[科罗拉多克里普尔克里克]
Observation 2: 克里普尔克里克(Cripple Creek)是美国科罗拉多州特勒尔县的一个城市。

Thought 3: 科罗拉多克里普尔克里克在科罗拉多州,而 George Carmack 出生在加利福尼亚州,两者不是同一个州。
Action 3: Finish[不是,科罗拉多克里普尔克里克在科罗拉多州,而 George Carmack 出生在加利福尼亚州]

关键洞察

  • Thought(思考) 帮助模型明确每一步要做什么
  • Action(行动) 让模型从外部获取准确信息,避免幻觉
  • Observation(观察) 让模型用真实信息更新自己的理解
  • 整个过程像人类解题一样自然、透明、可解释

4. ReAct 的工作原理(技术细节)

4.1 提示设计(Prompt Design)

ReAct 使用少样本提示(few-shot prompting)------ 即在给 LLM 真正的问题之前,提供几个完整的"思考-行动-观察"示例。

复制代码
=== 少样本示例(Few-shot Example)===
Question: 科罗拉多造山带东麓海拔范围是什么?
Thought 1: 我需要搜索科罗拉多造山带,找到海拔范围信息。
Action 1: Search[Colorado orogeny]
Observation 1: 科罗拉多造山带是...形成于...
Thought 2: 搜索结果没有直接给出海拔数据,我应该搜索东麓(eastern flank)。
Action 2: Search[eastern flank Colorado orogeny]
Observation 2: 东麓的海拔范围是 1200 至 3300 米。
Thought 3: 已找到答案。
Action 3: Finish[1200 至 3300 米]

=== 真实问题 ===
Question: [用户的实际问题]
Thought 1: [模型开始生成...]

这里的关键技术点

  • 模型看到示例后,学会了"先思考后行动"的模式
  • 每次 Action 执行后,系统自动将 Observation 插入到上下文中
  • 模型继续在扩展的上下文中生成下一步

4.2 动作空间(Action Space)

对于不同的任务,ReAct 定义了不同的行动类型:

知识型问答任务(HotpotQA / FEVER)

复制代码
Search[关键词]       → 在 Wikipedia 搜索
Lookup[关键词]       → 在当前页面中查找关键词
Finish[答案]         → 提交最终答案

交互式决策任务(ALFWorld 家务机器人)

复制代码
go to [地点]         → 移动到某个位置
take [物品] from [容器] → 拿取物品
put [物品] in/on [容器] → 放置物品
open [容器/门]       → 打开容器或门
examine [物品]       → 查看物品
use [物品]           → 使用物品

网购任务(WebShop)

复制代码
search[查询词]       → 搜索商品
click[按钮/选项]     → 点击界面元素

4.3 使用哪个 LLM?

论文使用了:

  • PaLM-540B(Google 的 5400 亿参数模型)
  • GPT-3(text-davinci-002)(OpenAI 的模型)

这两个模型都是**纯提示(prompting)**方式使用,不需要额外训练!这是 ReAct 的一大优点:对原始模型零修改。

4.4 与其他方法的对比

论文对比了 4 种方法:

方法 有推理? 有行动? 特点
Standard(标准提示) 直接回答,无推理无行动
CoT(思维链) 只推理,不与外部交互
Act(仅行动) 只行动,无推理过程
ReAct(本文) 推理+行动交替进行

5. 具体的实验任务

论文在 4 个任务上进行了实验,覆盖了两大类场景:

5.1 知识密集型推理任务

任务一:HotpotQA(多跳问答)

是什么 :一个需要通过多个步骤才能回答的问答数据集。
难点:单一搜索往往无法得到答案,需要"多跳推理"(multi-hop reasoning)------ 先找到 A,从 A 的结果中发现需要查 B,再从 B 得到最终答案。

示例问题

"演员 Jason Statham 出演的 The Expendables 系列,该系列导演是谁?他导演的另一部电影是什么?"

(需要先查 Jason Statham → 找到 Expendables → 查导演信息 → 查导演其他作品)

评价指标:EM(Exact Match,完全匹配)------ 预测答案与正确答案完全一致

任务二:FEVER(事实验证)

是什么 :给定一个陈述,判断其是否真实(SUPPORTS/REFUTES/NOT ENOUGH INFO)。
难点:需要从 Wikipedia 查找相关事实,并做出真假判断。

示例

声明:"尼古拉·特斯拉是美国人"

需要查证:特斯拉出生在克罗地亚(当时是奥匈帝国领土),后来移民美国

结论:支持(SUPPORTS)

5.2 交互式决策任务

任务三:ALFWorld(家务机器人)

是什么 :一个文本描述的虚拟家庭环境,模拟机器人执行家务任务。
难点:需要在多个房间中找到物品、执行操作,任务有多步骤依赖关系。

示例任务

"找到并拿起一个苹果,然后把它放进冰箱"

(需要:进入厨房 → 查看桌子/柜台 → 找到苹果 → 拿起苹果 → 打开冰箱 → 放入)

评价指标:Success Rate(成功率)

任务四:WebShop(网络购物)

是什么 :模拟在网络商城(类似 Amazon)上根据需求购买商品的环境。
难点:需要理解用户需求(如颜色、尺寸、品牌等),在真实商品列表中筛选、点击、选择。

示例任务

"帮我找一件男士蓝色短袖 T恤,尺码 M,价格不超过 50 美元"

(需要:搜索 → 浏览结果 → 点击商品 → 确认规格 → 购买)

评价指标:Score(得分,基于属性匹配程度)和 Success Rate(成功率)


6. 实验结果与分析

6.1 HotpotQA 结果(问答准确率 EM)

方法 PaLM-540B GPT-3
Standard(标准提示) 25.7 29.7
CoT(只推理) 29.4 33.4
Act(只行动) 25.2 28.0
ReAct(推理+行动) 27.4 35.1
CoT + ReAct 结合 --- 36.8

解读

  • ReAct 比纯 CoT 和纯 Act 都强
  • GPT-3 用 ReAct 达到 35.1%,比 Standard 提升 +5.4%
  • 结合 CoT 和 ReAct 效果最好(36.8%)

6.2 FEVER 结果(事实验证准确率)

方法 PaLM-540B GPT-3
Standard(标准提示) 58.9 56.3
CoT(只推理) 56.3 57.3
Act(只行动) 58.9 57.3
ReAct(推理+行动) 62.2 60.9

解读

  • ReAct 在事实验证任务上显著超越所有 baseline
  • PaLM 用 ReAct 达到 62.2%,比 Standard 提升 +3.3%

6.3 ALFWorld 结果(家务机器人成功率)

方法 成功率
BUTLER(模仿学习方法) 26%
纯行动(Act only) 45%
ReAct 71%
ReAct(最佳单次运行) 79%

解读

  • ReAct 比专门训练的 BUTLER 模型高出 +45%
  • 仅凭 1-2 个少样本示例,就大幅超越了用大量训练数据的模仿学习方法

6.4 WebShop 结果(网购任务)

方法 分数 成功率
模仿学习(IL) 59.9 29.1%
强化学习(RL) 62.4 28.7%
Act(只行动) 62.0 30.0%
ReAct 66.6 40.0%

解读

  • ReAct 成功率 40%,比最好的 RL 方法高出 +11.3%
  • 这是在零训练、仅少样本提示的情况下实现的!

6.5 错误分析

论文对 ReAct 的失败案例进行了分析:

在 HotpotQA 上,错误类型分布

错误类型 比例 说明
搜索结果不充分 23% Wikipedia 没有相关内容
推理错误 47% 模型思考过程出错
搜索策略不当 30% 使用了错误的搜索关键词

关键发现

  • 幻觉问题大幅减少:CoT 有 14% 的错误是幻觉,ReAct 只有 6%
  • 错误传播减少:CoT 一旦某步推理错误,后续全错;ReAct 可以通过查询纠正

7. ReAct 的优势:为什么比之前方法更好

7.1 解决了幻觉问题

传统 CoT 的问题

复制代码
问题:苹果公司创始人是谁?
CoT 推理:我知道苹果公司是一家科技公司。
         史蒂夫·乔布斯是最著名的 CEO,所以他应该是创始人。
         答案:史蒂夫·乔布斯
(实际上苹果有三个联合创始人:乔布斯、沃兹尼克、韦恩)

ReAct 的做法

复制代码
Thought 1: 我需要查找苹果公司的创始人信息
Action 1: Search[Apple Inc founders]
Observation 1: 苹果公司由史蒂夫·乔布斯、史蒂夫·沃兹尼克和罗纳德·韦恩于1976年联合创立
Thought 2: 有三个联合创始人
Action 2: Finish[史蒂夫·乔布斯、史蒂夫·沃兹尼克、罗纳德·韦恩]

7.2 提高了可解释性和可信度

ReAct 生成的推理轨迹就像人类的"解题过程",用户可以:

  • 清晰看到模型是如何一步步得出答案的
  • 识别模型在哪一步出了问题
  • 人工干预和纠正特定步骤

举例:如果 ReAct 在某一步搜索了错误的关键词,人类可以直接修改那一个 Thought,而不需要重新开始。

7.3 动态调整计划

ReAct 能在执行过程中根据观察到的结果动态调整计划:

复制代码
Thought 1: 我认为答案是 X,我去搜索验证一下
Action 1: Search[X]
Observation 1: (发现搜索结果显示 X 是错的)
Thought 2: 哦,我之前的假设是错误的,正确答案应该是 Y,让我验证 Y
Action 2: Search[Y]
...

这就像一个人在查资料时发现了新信息,能够及时调整思路。

7.4 少样本即强大

ReAct 只需要 1-6 个示例就能在多个任务上表现出色,不需要大量标注数据进行训练。


8. ReAct 的局限性

8.1 依赖强大的基础模型

ReAct 的提示策略需要模型本身具有较强的理解和指令跟随能力。在较小的模型上效果会大打折扣。

8.2 上下文窗口限制

每次推理步骤都会增加上下文长度(Thought + Action + Observation),对于复杂任务,上下文可能会超出模型的处理能力(早期 GPT-3 的上下文窗口只有 4096 个 token)。

8.3 外部工具的依赖

ReAct 的效果很大程度上取决于外部工具(如 Wikipedia API)的质量。如果工具返回的信息不准确或不完整,模型的推理也会受影响。

8.4 有时会陷入循环

模型有时会在同一个信息上反复搜索,进入无效循环,论文称之为"重复模式"(repetitive pattern)。

示例

复制代码
Thought 1: 我需要查找 X
Action 1: Search[X]
Observation 1: (相关但不够详细)
Thought 2: 我需要查找更多关于 X 的信息
Action 2: Search[X]  ← 完全相同的搜索!
...

8.5 微调实验初步

论文也做了初步的**微调(fine-tuning)**实验------用 ReAct 生成的轨迹来训练更小的模型:

  • 小模型(1B 参数)微调后可以超过大模型(175B 参数)的提示效果
  • 说明 ReAct 的轨迹是高质量的训练数据

9. ReAct 的影响与后续发展

ReAct 论文发表后产生了巨大影响,成为 AI Agent 领域的基础工作之一。

9.1 在工业界的应用

LangChain 框架 :最流行的 LLM 应用开发框架,其核心的 ReAct Agent 直接基于此论文实现。

python 复制代码
# LangChain 中使用 ReAct Agent 的示例
from langchain.agents import create_react_agent, AgentExecutor
from langchain import hub

# 加载 ReAct 提示模板
prompt = hub.pull("hwchase17/react")

# 定义工具(如搜索、计算器等)
tools = [search_tool, calculator_tool]

# 创建 ReAct Agent
agent = create_react_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools)

# 运行
result = executor.invoke({"input": "2024年世界人口是多少的两倍是多少?"})

9.2 启发了众多后续工作

后续工作 改进点
Reflexion(反思) 让 Agent 在失败后自我反思,下次做得更好
Tree of Thoughts(思维树) 推理时不走单一路径,而是探索多个分支
Self-Ask(自问自答) 将复杂问题分解为更小的子问题
AutoGPT 自主循环执行 ReAct 思路,完成更长期的任务
LangGraph 以图结构组织复杂的多 Agent ReAct 工作流

9.3 定义了现代 AI Agent 的基本范式

复制代码
ReAct 确立的 Agent 核心循环:

┌──────────────────────────────────────────────────────┐
│                                                      │
│   用户输入任务                                        │
│        ↓                                             │
│   LLM 思考(Thought)→ 生成行动(Action)             │
│        ↓                                             │
│   工具执行(Tool Execution)→ 返回结果(Observation) │
│        ↓                                             │
│   重复,直到生成最终答案(Finish)                    │
│                                                      │
└──────────────────────────────────────────────────────┘

这个循环已经成为现代 AI Agent 系统的标准架构。

9.4 意义:从语言模型到行动模型

ReAct 的核心贡献是证明了:

  • LLM 不仅仅是"文本生成器",还可以成为"行动执行者"
  • 推理和行动的结合比单独的任何一种都更强大
  • 通过简单的提示工程就能释放 LLM 的巨大潜力

这为后来的 ChatGPT Plugins、GPT-4 with Code Interpreter、Claude 的 Tool Use 等功能奠定了理论基础。


10. 总结

10.1 一句话总结

ReAct = 让 AI 像人类一样"边思考边查资料"来解决问题

10.2 核心贡献三点

  1. 提出了新的提示格式:将推理(Thought)和行动(Action)交织在一起,形成 Thought-Action-Observation 的循环

  2. 在多种任务上验证了有效性

    • 知识型问答(HotpotQA):减少幻觉,提升准确率
    • 事实验证(FEVER):更准确判断真假
    • 家务机器人(ALFWorld):成功率提升 34%+
    • 网络购物(WebShop):成功率提升 10%+
  3. 无需额外训练:只用少样本提示就能实现,门槛极低

10.3 ReAct vs CoT vs Act 对比总结

复制代码
            有推理轨迹?  能查外部信息?  抗幻觉?  可解释?
Standard:     ❌            ❌           弱       弱
CoT:         ✅            ❌           一般     强
Act:         ❌            ✅           强       弱
ReAct:       ✅            ✅           强       强

10.4 为什么说 ReAct 是里程碑式工作?

在 2022 年,ReAct 第一次系统地证明了 "思考 + 工具使用" 的组合可以让 LLM 做到以前做不到的事。这篇论文启发了整个 AI Agent 领域的发展方向,今天我们看到的各种智能助手(能够搜索网络、运行代码、操作文件的 AI)都在以这篇论文为基础进行构建。

10.5 学习 ReAct 后能做什么?

  • 理解 LangChain、LangGraph 等框架的核心设计理念
  • 自己构建能使用工具的 AI Agent
  • 理解 ChatGPT 的插件系统和 Function Calling 的底层思想
  • 为进一步学习更复杂的 Agent 架构(如 AutoGPT、BabyAGI)打下基础

附录:关键术语表

术语 英文 解释
大型语言模型 LLM (Large Language Model) 在海量文本上训练的超大规模语言模型,如 GPT、PaLM
思维链 CoT (Chain-of-Thought) 让模型"一步步思考"的提示技术
幻觉 Hallucination LLM 生成听起来合理但实际错误的内容
少样本提示 Few-shot Prompting 提供少量示例让模型学习解题模式
推理轨迹 Reasoning Trace 模型的逐步思考过程记录
多跳推理 Multi-hop Reasoning 需要经过多个中间步骤才能得出答案的推理
模仿学习 Imitation Learning (IL) 通过模仿专家行为来学习的机器学习方法
强化学习 Reinforcement Learning (RL) 通过奖惩信号来学习行为策略的机器学习方法
精确匹配 Exact Match (EM) 评估指标:预测答案与标准答案完全一致才算正确
上下文学习 In-context Learning 在推理时通过上下文示例学习,无需更新模型参数
微调 Fine-tuning 用特定数据集对预训练模型进行进一步训练
提示工程 Prompt Engineering 设计有效输入提示以引导模型输出期望结果的技术
Agent Agent 能够自主感知环境、规划并执行行动的 AI 系统
相关推荐
Dawson Zhu4 小时前
AI 辅助调试陷入「反复修改」循环?用证据驱动的四步法破局
人工智能·语言模型·架构·aigc·agi
Behaviour4 小时前
iPhone Duo 来了,苹果 Siri AI 接入定制 Gemini
人工智能·ios·语言模型·aigc·iphone
不要生病了5 小时前
扩散语言模型的“灵活性陷阱”:为什么训练时反而应该按自回归顺序探索?
人工智能·语言模型·回归
憨波个8 小时前
【ASR】Whisper:Robust Speech Recognition via Large-Scale Weak Supervision
人工智能·深度学习·语言模型·whisper·语音识别
wish36612 小时前
LiteLLM 部署实战:Docker 环境
人工智能·语言模型·自然语言处理·local llm
大模型任我行13 小时前
Meta:AI让推荐系统自动化持续优化
人工智能·语言模型·自然语言处理·论文笔记
Dawson Zhu14 小时前
Agent 记忆调用的上下文感知:从“能召回“到“敢开口“的决策框架
人工智能·语言模型·架构·aigc·agi
wish36618 小时前
EmployeeAssistant 智能问答服务:基于 pgvector 与 LLM 的企业知识库助手
人工智能·语言模型·自然语言处理·local llm
Dawson Zhu1 天前
工作流与 Agent 的工程选型:从“控制权归属“看 LLM 应用架构
人工智能·语言模型·架构·aigc·agi
差不多的周周1 天前
《MotionLLM:从人体运动和视频理解人类行为》论文核心部分详解
人工智能·深度学习·机器学习·计算机视觉·语言模型·音视频