ReAct:让 AI 思考并动手解决问题 作者:马育民 • 2026-05-25 08:16 • 阅读:10000 # 介绍 ReAct(Reasoning + Acting)是2022年底由普林斯顿与谷歌团队提出的大模型智能体框架,核心是**让LLM交替思考(Thought)与行动(Action),并观察(Observation)外部反馈,形成闭环**,解决纯文本推理“幻觉”和无法交互环境的问题。 - **全称**:Reasoning and Acting(推理与行动协同)。 - **论文**:《ReAct: Synergizing Reasoning and Acting in Language Models》(2022年11月)。 - **定位**:**把思维链(CoT)与工具调用融合**,让大模型既能“想”又能“做”,并根据结果调整策略。 - **动机**:纯LLM推理易幻觉、无法获取实时信息;工具调用缺推理、步骤僵硬;ReAct**交替思考与行动,互相增强**。 --- # 原理 ReAct 是一个**三步闭环**,反复迭代直到得出最终答案: ``` Thought-Action-Observation 循环 ``` ### 1. Thought(思考) - 模型分析当前问题、历史观察,**决定下一步做什么**(推理、规划、反思)。 - 输出自然语言推理文本,如:“我需要查2026年世界杯冠军,调用搜索工具”。 ### 2. Action(行动) - 模型根据思考结果,**生成结构化工具调用指令**(非自然语言)。 - 格式示例:`Search(query="2026世界杯冠军")` 或 `Calculator(25*4)`。 - 行动类型:**搜索、数据库查询、API调用、代码执行、数学计算**等。 ### 3. Observation(观察) - 系统执行 Action,把**工具返回结果格式化后喂给模型**。 - 示例:`Observation: 2026世界杯冠军是法国队`。 - 作用:**补全信息、验证推理、纠正错误**,进入下一轮 Thought。 --- # 工作流程示例(订机票) 用户请求:“订明天15:00北京→上海机票”。 1. **Thought 1**:需查航班 → **Action 1**:`FlightSearch(北京,上海,明天15:00)` → **Observation 1**:3个航班(14:50/15:00/15:10)。 2. **Thought 2**:筛选15:00航班 → **Action 2**:`Filter(时间=15:00)` → **Observation 2**:仅剩CA1502。 3. **Thought 3**:需用户确认 → **Action 3**:`AskUser(确认订CA1502?)` → **Observation 3**:用户确认。 4. **Thought 4**:执行预订 → **Action 4**:`BookFlight(CA1502)` → **Observation 4**:预订成功。 5. **Final Answer**:已为你预订CA1502(明天15:00)。 --- # 核心组件 1. **LLM大脑**:负责 Thought 生成、Action 决策、Observation 整合(如GPT-4、Claude、Llama 3)。 2. **提示词模板**:强制输出格式(Thought/Action/Observation)、可用工具、示例,**约束模型行为**。 3. **工具库**:搜索、数据库、API、代码解释器、计算器等,**连接外部世界**。 4. **执行器**:解析 Action、调用工具、返回 Observation,**隔离模型与环境**。 5. **记忆模块**:存储历史 Thought/Action/Observation,**支持多轮上下文**。 --- # 特性 对比纯CoT/纯工具调用 - **协同增强**:思考指导行动,行动结果优化思考,**互相提升**。 - **可解释性强**:每步都有自然语言 Thought,**决策透明、易调试**。 - **减少幻觉**:**用外部事实验证推理**,显著降低编造概率。 - **动态规划**:非固定步骤,**根据观察实时调整策略**,应对复杂/未知问题。 - **泛化性好**:无需针对任务微调,**通过提示词即可适配新工具/新场景**。 --- # 应用场景 1. **信息检索与问答**:联网搜索、查数据库、实时数据(天气/新闻/股价)。 2. **复杂推理与计算**:数学题、逻辑推理、代码执行、科学计算。 3. **任务自动化**:订机票/酒店、发邮件、数据处理、报表生成。 4. **智能客服/助手**:多轮对话、故障排查、个性化推荐。 5. **数据分析与BI**:查询数据库、可视化、异常检测、报告生成。 6. **多模态交互**:图文理解、语音助手、视频内容分析。 # 不适合场景 1. 极简一次性回答。无需思考、不用调用工具,一句话就能出结果,多轮思考纯属浪费。例:简单翻译、常识短句、固定话术回复。 2. 高实时极速响应。要求毫秒级返回,ReAct多轮思考+工具调用延迟高,达不到速度要求。例:弹幕实时互动、按键快速反馈、高频接口应答。 3. 无外部工具可调用。纯主观创作、情感聊天、脑洞文案,没有查询/计算/执行动作可做。例:写诗歌、谈心安慰、自由闲聊、主观点评。 4. 规则固定、流程死板任务。步骤完全固定,不需要动态思考调整,套模板效率更高。例:固定格式填表、标准化审批、固定话术推送。 5. 上下文极短、多轮受限场景。轮次被严格限制,无法反复思考行动迭代。例:短指令单次交互、小程序单次问答。 6. 成本敏感、低价值小任务。小问题开销远大于收益,没必要启动ReAct循环。例:简单换算、短句纠错、基础格式整理。 7. 隐私/风控禁止外部调用。不能联网、不能执行代码、不能查询数据,行动环节直接失效。例:内网涉密问答、隐私数据处理、强风控会话。 8. 高度发散创意类任务。越约束思考步骤,创作自由度越低,效果变差。例:剧本创作、自由故事、灵感构思。 --- # 优缺点 ### 优点 - **推理更准**:事实校验,幻觉少。 - **过程透明**:每步可追溯,易排查问题。 - **灵活通用**:提示词驱动,适配多场景。 - **能力扩展**:突破模型知识截止日期,获取实时信息。 ### 缺点 - **成本更高**:多轮调用LLM+工具,**耗时/费用增加**。 - **提示词敏感**:模板设计差会导致**格式错误、循环、无效行动**。 - **工具依赖**:工具不可用/返回错误,**直接影响结果**。 - **长上下文压力**:多轮历史累积,**易超上下文窗口**。 --- # 与其他Agent框架对比 - **ReAct**:**Thought+Action交替**,单轮内多次思考行动,**灵活、可解释**。 - **Plan-and-Execute**:**先全量规划,再批量执行**,步骤固定,**简单任务高效、复杂易失败**。 - **Toolformer**:**工具调用融入文本生成**,无显式Thought,**简洁、可解释性差**。 - **AutoGPT**:**自主设定目标、多轮迭代、长期记忆**,**全自动、易失控、成本高**。 --- # 实现要点(极简代码思路) ```python # 伪代码:ReAct 核心循环 def react_agent(user_query, tools, llm): history = [] while True: # 1. 生成 Thought thought_prompt = build_prompt(user_query, history, tools) thought = llm.generate(thought_prompt) history.append(("Thought", thought)) # 2. 生成 Action action = llm.parse_action(thought) history.append(("Action", action)) # 3. 执行 Action,获取 Observation observation = tools.execute(action) history.append(("Observation", observation)) # 4. 判断是否结束 if is_final_answer(observation): return observation ``` --- # 总结 ReAct 是当前**最主流、最实用的大模型智能体框架**,通过**思考-行动-观察闭环**,把LLM从“纯文本生成器”升级为“能感知、能行动、能反思”的智能体。它平衡了**灵活性、可解释性与准确性**,是构建复杂AI应用(如智能助手、自动数据分析、自主任务执行)的核心技术。 原文出处:http://malaoshi.top/show_1GW3NHiTx5ha.html