简介
ReAct是AI智能体的核心架构,通过"思考-行动-观察"循环,让大模型在推理与行动间形成闭环。它结合了思维链推理能力和工具调用能力,解决了AI只会思考不会行动的"认知鸿沟"。ReAct提供可解释性、动态纠错能力和外部生态适配性,是现代Agent框架如LangGraph的基座,让AI从"做题学生"进化为"会查资料、写实验、纠错的实习生"。尽管存在模型能力要求高、成本偏高等局限,但仍是构建复杂Agent的奠基石。
🔁 ReAct:为什么它是 AI 智能体进化的“灵魂”?
“让 AI 思考并不难,难的是:如何让它在动手之后,根据结果‘反省’并修正自己。”
如果你最近在关注Agent(智能体),无论是手搓 LangChain 还是研究最新的Claude Code,你一定会被一个词刷屏:ReAct。
从最早的 AutoGPT 到现在的企业级框架LangGraph,底层逻辑几乎都指向同一个终点:让大模型在“推理(Reason)”与“行动(Act)”之间形成自洽的闭环。
今天,带你拆解这个 Agent 时代的“奠基石”。
一、 Agent 的“认知鸿沟” 🤔
假设你给纯 LLM 下一个指令:
“对比 RTX 4090 和刚刚发布的 RTX 5090,在跑 DeepSeek-R1 时的显存利用率差异。”
如果这个模型没有联网工具,或者它的训练数据还没更新,通常会发生两件事:
- 胡说八道(Hallucination):凭记忆乱编 5090 的参数。
- 拒绝服务:老实交代它不知道最新动态。
👉 这就是 **“只会思考,不会行动”**的致命伤。模型被困在了知识截止日期的“缸”里。
那有没有一种方式,让 AI:
- 发现自己不知道
- 主动去查
- 再根据结果继续推理
这就是 ReAct 的诞生背景。
二、 什么是 ReAct?(Synergizing Reasoning and Acting)
在 ReAct 之前,主流方法基本分成两派:
🧠 只思考(Chain-of-Thought)
- 优点:推理清晰
- 缺点:不能接触真实世界
- 容易产生「看起来很对,其实全错」的幻觉
🤖 只行动(直接 Tool Calling)
- 优点:能调用工具
- 缺点:没有规划、不会反思
- 很容易一步走偏,直接翻车
ReAct 模式最早由普林斯顿大学的Shunyu Yao等人在 2022 年底提出。它的核心逻辑非常暴力且优雅:
💡将“思维链(CoT)”与“工具调用”交替执行。
核心循环的三个齿轮
ReAct 的精髓可以浓缩为一个循环公式:
- Thought(推理/思考): AI 的“内心独白”。它会分析当前任务:“我知道什么?我还缺什么?下一步该去哪查?”
- Action(行动): AI 决定使用的工具。比如
GoogleSearch[RTX 5090 specs]。 - Observation(观察/反馈): **这是最关键的一环。**工具返回的真实结果(如搜索网页的内容)。这些数据会成为 AI 下一轮推理的新证据。
然后,再来一轮:
Observation → 新 Thought → 新 Action直到 AI 认为: 👉“信息够了,可以给最终答案了”
这个过程不是线性的,而是螺旋上升的
三、 实战拆解:AI 帮你选显卡 🖥️
我们用一个场景来复盘 ReAct 是如何工作的:
问题:“我有一张 RTX 3060 12G,想跑本地 DeepSeek-R1 32B 模型,我该怎么配环境?如果显存不够,推荐哪种升级方案?”
这个问题有几个特点:
- ❌ 模型知识可能过时
- ❌ 显卡选择高度依赖实时生态
- ✅ 非常适合「先查资料,再总结」
正是 ReAct 的主场。
接下来我们通过代码来实现 ReAct 智能体。
完整代码已上传github,请移步github查看 agent-code/ReActAgent.py
📢 获取源码
本系列所有章节的可运行代码都会同步上传至 GitHub。
欢迎关注后私信关键字:实战
获取仓库地址。
四、ReAct 的关键:不是 Agent,而是「提示词协议」
ReAct 的本质,不是类,也不是框架, 而是一套强约束的输出协议。
在代码中定义了核心 Prompt 👇
# ReAct 提示词模板REACT_PROMPT_TEMPLATE = """请注意,你是一个有能力调用外部工具的智能助手。可用工具如下:{tools}请严格按照以下格式进行回应:Thought: 你的思考过程,用于分析问题、拆解任务和规划下一步行动。Action: 你决定采取的行动,必须是以下格式之一:- `{{tool_name}}[{{tool_input}}]`:调用一个可用工具。- `finish(answer="...")`:当你认为已经获得最终答案时。- 当你收集到足够的信息,能够回答用户的最终问题时,你必须在Action:字段后使用 finish(answer="...") 来输出最终答案。现在,请开始解决以下问题:Question: {question}History: {history}"""这段 Prompt 做了三件事:
- 告诉模型:你可以用工具
- 告诉模型:你必须结构化输出
- 告诉模型:什么时候才能结束(finish)
📌这是 ReAct 成功率的 80% 来源
六、核心代码拆解:一个最小可用 ReActAgent
下面我们只看真正驱动 ReAct 的关键逻辑。
1️⃣ Agent 主循环:while + max_steps
while current_step < self.max_steps: current_step += 1 print(f"--- 第 {current_step} 步 ---") # 1. 格式化提示词 tools_desc = self.tool_executor.getAvailableTools() history_str = "\n".join(self.history) prompt = REACT_PROMPT_TEMPLATE.format( tools=tools_desc, question=question, history=history_str ) # 2. 调用LLM进行思考 messages = [{"role": "user", "content": prompt}] response_text = self.llm_client.think(messages=messages) ifnot response_text: print("错误:LLM未能返回有效响应。") break # ... (后续的 解析LLM的输出、执行Action、整合步骤) # 循环结束print("已达到最大步数,流程终止。")while current_step < self.max_steps:这是 ReAct 的“安全阀”:
- 防止模型无限思考
- 防止工具反复调用
- 工程上必不可少
2️⃣ 模型不是“回答问题”,而是“决定下一步”
# 调用LLM进行思考response_text = self.llm_client.think(messages=messages)# 解析LLM的输出thought, action = self._parse_output(response_text)注意:模型此时并不是在给最终答案, 而是在输出一个「决策」。
3️⃣ Action 分两种:Finish or Tool
if action.startswith("finish"): # 如果是Finish指令,提取最终答案并结束. return final_answer# 否则执行 actiontool_name, tool_input = self._parse_action(action)tool_function = self.tool_executor.getTool(tool_name)或者:
tool_name, tool_input = self._parse_action(action)observation = tool_function(tool_input)这里是 ReAct 的灵魂:
模型负责“想用什么工具”,代码负责“真的去执行”
4️⃣ Observation 会进入下一轮上下文
self.history.append(f"Action: {action}")self.history.append(f"Observation: {observation}")这一步非常关键,它让模型能够:
- 修正搜索关键词
- 改变判断
- 在下一轮 Thought 中「反思刚才的结果」
七、一次真实运行时,模型是怎么“想”的?
在示例中,Agent 会经历类似这样的过程:
| 步骤 | 环节 | AI 的内部处理逻辑 |
|---|---|---|
| Step 1 | Thought | 用户想跑 32B 模型,但我需要确认 32B 在 4-bit 量化下需要的精确显存大小,以及 3060 的 CUDA 支持。 |
| Step 2 | Action | Search[DeepSeek-R1 32B VRAM requirement 4-bit quantization] |
| Step 3 | Observation | 搜索结果显示:32B 模型 4-bit 量化至少需 18-20GB 显存,12GB 的 3060 无法直接全量加载。 |
| Step 4 | Thought | 确认显存不足。我可以建议用户使用部分卸载(Offloading)或者更换 3090/4090 24G 显卡。我需要查一下当前二手 3090 的性价比。 |
| Step 5 | Action | Search[Refurbished RTX 3090 price vs 4090 performance for LLM] |
| Step 6 | Final Answer | 给出结论:3060 只能跑 7B 或 14B;若坚持 32B,建议升级 3090 24G,这是最经济的 AI 算力方案。 |
八、 为什么 ReAct 是 Agent 的标准答案?
在工程实现中,ReAct 解决了传统链式调用的三大痛点:
1️⃣ 极强的可解释性(Interpretability)
你可以清楚地看到 AI 在每一步是怎么想的。如果它选错了工具,你可以通过 Prompt 修正它的Thought。
2️⃣ 动态纠错能力
传统的流程图(Flow)是死板的。但在 ReAct 中,如果第一步搜索结果是“404”或无用的,AI 会在下一轮Thought中发现:“哎呀,没搜到,我得换个关键词再试一次。”
3️⃣ 天然适配外部生态
无论是数据库查询、运行 Python 代码,还是操作你的浏览器,只要能抽象成Action,都能无缝接入。
九、 局限性 ⚠️
说实话,虽然 ReAct 很强,ReAct 也有明显局限:
❌ 1. 很吃模型能力
- 推理弱 → 思考阶段就乱了
- 指令遵循差 → Action 格式直接崩
❌ 2. 成本偏高
- 一次任务 = 多轮 LLM 调用
- 每一步都是真金白银
❌ 3. Prompt 非常敏感
- Thought / Action 格式稍微一乱
- 整个 Agent 直接中断
👉这也是为什么现在很多框架在 ReAct 之上又加了 Plan、Memory、Reflection。
十、ReAct 适合什么,不适合什么?
✅ 适合
- 实时信息查询
- 工具协同(搜索 / 计算 / API)
- 需要可解释过程的 Agent
❌ 不适合
- 超长全局规划(更适合 Plan-and-Solve)
- 对性能极端敏感的场景
- 工具极多但选择逻辑复杂的系统
十一、 总结 🎯
ReAct 并不是让 AI 更聪明,而是让 AI 更有“手感”。
它让 AI 从一个“只会做选择题的学生”,变成了一个“会自己查资料、写实验、纠正错误的实习生”。这也是为什么在LangGraph等现代框架中,ReAct 依然是所有复杂工作流的基座。
最后唠两句
为什么AI大模型成为越来越多程序员转行就业、升职加薪的首选
很简单,这些岗位缺人且高薪
智联招聘的最新数据给出了最直观的印证:2025年2月,AI领域求职人数同比增幅突破200% ,远超其他行业平均水平;整个人工智能行业的求职增速达到33.4%,位居各行业榜首,其中人工智能工程师岗位的求职热度更是飙升69.6%。
AI产业的快速扩张,也让人才供需矛盾愈发突出。麦肯锡报告明确预测,到2030年中国AI专业人才需求将达600万人,人才缺口可能高达400万人,这一缺口不仅存在于核心技术领域,更蔓延至产业应用的各个环节。
那0基础普通人如何学习大模型 ?
深耕科技一线十二载,亲历技术浪潮变迁。我见证那些率先拥抱AI的同行,如何建立起效率与薪资的代际优势。如今,我将积累的大模型面试真题、独家资料、技术报告与实战路线系统整理,分享于此,为你扫清学习困惑,共赴AI时代新程。
我整理出这套 AI 大模型突围资料包【允许白嫖】:
✅从入门到精通的全套视频教程
✅AI大模型学习路线图(0基础到项目实战仅需90天)
✅大模型书籍与技术文档PDF
✅各大厂大模型面试题目详解
✅640套AI大模型报告合集
✅大模型入门实战训练
这份完整版的大模型 AI 学习和面试资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
①从入门到精通的全套视频教程
包含提示词工程、RAG、Agent等技术点
② AI大模型学习路线图(0基础到项目实战仅需90天)
全过程AI大模型学习路线
③学习电子书籍和技术文档
市面上的大模型书籍确实太多了,这些是我精选出来的
④各大厂大模型面试题目详解
⑤640套AI大模型报告合集
⑥大模型入门实战训练
如果说你是以下人群中的其中一类,都可以来智泊AI学习人工智能,找到高薪工作,一次小小的“投资”换来的是终身受益!
应届毕业生:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
零基础转型:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
业务赋能 突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。
👉获取方式:
有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓