ReAct框架:让AI像人类一样思考与行动

你让一个 AI 帮你查下周去上海出差的航班。

如果它只是普通聊天模型,它可能告诉你怎么买票、该比较哪些因素,却不知道真实票价。如果给它接上航班查询工具,它可以调用接口拿到结果。但新的问题马上出现:查哪一天?直飞还是转机?结果太贵怎么办?要不要继续换时间查?

真正困难的地方,从来不只是"会不会调用工具"。

一个能完成任务的 Agent,需要根据当前情况判断下一步做什么,并且在执行之后读取环境反馈,及时调整计划。

这正是 ReAct 值得理解的地方。

Agent 真正需要的,不只是会调用工具

可以先想象一个简单任务:

帮我找到明天下午北京到杭州最合适的航班。

如果按照固定流程设计程序,我们可能会写成:

查询航班 → 按价格排序 → 返回第一名。

但现实任务往往没有这么规整。

查询之后可能发现下午没有合适航班;最便宜的一班需要中转;某个结果虽然价格低,但到达时间已经是凌晨;甚至工具直接返回"没有结果"。

这时候,系统需要重新判断:

"是不是应该把时间范围扩大到中午?"

"用户说的'最合适',更看重价格还是时间?"

"要不要换一个查询条件?"

这类任务有一个共同特点:下一步行动无法在任务开始时完全确定。

Agent 必须边做边判断。

ReAct 正好为这种工作方式提供了一个非常直观的框架:模型先推理当前应该做什么,再执行一个 Action,然后读取执行结果,继续决定下一步。

它不是一条提前写死的流水线,更像一个人在陌生环境里解决问题。

ReAct 的核心,是一个不断闭环的循环

ReAct 可以理解成三个关键环节:

Thought → Action → Observation

为了便于理解,可以把它翻译成:

思考 → 行动 → 观察结果。

假设 Agent 的任务是:

查一下北京今天的天气,如果下雨,帮我推荐几个室内活动。

它可能经历这样的过程。

Thought:

我需要先知道北京今天是否下雨,因此应该查询天气。

Action:

调用天气工具,查询北京今日天气。

Observation:

天气工具返回:下午有雨。

这时任务并没有结束。

Agent 会继续进入下一轮。

Thought:

既然下午有雨,用户需要室内活动。我应该寻找室内场所,而不是推荐公园。

Action:

查询博物馆、美术馆、室内展览等地点。

Observation:

得到一组候选结果。

模型再次思考,可能继续筛选距离、开放时间或者评分。

于是 ReAct 的真正价值出现了:

每一次工具返回的结果,都会改变模型对任务的理解。

这也是 Agent 与传统自动化程序非常重要的区别。

传统程序通常是:

A → B → C → D。

而 ReAct 更像:

A → 看结果 → 决定 B

B → 看结果 → 决定 C

如果 B 不成功,也可能转向 E。

Agent 因此具有了一定程度的动态决策能力。

ReAct 和 Function Calling,并不是同一层东西

很多人第一次接触 Agent 时,很容易把 ReAct 和 Function Calling 混在一起。

因为它们看起来都涉及"模型调用工具"。

但两者解决的问题并不相同。

Function Calling 解决的是:

模型怎么把一个动作可靠地交给外部程序执行。

比如模型判断需要查询天气,于是生成结构化参数:

复制代码
get_weather(
  city="北京",
  date="today"
)

程序收到参数后执行查询,再把结果返回给模型。

它更像一套"工具调用接口"。

ReAct 解决的则是另一个问题:

什么时候应该调用工具?调用哪个工具?拿到结果之后下一步怎么办?

可以把 Function Calling 想象成一个人的"手"。

它负责真正按按钮、搜索数据库、发送请求。

而 ReAct 更像这个人的工作节奏:

先判断情况,伸手做一件事,看结果,再决定接下来做什么。

因此两者完全可以组合。

一个常见 Agent 架构就是:

ReAct 负责决策循环,Function Calling 负责把 Action 转换成可靠的工具调用。

如果只有 Function Calling,而没有持续决策机制,系统当然也能调用工具,但很可能只完成一次调用。

真正复杂的任务通常需要多轮:

查资料 → 发现信息不足 → 再查 → 比较 → 验证 → 执行。

ReAct 关注的就是这条链如何动态向前推进。

ReAct 和 Chain-of-Thought 的区别,在于有没有接触外部世界

ReAct 还有一个经常被混淆的概念:Chain-of-Thought,也就是常说的思维链。

两者都涉及推理,但作用不同。

可以想象这样一个问题:

如果一个商品原价 200 元,打八折后多少钱?

模型完全可以通过内部推理得到答案。

这里不需要查询数据库,也不需要打开网页,更不需要执行外部动作。

这种任务主要发生在模型自己的推理空间里。

但如果问题变成:

帮我找一款目前售价低于 200 元、适合通勤的机械键盘。

模型只靠思考是不够的。

它可以推理"通勤应该考虑重量、尺寸和连接方式",却无法仅靠推理知道现在有哪些商品、价格是多少、是否仍在销售。

这时必须让推理和外部世界发生互动。

ReAct 相比单纯的 Chain-of-Thought,多了两个关键环节:

Action 和 Observation。

模型不仅要想,还要做。

做完之后,还要允许现实反馈推翻自己之前的判断。

可以用一个很简单的类比理解:

Chain-of-Thought 像坐在房间里规划旅行。

ReAct 则像真正走出去旅行。

你规划路线,走到车站,发现地铁停运,于是重新规划路线。现实不断给你反馈,你的计划也不断改变。

这正是 Agent 最需要的能力。

Observation 决定了 Agent 是"执行脚本",还是"解决问题"

ReAct 中最容易被低估的部分,其实不是 Thought,也不是 Action,而是 Observation。

因为 Agent 是否真的具有适应能力,很大程度取决于它能不能正确理解工具返回的结果。

假设 Agent 正在帮用户订餐厅。

它先调用工具查询周五晚上 7 点的位置。

Observation 返回:

19:00 无空位,18:30 和 20:00 可预订。

一个机械式系统可能直接结束:

"7 点没有位置。"

但一个 ReAct Agent 应该把这个结果当成新的信息。

它接下来可能判断:

用户想吃这家餐厅,时间可能存在一定弹性,可以询问用户是否接受 18:30 或 20:00。

于是 Observation 改变了下一步 Action。

再比如写代码 Agent。

它修改代码之后运行测试。

Observation:

18 个测试通过,2 个测试失败。

此时 Agent 不应该继续假设修改已经完成,而应该读取错误信息、定位失败原因,再决定修改哪部分代码。

所以,一个很重要的判断标准是:

如果外部结果发生变化,Agent 的下一步行动会不会跟着变化?

如果答案是否定的,那么所谓 Agent 很可能只是披着 AI 外衣的固定工作流。

真正的 Agent,需要让环境反馈进入决策过程。

设计 Agent 时,真正该关注什么

如果你正在设计自己的 Agent,可以少问一个问题:

"模型能不能调用这个工具?"

多问几个更关键的问题:

工具返回结果之后,模型能不能理解成功和失败?

如果结果不符合预期,它有没有第二种行动方案?

什么情况下应该继续循环,什么情况下应该停止?

Observation 里是否包含足够的信息,让模型判断下一步?

很多 Agent 项目真正的瓶颈,并不是模型不够聪明,而是整个循环没有设计好。

工具返回一句模糊的"执行失败",模型很难知道下一步应该怎么调整;如果返回清晰的错误原因、候选方案和状态信息,Agent 才有机会做出合理决策。

所以,好的 Agent 不只是给大模型装上一堆工具。

更重要的是,让"思考、行动、反馈、再判断"形成稳定闭环。

ReAct 提供的正是这样一种思路。

下一次你看到一个号称 Agent 的系统,不妨观察一件事:当第一次行动失败时,它会做什么?

如果它只能报错退出,它更接近一个带 AI 接口的自动化程序。

如果它能够读取失败原因、重新判断局面、选择新的动作并继续推进任务,你才真正看到了 Agent 的味道。

理解 ReAct,也就抓住了 Agent 设计里一个非常重要的原则:智能并不只来自一次正确的思考,更来自行动之后,愿意根据现实继续修正下一步。

相关推荐
m4Rk_1 小时前
【论文阅读】Agent 记忆机制(43):Mem²Evolve——让经验与能力在双记忆中共同进化
论文阅读·人工智能·学习·开源·github
Eric.461 小时前
AI 漫剧量产实战:StableDiffusion 帧稳画算法 + ComfyUI 自动质检流水线搭建(附完整代码 + 配置)
人工智能·深度学习·stable diffusion·comfyui·ai漫剧
代码方舟1 小时前
企业级对公银行 KYC 架构:基于天远人脸身份证比对A构建自动化客户尽调网关
运维·人工智能·架构·自动化
xingyun861 小时前
DeepSeek涨价,你换了吗?——AI大模型服务成本与替代方案深度分析
人工智能
程序员cxuan1 小时前
DeepSeek Harness 必装的插件公布了!
人工智能·后端·程序员
Claire_881 小时前
自然语言处理在法律文书生成中的应用:以离婚协议为例的多工具功能对比
人工智能·自然语言处理
樊小肆1 小时前
DeepSeeker-Code源码导读05-计划模式与子Agent
人工智能·agent
办公室马主任1 小时前
乐图数字化打通哪几个环节?从车间数据到经营决策的数据链路设计
大数据·人工智能·系统架构·制造
delishcomcn1 小时前
数字孪生+AI预测:热烫膜分切机迈向“黑灯工厂”的关键路径
大数据·人工智能