是什么
L3 · 专题文章
ReAct
本页只讲 3 条最关键判断,不写百科
3核心点
先记住循环终止条件决定成败
不设定最大步数与成功信号,模型易陷入无限循环或提前终止。
LIVE
CORE
ReAct 循环
为什么
当任务需要多步推理与外部工具交互时,纯生成易出错,ReAct 通过显式思考链提升准确性与可控性。
怎么做
在 Prompt 中定义 Thought/Action/Observation 循环结构,引导模型逐步推理并调用工具。
什么时候
适用于需多步推理与工具调用的复杂任务;简单问答或单步操作无需使用。
FOCUS
先记住这些
Thought/Action/Observation 交替
模型必须按固定格式输出,否则循环断裂。
最大步数与成功信号
无终止条件会导致无限循环或资源耗尽。
工具 Schema 与错误处理
工具返回格式不匹配或失败未处理会破坏循环。
PROBLEM / POSITION / INTERFACE
先弄清它为什么存在,以及谁在使用
-
01 解决的问题
任务需要多步推理与外部工具交互,且纯生成易出错。
模型易产生幻觉、步骤混乱或工具调用失败,难以调试。
- 成功标准
- 模型能按 Thought/Action/Observation 循环逐步推理并正确调用工具,输出可验证。
-
02 AI 生态位
在 Agent 架构中作为核心推理与行动编排层,连接 LLM 与工具。
- 上游
- 依赖 LLM 的推理能力与可用工具集。
- 下游
- 为下游任务提供结构化推理过程与工具调用结果。
-
03 人的生态位
人负责定义任务、选择工具、验收结果,并在必要时干预循环。
- 适合使用
- 任务需多步推理与工具交互,且结果需可验证。
- 不必使用
- 简单问答、单步操作或工具调用成本过高时。
-
04 独特价值
显式分离推理与行动,提升复杂任务的可控性与可调试性。
循环终止条件难设定,工具调用失败易导致循环崩溃。
- 复杂度判断
- 复杂度不是功能数量,而是控制与验证成本。
INTERFACE FLOW
谁在操作,信息怎样流动
-
WHO OPERATES
HUMAN定义任务目标、选择工具、验收结果并干预循环
MODEL执行 Thought/Action/Observation 循环,生成推理与调用指令
TOOL执行具体操作并返回结果供模型观察
-
INPUT
用户任务描述与可用工具定义
-
CONTROL
Prompt 模板、Thought/Action/Observation 格式、工具 Schema、最大循环次数
-
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什么时候不需要它?+
简单问答、单步操作或工具调用成本过高时。
控制系统成本与复杂度。