ReAct:让 AI 思考并动手解决问题

介绍

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:自主设定目标、多轮迭代、长期记忆,全自动、易失控、成本高。

实现要点(极简代码思路)

# 伪代码: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应用(如智能助手、自动数据分析、自主任务执行)的核心技术。