ReAct 风格循环与核心机制

ReAct 是什么:把「想」和「做」分开

ReAct(Reason + Act)是一种让 LLM「一边思考,一边调工具」的循环模式。核心就是在每一回合里,把 推理(Thought)行动(Action) 分开,并根据 Observation(观察结果) 继续下一步。

先看一个最小回合结构:

  1. Thought:模型在「自言自语」,解释现在该干嘛
  2. Action:模型选择要用哪个工具(或不使用),以及传什么参数
  3. Observation:工具执行后返回的结果,供下一轮 Thought 使用

一个具体例子

用户问题:

「帮我查一下北京今天的天气,然后用一句话总结。」

你有一个工具 get_weather(city),返回指定城市当天的天气。

一次典型 ReAct 回合可能是:

textThought: 用户问的是北京今天的天气,需要调用天气查询工具。 Action: call_tool[get_weather] {"city": "北京"} Observation: {"city": "北京", "date": "2026-06-21", "temp": 30, "condition": "晴"} Thought: 已经拿到今天北京的天气信息,可以总结成自然语言。 Action: finish_answer["北京今天是晴天,气温大约 30 度。"]

要点:

  • 第一段 Thought:决定「要干嘛」和「用哪个工具」
  • Action:是一个结构化的「调用指令」,告诉系统去实际执行工具
  • Observation:是「真实世界」的反馈,下一轮 Thought 必须基于它继续推理
  • 最后一次 Action 可以是一个特殊动作,比如 finish_answer,代表「不再用工具了,直接给最终回答」

把 ReAct 想成「LLM 在写自己的解题草稿(Thought),顺手让你去帮它按计算器(Action),再根据结果接着写(Observation)」。

Thought / Action / Observation 的先后顺序

在一个回合中,顺序总是:

  1. Thought:先想清楚要干嘛
  2. Action:再明确告诉系统「执行什么」
  3. Observation:等执行结果回来,再进入下一轮 Thought

用一个简单流程图表示一个 ReAct 回合:

Rendering diagram…
  • 每次 Observation 回来,都会进入新的 Thought
  • Thought 认为可以直接回答时,Action 变成「给最终答案」,循环结束
1 / 6