
Agent的推理模式可以看作一个光谱,一端是纯粹的“思考”,另一端是纯粹的“行动”,中间则是二者的结合。
1. 纯推理模式:只思考,不行动 这类模式主要用于解决复杂的推理问题,如数学、逻辑谜题,不涉及与外部环境交互。
2. 行动驱动模式:以行动为中心,以试错来推理 这类模式将推理隐含在行动与环境的交互反馈中。
ReAct 是 Reasoning + Acting 的缩写,其核心思想极其朴素却强大:让大型语言模型同步生成“推理轨迹”和“具体行动”,两者相互增强,协同解决复杂任务。
一个标准的ReAct循环如下:
ReAct的关键特性:
维度 | CoT | ToT | ReAct |
|---|---|---|---|
核心定义 | 线性、逐步推理 | 树状、多路径探索推理 | 推理与行动交错的协同过程 |
推理过程 | 静态的单一推理链 A→B→C→答案 | 动态多分支探索,可回溯 A→ (B1, B2...) → ... | 动态、循环交互: 思考→行动→观察→思考... |
与外部世界 | 完全隔绝。不获取、不使用任何外部信息。 | 完全隔绝。探索的是内部生成的“思维状态”。 | 强依赖。行动和观察是核心环节,用于获取真实世界知识。 |
问题解决 | 内部的、封闭的推理问题。如:数学应用题、逻辑推理。 | 需要策略探索和全局规划的问题。如:24点游戏、创意写作大纲、需要回溯的谜题。 | 开放式的、需要与外部环境交互的任务。如:信息检索、控制数字设备、对话式购物等。 |
核心机制 | 生成中间推理步骤来分解问题。 | 生成、评估、搜索多个“下一步思考”分支。 | 用行动从环境获取事实,用推理来处理事实并指导下一步行动。 |
区分它们的一个直观比喻:
总结一下,ReAct之所以在Agent构建中占据核心地位,正是因为它解决了纯推理模式最大的局限:无法利用外部工具和真实世界信息来校准知识、执行操作。 而在实际的高级Agent系统中,这些模式常常是组合使用的。例如,在ReAct循环的单个“思考”步骤中,可以调用ToT来求解一个子问题,从而形成“ReAct + ToT”的混合策略,兼顾了外部交互与内部复杂推理。
关于 Agent 的推理模式,目前主流的主要有三类:
重点说一下 ReAct,它的核心理念就是:让模型一边思考,一边行动,同时观察结果再继续思考。
举个例子,如果用 ReAct 模式让 Agent 查‘今天北京的天气并决定是否带伞’,它会这样运作:
这种模式最大的好处是能打破模型的‘知识幻觉’,模型不知道实时信息没关系,它会通过工具去获取,真正做到接地气。
对比 CoT、ToT 和 ReAct,它们三者的区别:
简单总结一句话:CoT 适合逻辑推导,ToT 适合复杂探索,ReAct 适合需要调用工具的真实任务环境。
在实际开发中,我不会只用一种。比如我会让 Agent 先用 CoT 做快速规划,然后在需要查信息的具体步骤上切换成 ReAct 模式调用工具,这其实就是更高级的 Plan-and-Solve 或 LLM Compiler 的思路。
追问:ReAct 有什么缺点?
ReAct 也有坑。因为要多次调用 LLM 和工具,延迟比较高;而且模型在‘思考-行动’之间切换时,容易陷入死循环,比如反复查同一个东西。生产环境里通常要加最大循环次数限制或者用格式约束来保证它收敛。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。