ReAct(Reason + Act)是由 Google Research 和普林斯顿大学的研究者在 2022 年提出的设计模式。它是目前构建 AI Agent(智能体) 最主流、最基础的架构之一。

ReAct 的核心思想是:将大模型的**逻辑推理(Reasoning)能力与外部工具执行(Acting)**能力结合在一起。


1. 核心设计逻辑:思维与行动的交响

在 ReAct 出现之前,模型的使用通常分为两派:

  • Chain of Thought (CoT):只思考,不行动。模型在内部推导,但无法获取外部实时信息。
  • Act-only:只行动,不思考。模型直接输出 API 调用指令,但缺乏规划,容易在复杂任务中出错。

ReAct 将两者结合,形成了一个循环(Loop):

  1. Thought (思考):模型分析当前任务,制定下一步计划或反思之前的行动。
  2. Action (行动):根据思考的结果,选择并调用外部工具(如搜索、数据库查询、计算器)。
  3. Observation (观察):接收工具返回的结果(外部反馈)。
  4. 循环:模型根据“观察”到的新信息,进行下一轮“思考”,直到得出最终答案。

2. ReAct 的标准提示词结构

ReAct 模式非常依赖于结构化的提示词(Prompt)。一个典型的 ReAct 推理过程如下:

Question: 现在的气温适合穿短袖吗?

Thought: 我需要知道用户当前所在城市以及该城市的当前气温。首先我要查询用户的位置。

Action: get_current_location()

Observation: 上海

Thought: 我已经知道位置是上海。现在我需要查询上海的当前天气。

Action: get_weather(city=“上海”)

Observation: 28°C,晴天。

Thought: 上海目前气温 28°C。28°C 属于比较温暖/炎热的天气,非常适合穿短袖。

Final Answer: 上海目前气温为 28°C,天气晴朗,非常适合穿短袖。


3. ReAct 的关键优势

  • 减少幻觉 (Grounding):模型不再仅仅依赖内部的预训练权重(可能过时或错误),而是通过“行动”获取外部真实数据,使回答有据可查。
  • 高可解释性:整个推理过程(Thought 步骤)是透明的。开发者可以清楚地看到 Agent 为什么选择这个工具,以及它是如何理解工具返回的结果的。
  • 动态规划:Agent 可以根据外部环境的反馈随时调整策略。如果第一个工具调用失败或返回了意料之外的结果,模型可以通过下一轮 Thought 进行自我修正。

4. 工程实现中的核心组件

在代码实现层面(如使用 LangChain 或手动构建),ReAct 模式通常涉及以下组件:

  1. 大语言模型 (LLM):作为“大脑”,负责生成 Thought 和决定 Action。
  2. 工具集 (Tools):定义好的 API、函数或脚本,附带详细的文本描述(让模型知道什么时候该用它)。
  3. 控制循环 (Executor/Orchestrator):一段逻辑代码,负责解析模型输出的 Action,调用对应的函数,并将结果作为 Observation 拼接回上下文。
  4. 停止准则 (Stop Sequences):防止模型在生成 Observation 之前“胡言乱语”,通常会让模型在输出 Action 后停止生成,等待外部程序的输入。

5. ReAct 的局限性

  • 推理成本高:因为每一轮循环都要将之前的对话历史重新发给模型,随着步骤增加,Token 消耗呈指数级增长。
  • 延迟明显:多次往返调用模型和外部工具,导致最终用户感知的响应速度较慢。
  • 逻辑坍塌:在极长路径的任务中,模型可能会在中间步骤出错,并在错误的路径上越走越远(需要配合前文提到的“反思机制”来缓解)。

总结

ReAct 是 Agent 的“标准动作”。它模拟了人类解决问题的过程:先想一下(Thought),再动手试一下(Action),看看结果(Observation),最后根据结果继续思考。这种模式是实现高度自主、能够处理复杂现实任务的 AI 系统的基础。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐