L3 · 专题文章

ReAct

AgentReAct推理工具调用

本页只讲 3 条最关键判断,不写百科

3核心点
先记住循环终止条件决定成败

不设定最大步数与成功信号,模型易陷入无限循环或提前终止。

LIVE
CORE ReAct 循环
01 WHAT

是什么

ReAct 是一种让大模型交替进行推理(Reasoning)与行动(Acting)的提示范式。

02 WHY

为什么

当任务需要多步推理与外部工具交互时,纯生成易出错,ReAct 通过显式思考链提升准确性与可控性。

03 HOW

怎么做

在 Prompt 中定义 Thought/Action/Observation 循环结构,引导模型逐步推理并调用工具。

04 WHEN

什么时候

适用于需多步推理与工具调用的复杂任务;简单问答或单步操作无需使用。

FOCUS

先记住这些

只留最重要的判断,细节见下方实践
01 循环结构

Thought/Action/Observation 交替

模型必须按固定格式输出,否则循环断裂。

02 终止条件

最大步数与成功信号

无终止条件会导致无限循环或资源耗尽。

03 工具集成

工具 Schema 与错误处理

工具返回格式不匹配或失败未处理会破坏循环。

PROBLEM / POSITION / INTERFACE

先弄清它为什么存在,以及谁在使用

不从历史开始,从真实工作关系开始。
  1. 01 解决的问题

    任务需要多步推理与外部工具交互,且纯生成易出错。

    模型易产生幻觉、步骤混乱或工具调用失败,难以调试。

    成功标准
    模型能按 Thought/Action/Observation 循环逐步推理并正确调用工具,输出可验证。
  2. 02 AI 生态位

    在 Agent 架构中作为核心推理与行动编排层,连接 LLM 与工具。

    上游
    依赖 LLM 的推理能力与可用工具集。
    下游
    为下游任务提供结构化推理过程与工具调用结果。
  3. 03 人的生态位

    人负责定义任务、选择工具、验收结果,并在必要时干预循环。

    适合使用
    任务需多步推理与工具交互,且结果需可验证。
    不必使用
    简单问答、单步操作或工具调用成本过高时。
  4. 04 独特价值

    显式分离推理与行动,提升复杂任务的可控性与可调试性。

    循环终止条件难设定,工具调用失败易导致循环崩溃。

    复杂度判断
    复杂度不是功能数量,而是控制与验证成本。

INTERFACE FLOW

谁在操作,信息怎样流动

  1. WHO OPERATES

    HUMAN定义任务目标、选择工具、验收结果并干预循环

    MODEL执行 Thought/Action/Observation 循环,生成推理与调用指令

    TOOL执行具体操作并返回结果供模型观察

  2. INPUT

    用户任务描述与可用工具定义

  3. CONTROL

    Prompt 模板、Thought/Action/Observation 格式、工具 Schema、最大循环次数

  4. OUTPUT

    结构化推理过程、工具调用指令、最终答案或失败信号

FLOW

ReAct 执行流程

01初始化加载任务描述、工具定义与 Prompt 模板
02推理模型分析当前状态,生成 Thought 与下一步 Action
03执行调用指定工具,获取 Observation 结果
04评估模型根据 Observation 判断是否完成任务或继续循环
CODE / PYTHON最小 Python 调用
import os
from openai import OpenAI

client = OpenAI(api_key=os.environ["API_KEY"])

prompt = """Task: {task}
Tools: {tools}

Format: Thought: ... Action: ... Observation: ...

Start:"""

resp = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": prompt.format(task="查询天气", tools="weather_api")}],
    max_tokens=500,
)
print(resp.choices[0].message.content)

最短闭环:构建 ReAct Prompt → 调用 LLM → 打印输出。真实密钥不要写进代码。

JSON / RESPONSE典型返回(示意)
{
  "id": "chatcmpl-xxx",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Thought: 需要调用天气 API 获取当前温度。\nAction: weather_api(location=\"北京\")\nObservation: 25°C"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 120,
    "completion_tokens": 45,
    "total_tokens": 165
  }
}

FAQ

常见问题

选型、用法与失败,不复述定义。
01ReAct 与纯生成有什么区别?

ReAct 显式分离推理与行动,提升复杂任务可控性;纯生成易出错且难调试。

避免在简单任务中过度使用复杂模式。
02最小可用方式是什么?

定义 Thought/Action/Observation 格式,设置最大循环次数,调用 LLM。

帮助快速验证模式有效性。
03什么时候不需要它?

简单问答、单步操作或工具调用成本过高时。

控制系统成本与复杂度。