什么是 ReAct 循环
ReAct 循环是让大语言模型交替执行推理和行动的智能体框架。它通过“思考、行动、观察”的循环,让 AI 先判断下一步该做什么,再调用工具获取外部结果,最后根据结果继续推理或给出答案。

ReAct 这个名字来自 Reasoning and Acting,也就是“推理”和“行动”的组合。它解决的问题很直接:不要让模型只凭训练数据一次性回答,而是让模型像人处理陌生任务一样,先想清楚缺什么信息,再动手查资料、调接口、运行代码或读取数据库。
一句话概括,ReAct 循环让 AI 从封闭的文本生成器,变成能和外部环境持续交互的行动型智能体。
ReAct 循环从哪里来
ReAct 作为系统化方法,来自 2022 年的论文《ReAct: Synergizing Reasoning and Acting in Language Models》。论文作者包括 Shunyu Yao、Jeffrey Zhao、Dian Yu、Nan Du、Izhak Shafran、Karthik Narasimhan 和 Yuan Cao,研究来自普林斯顿大学、Google Research 等机构。

这篇论文的核心观点是:只让模型推理,容易停留在脑内猜测;只让模型行动,又缺少对目标、计划和异常的理解。把推理轨迹和任务动作交错起来,模型就能一边更新计划,一边从外部环境拿到新信息。
在问答任务里,ReAct 可以让模型调用类似 Wikipedia API 的外部知识源,减少纯链式思维里常见的幻觉和错误传播。在网页购物、文本游戏等交互任务里,ReAct 也能让模型根据环境反馈调整下一步动作。
ReAct 循环怎么运转
ReAct 循环通常包含三个步骤:思考、行动、观察。它不是一次性生成答案,而是多轮迭代,直到信息足够或任务完成。

| 环节 | 作用 | 常见输出 | 例子 |
|---|---|---|---|
| 思考 | 判断已知信息、缺失信息和下一步策略 | 计划、判断、工具选择理由 | “这是实时天气问题,需要查询天气工具。” |
| 行动 | 向外部环境发出可执行指令 | 工具名、参数、API 请求、代码命令 | 调用 get_weather(city="纽约")。 |
| 观察 | 接收外部环境返回的结果 | 搜索摘要、JSON、错误提示、计算结果 | “纽约当前小雨,18°C,风力较大。” |
完整流程可以写成:
- 用户提出任务。
- 模型判断任务是否需要外部信息或工具。
- 模型选择一个行动,例如搜索、查询数据库、调用 API 或运行代码。
- 外部工具返回观察结果。
- 模型根据观察结果继续判断。
- 如果信息不足,继续下一轮循环。
- 如果信息充分,输出最终答案。
这个闭环的关键是“观察结果会改变下一轮思考”。模型不再在真空里自说自话,而是根据真实反馈不断校正路线。
ReAct 为什么能降低 AI 胡说八道
ReAct 能降低幻觉概率,因为它把“直接回答”改成了“先拿证据,再回答”。模型在下结论前,要先通过行动环节获取外部观察结果。

纯语言模型有两个常见弱点:
- 知识截止:模型的参数知识停留在训练数据覆盖的时间点,不能天然知道实时天气、股价、新闻、库存或个人账户数据。
- 幻觉:当缺少依据时,模型可能生成看似流畅但事实错误的内容。
ReAct 对这两个问题的处理方式不同:
| 问题 | 纯语言回答 | ReAct 循环 |
|---|---|---|
| 实时信息 | 可能凭旧知识猜测 | 主动调用搜索、API 或数据库 |
| 事实依据 | 答案可能没有来源 | 先拿工具结果,再组织回答 |
| 错误反馈 | 一次回答后很难修正 | 观察到错误后进入下一轮调整 |
| 用户信任 | 只能看最终文本 | 可以展示行动和引用来源的摘要 |
需要注意的是,ReAct 不能保证完全没有幻觉。它只是把模型从“凭记忆回答”推向“基于证据回答”,最终可靠性仍取决于工具质量、来源质量、提示设计和系统校验。
ReAct 问答案例:昨天苹果公司股价收盘价是多少
“昨天苹果公司的股价收盘价是多少?”是一个典型 ReAct 任务,因为它要求获取实时或近期财经数据,不能只依赖模型训练时的记忆。

这个任务可以拆成 6 步:
| 步骤 | ReAct 环节 | 智能体做什么 |
|---|---|---|
| 1 | 用户提问 | 用户询问“昨天苹果公司的股价收盘价是多少?” |
| 2 | 思考 | 模型识别这是实时财经数据,不能凭记忆回答。 |
| 3 | 行动 | 模型调用搜索工具或财经 API,查询 AAPL 昨日收盘价。 |
| 4 | 观察 | 工具返回多个来源的收盘价、交易日期和市场信息。 |
| 5 | 再思考 | 模型比较来源、检查日期、判断是否存在盘后价格或货币单位差异。 |
| 6 | 最终回答 | 模型给出数值、日期、来源,并说明可能的口径差异。 |
如果两个来源分别返回 178.72 美元和 178.85 美元,智能体不应该直接挑一个数字就结束。更稳妥的做法是检查两个来源的日期、交易所、是否为复权价格、是否混入盘后价,然后在答案里说明采用哪个口径。
这个例子说明,ReAct 的价值不只是“会上网搜索”,而是能把搜索结果纳入下一轮判断。
ReAct 如何和多步工具配合
ReAct 的强项是多工具、多步骤任务。它可以在同一个任务里先查询数据,再筛选范围,再处理异常,最后汇总答案。

假设用户问:“我的 GitHub 最近一周提交了几次代码?”
一个智能体可能这样运转:
- 思考:这是个人数据查询,需要访问 GitHub 数据,不能凭空回答。
- 行动:调用 GitHub API 查询用户提交记录。
- 观察:API 返回一个提交列表,里面包含提交时间、仓库和提交信息。
- 再思考:用户问的是最近一周,需要按当前日期过滤提交时间。
- 再行动:对返回的 JSON 做时间筛选和计数。
- 再观察:结果显示最近七天内有 3 次提交。
- 最终回答:最近一周提交了 3 次代码,并可附上仓库或日期摘要。
如果工具返回“权限不足”,ReAct 循环不会立刻失败。模型可以根据错误信息调整策略,例如尝试公开贡献页面、提示用户授权 GitHub token,或说明当前只能统计公开提交。
这类动态调整路径的能力,是智能体和固定工作流的重要区别。
ReAct 和普通工作流有什么区别
ReAct 和普通工作流都能完成多步骤任务,但它们处理不确定性的方式不同。普通工作流更适合固定流程,ReAct 更适合信息不完整、路径需要根据反馈改变的任务。
| 维度 | 固定工作流 | ReAct 循环 |
|---|---|---|
| 执行路径 | 预先写死 | 根据观察结果动态选择 |
| 适合任务 | 审批、同步、定时任务、格式转换 | 调研、排错、问答、网页操作、多工具决策 |
| 错误处理 | 依赖预设分支 | 可以根据错误提示重新规划 |
| 工具选择 | 开发者提前指定 | 模型根据上下文选择 |
| 可控性 | 更稳定、更容易测试 | 更灵活,但更需要边界和审计 |
工程上常见的做法不是二选一,而是组合使用:固定工作流负责稳定的业务步骤,ReAct 循环负责开放式判断、检索、排错和多工具协调。
ReAct 有哪些局限和风险
ReAct 不是万能框架。它提高了智能体解决复杂任务的能力,但也带来成本、延迟、路径偏差和工具依赖问题。

常见限制包括:
- 成本增加:每一轮思考、工具调用和观察都会消耗 token,多轮任务的请求成本更高。
- 延迟增加:搜索、浏览器、数据库、代码执行等工具通常比一次文本生成更慢。
- 路径跑偏:如果模型第一轮判断错误,后续行动可能沿着错误方向继续扩大偏差。
- 工具质量依赖:工具返回结果混乱、过期、缺少结构化字段时,模型很难提取可靠信息。
- 权限风险:能读写真实系统的工具必须加入鉴权、审批、沙箱和审计。
- 推理暴露风险:产品中通常应展示计划、行动和证据摘要,而不是泄露完整隐藏推理或敏感上下文。
改进 ReAct 的常见方式包括:加入自我验证、限制最大循环次数、把长任务拆成子任务、要求引用来源、对高风险工具加人工确认,以及让工具返回结构化 JSON。
ReAct 在智能体应用里有什么价值
ReAct 是理解现代智能体应用的一把钥匙。AutoGPT、LangChain Agent、浏览器智能体、代码智能体和企业知识库助手,通常都包含类似的“思考、行动、观察”机制。

它的价值不在于发明了一个神奇算法,而在于把人类解决陌生问题的路径工程化了:
- 先判断现在知道什么。
- 再决定下一步该查什么或做什么。
- 动手执行一个可观察的动作。
- 看结果是否支持当前判断。
- 根据结果调整下一步。
- 循环直到任务完成。
当你看到一个 AI 工具能自己搜索资料、调用接口、写代码、读取报错并继续修复时,背后大概率就有一个 ReAct 式循环在运转。
常见问题
ReAct 循环和 Chain of Thought 有什么区别?
Chain of Thought 更强调让模型展开推理过程,ReAct 更强调推理和外部行动交替进行。简单说,Chain of Thought 主要是在“想”,ReAct 是“想完以后还会去做,并根据结果继续想”。
ReAct 循环一定要展示模型的内部思考吗?
不一定。工程产品通常更适合展示可审计的行动摘要、工具调用、观察结果和引用来源,而不是完整隐藏推理。这样既能提高透明度,也能避免暴露敏感信息或不必要的内部过程。
ReAct 能完全解决 AI 幻觉吗?
不能。ReAct 可以降低幻觉概率,因为它鼓励模型先查询证据再回答。但如果工具来源错误、搜索结果低质量、模型误读观察结果,最终答案仍可能出错。
ReAct 适合哪些场景?
ReAct 适合需要多步判断和外部信息的任务,例如实时问答、网页搜索、数据分析、代码排错、API 调用、企业知识库问答、自动化调研和浏览器操作。
ReAct 不适合哪些场景?
如果任务路径固定、规则明确、对延迟极敏感,普通程序或固定工作流通常更合适。例如定时同步数据、格式转换、标准审批流和简单表单校验,不一定需要 ReAct。
开发 ReAct 智能体最容易出错的地方是什么?
最容易出错的是工具描述不清、权限过大、观察结果不结构化、缺少最大循环次数,以及没有对高风险动作设置人工确认。一个可靠的 ReAct 系统必须同时设计工具、权限、日志和失败处理。
总结
ReAct 循环是一种把 Reasoning 和 Acting 结合起来的智能体框架。它让大语言模型通过“思考、行动、观察”的闭环查资料、用工具、读取反馈并逐步纠错。
ReAct 的核心意义是让 AI 不再只根据记忆生成文本,而是能和真实环境交互。它不能消灭所有错误,但能把回答过程从“凭空猜测”改成“基于工具和证据逐步求解”。
理解 ReAct,就能理解很多智能体产品的底层逻辑:先想想该怎么办,动手试一下,看看结果,再根据结果调整下一步。

