最近在学习 ReAct ,是现在大模型 Agent 方向用的最多的范式,读完之后感觉对”为什么现在的 AI 助手能一步一步解决问题”这件事理解深了不少,记录一下。
ReAct 是什么
ReAct = Reason(推理)+ Act(行动)。
一句话概括:让模型边思考边行动,而不是只想不做或只做不想。
在 ReAct 之前,有两种主流做法,各有各的问题:
| 方法 | 做法 | 问题 |
|---|---|---|
| 思维链(CoT) | 只在脑子里推理 | 封闭系统,一旦记错事实就会一直编下去(幻觉) |
| Act-only | 只执行动作 | 不规划、不思考,遇到意外完全不会调整 |
| ReAct | 推理与行动交替 | 两者结合,互相补充 |
它在解决什么问题
论文作者把旧模型的毛病总结得很形象,我觉得可以叫两种病:
幻觉病:思维链推理是闭门造车。模型的”知识”全靠训练时记住的东西,如果某个事实记错了,它会顺着错误逻辑一直推下去,越推越离谱,还一本正经。
盲目病:纯行动模型不知道自己在做什么。让它搜网页、操作环境,它没有规划能力,遇到意外情况不会换策略,只会卡死。
ReAct 的解法:行动去获取真实信息,推理来分析信息和规划下一步。两者互相制约,就不容易同时犯这两种病。
运行机制:Thought → Action → Observation 循环
ReAct 的核心是一个三步循环:
Thought(思考) ↓Action(行动) ↓Observation(观察外部反馈) ↓Thought(根据反馈更新计划) ↓...直到得出最终答案Thought:模型告诉自己现在的处境和下一步打算,类似内心独白。
Action:执行具体指令,比如 search[苹果公司创始人]、click[购买按钮]。
Observation:外部环境返回结果,比如搜索结果、网页内容、操作是否成功。
有个很好的类比——厨房做饭:
推理:“菜切好了,下一步该烧水。” 行动:打开煤气灶。 观察:没煤气了。 推理:“没气了,改用电磁炉。”
这种循环其实就是人类处理突发情况的自然逻辑,ReAct 把它显式化成了模型的输出格式。
实验结果
论文在四个任务上做了测试:
- HotpotQA(多跳问答):需要综合多条信息才能回答,ReAct 减少了幻觉,因为它会去维基百科核实而不是靠记忆
- FEVER(事实校验):判断陈述是否属实,同样受益于实时查询真实信息
- WebShop(模拟购物):在电商网站上按条件找商品,ReAct 比纯行动方法好很多
- ALFWorld(家庭机器人任务):在模拟环境里完成”去厨房找杯子”这类任务,ReAct 表现最佳
共同的结论:推理让行动更有方向,行动让推理更接地气。
优缺点
优点:
- 灵活:像人一样能处理意外,中途改变计划
- 可解释:Thought 日志清楚记录了模型的推理过程,出了问题能追溯
- 易上手:只需要给几个示例(Few-shot prompting),模型就能学会这种格式,不需要专门微调
- 可纠正:人类可以介入 Thought 日志,手动纠正模型的思路
缺点:
- 容易死循环:模型有时候会反复执行同一个错误动作,卡在某个步骤出不来
- 消耗 Token 多:每一步都要输出 Thought + Action,整个流程很长,比普通对话贵得多
读完的感受
AI Agent “能一步一步解决问题”看起来是某种神奇的能力。本质上就是把人类解决问题的思维流程——看情况、想方案、做动作、看结果、再调整——显式地编码成了模型的输出格式。
ReAct 发表于 2022 年,现在回头看,它其实是很多 Agent 框架(LangChain、AutoGPT 等)的理论基础。理解了 ReAct,再去看这些框架的设计思路就顺多了。
如果用一句话总结:ReAct 让 AI 从”背书机器”变成了能看一眼现实、想一想下一步、再动手操作的智能体。