ReAct
让大语言模型在推理中行动、在行动中推理的里程碑式Prompt工程方法
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让大语言模型在推理中行动、在行动中推理的里程碑式Prompt工程方法
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你让AI助手查一个复杂问题,它不是直接给你答案,而是像人类一样边想边做——先搜索相关信息,判断是否找到了关键线索,然后决定下一步该查什么。这个过程循环往复,直到找到最终答案。这就是 ReAct 论文想要解决的核心问题。
2022年末,来自普林斯顿、DeepMind和Google Brain的研究团队联合发表了论文《ReAct: Synergizing Reasoning and Acting in Language Models》,并在ICLR 2023大会上正式亮相。这篇论文提出了一个看似简单却极具影响力的思想:让大语言模型在推理过程中同时生成"思考"(Thought)和"行动"(Action),通过与外部环境交互来增强推理能力。
图1:ReAct方法概览,展示了思考-行动-观察的循环交互过程

ReAct的诞生源于对当时主流推理方法的反思。传统的Chain-of-Thought(CoT) prompting方法让模型进行"无声思考",推理过程对外部环境是黑箱,模型无法获取实时反馈,容易陷入"幻觉"(hallucination)——即一本正经地胡说八道。而单纯的Action-based方法(如Toolformer)缺乏深度的推理链路,模型不知道为什么要执行某个操作。
ReAct的创新之处在于,将两种模式融为一体:Thought(思考) 让模型分析当前状态、制定计划;Action(行动) 让模型调用外部工具(搜索Wikipedia、操作虚拟环境等);Observation(观察) 将执行结果反馈给模型,使其能够根据真实反馈调整推理方向。三者形成闭环,相互强化。

ReAct在四个不同类型的环境上进行了实验,涵盖了AI推理能力的多个维度:
HotpotQA(多跳问答):模型需要从多个 Wikipedia 页面中提取关联信息才能回答。例如"哪位出演了某部电影的演员,也出演了另一部某某电影?"这种需要跨越多个实体的问题。ReAct在这个数据集上达到了30.4%的精确匹配率(EM),而传统的CoT方法为29.4%。
FEVER(事实核查):给定一个声明,判断它是"真"还是"假"。模型需要在Wikipedia上搜索证据来支持或反驳声明。ReAct达到54%的EM,CoT为53.6%。有趣的是,两者差距不大,但当两者结合(ReAct+CoT Self-Consistency)时,跃升至67.1%。
ALFWorld(文本冒险游戏):一个模拟家庭环境的任务测试平台。模型需要理解自然语言指令(如"把红色蜡烛放到卧室的抽屉里"),然后在虚拟世界中一步步执行操作。这考验的是模型的规划能力——能否将高层目标拆解为可执行的低层动作序列。ReAct在这个任务上达到了78.4%的成功率,远超CoT的62.1%,展现了"行动-观察"反馈循环的巨大价值。
WebShop(网购模拟):模拟真实网购场景,模型需要根据用户需求在电商网站中搜索、筛选、比较商品。这是最接近真实世界应用的任务,ReAct达到35.8%的成功率,而CoT仅为33.3%。
从代码组织来看,ReAct仓库是一个非常"纯粹"的学术研究项目,没有复杂的工程化包装,但结构清晰易懂:
项目以 Jupyter Notebook 为核心载体,每个实验(HotpotQA、FEVER、ALFWorld、WebShop)都有独立的 .ipynb 文件。作者刻意保持了代码的简洁性,让研究同行能够快速复现结果、迁移到新任务上。
核心模块包括:
search[]、lookup[]、finish[] 三个基础动作接口。模型通过这些接口与Wikipedia交互,获取真实世界信息。HotPotQAWrapper 和 FEVERWrapper 分别处理两个问答数据集的评测。图2:项目作者头像

ReAct的技术栈非常"轻量化",没有引入复杂的机器学习框架或深度学习库。核心依赖仅有:
这种选择是深思熟虑的——研究代码需要可读性和可复现性,而非工程性能。作者在README中明确指出,复现实验只需配置一个OpenAI API Key即可。
ReAct的影响力远超学术范畴。它的核心思想——推理与行动相结合——直接启发了后续一系列重要工作:
LangChain 将ReAct范式产品化,提供了开箱即用的ReAct Agent实现,如今已成为构建AI Agent应用的事实标准。AutoGPT 的自主任务执行能力,底层正是ReAct的Thought-Action-Observation循环。Microsoft AutoGen、Hugging Face Transformers Agents 等主流框架的Agent实现,无一不流淌着ReAct的思想血液。
从数据来看,项目获得了近4000颗GitHub Stars,被引用次数已超过4000次,是近年来最具影响力的AI论文之一。
ReAct并非银弹。首先,它高度依赖外部API(OpenAI),无法在纯离线环境中运行。其次,"思考"token会显著增加输入长度,在长对话场景中成本较高。第三,对于需要精确数值计算或代码执行的任务,Wikipedia搜索的帮助有限。
更重要的是,ReAct展示的"智能"仍然是模式匹配层面的——模型学会了生成"看起来像推理"的文本,而非真正理解了推理的语义。这些问题至今仍是AI研究的前沿课题。
# 克隆仓库
git clone https://github.com/ysymyth/ReAct.git
cd ReAct
# 设置OpenAI API Key
export OPENAI_API_KEY=sk-...
# 运行实验
jupyter notebook hotpotqa.ipynb # 多跳问答
jupyter notebook fever.ipynb # 事实核查
requirements.txt?不存在的。作者在README中只列出了核心依赖,手动安装即可。这或许是学术项目的一个小缺憾——没有标准化的依赖管理增加了复现的摩擦。
一句话总结:ReAct是让大语言模型学会"边想边做"的里程碑式工作,它用最少的工程包装,揭示了推理与行动结合的巨大潜力。如果你对AI Agent感兴趣,想理解AutoGPT、LangChain Agent背后的思想根源,ReAct是绕不开的起点。