ReAct(推理+行动框架)
让LLM交替进行推理(Reasoning)和行动(Acting)的Agent执行框架。核心循环:Thought→Action→Observation→Thought...,直到任务完成。Yao et al. 2022年提出,ICLR 2023发表。
ReAct(推理+行动框架)
一句话理解
不是先想完再做,而是"想一步→做一步→看结果→再想下一步"——推理和行动交替进行的循环。
核心思想
传统的 Chain-of-Thought 让模型"闭卷思考"——纯靠推理得出答案,无法获取外部信息。ReAct 的突破在于让模型在推理过程中可以采取行动(调用工具、查询数据),再根据行动结果继续推理。
循环拆解
text
Thought: 用户想知道杭州明天的天气,我需要调用天气 API
Action: call get_weather({ city: "杭州" })
Observation: 晴,25°C,微风
Thought: 天气适合轻便穿搭,我来推荐
Action: final_answer("杭州明天晴天25°C,建议穿...")
每一轮循环包含三个阶段:
- Thought(推理)— 分析当前状态,决定下一步行动
- Action(行动)— 调用工具或输出最终答案
- Observation(观察)— 获取工具返回的结果
终止条件
工程实现中,ReAct 循环必须有明确的退出机制:
- 正常终止:模型判断任务完成,输出 final answer
- 超时终止:达到最大循环次数(通常 5-10 轮),防止无限循环
- 错误终止:连续 N 次工具调用失败,触发 fallback
本质上就是循环的退出条件加上看门狗超时保护——确保系统不会陷入无限循环。
ReAct vs Chain-of-Thought
| Chain-of-Thought | ReAct | |
|---|---|---|
| 方式 | 纯推理 | 推理 + 行动 |
| 外部信息 | 不能获取 | 可以调用工具 |
| 类比 | 闭卷考试 | 开卷考试 |
| 适用场景 | 数学推理、逻辑题 | 需要外部信息的多步任务 |
引用本术语的文章