四十一:CoT与ReAct¶
来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484545&idx=1&sn=f73db5b8bca6f267300e953e6901c023&chksm=f01eb7f8c7693eee654436633d8efe70bb4ef4af69f306d8d74fd7d576549ea5427665018653#rd
1. 学习范围¶
本日主题是 Agent Planning 的基础方法,重点是 CoT 与 ReAct,同时覆盖 LLM+P 和 Tree of Thoughts。Planning 是 Agent 把目标拆解成行动步骤、选择工具、评估中间状态并逐步完成任务的能力。与单次问答不同,Planning 关注“如何组织推理和行动过程”。 本日覆盖: - Planning 在 Agent 中的作用。
-
Chain-of-Thought, CoT。
-
ReAct:Reasoning + Acting。
-
LLM+P:LLM 与经典规划器结合。
-
Tree of Thoughts, ToT。
-
不同 planning 方法的适用场景、成本、失败模式和面试对比。
2. Planning 的基本定义¶
Planning 是从目标状态出发,生成一系列中间步骤或行动,使系统从当前状态到达目标状态。 在 Agent 中:
Planning 要解决: - 任务拆解。-
步骤排序。
-
工具选择。
-
中间状态跟踪。
-
失败重试。
-
停止条件。
如果没有 planning,Agent 容易随机调用工具、遗漏子任务或过早回答。
3. Planning 与推理¶
Planning 和 reasoning 密切相关,但不完全相同。 - Reasoning:推导答案、解释关系、判断条件。
- Planning:决定做哪些步骤、调用哪些工具、以什么顺序完成目标。
例如数学题中,CoT 更偏推理;订旅行计划中,先查航班、再查酒店、再比较预算,则更偏 planning。 Agent 往往需要二者结合。
4. Chain-of-Thought, CoT¶
CoT 通过显式或隐式分步推理提升复杂问题表现。经典形式是:
或在 few-shot 示例中展示推理步骤。 CoT 适合: - 数学推理。-
逻辑题。
-
多条件判断。
-
代码分析。
-
简单任务规划。
CoT 的价值是让模型不急于输出最终答案,而是先构建中间推理链。
5. CoT 的机制理解¶
CoT 可以被理解为给模型更多中间 token 来表示隐含计算过程。对于复杂任务,直接输出答案容易跳步;分步推理能降低单步难度。 但 CoT 不是严格逻辑证明。模型生成的推理链可能看起来合理但实际错误。因此生产系统中常结合: - answer verification。
-
self-consistency。
-
tool execution。
-
unit tests。
-
citation checking。
6. CoT 的风险¶
CoT 常见风险: - 推理链错误但答案自信。
-
生成冗长,成本高。
-
中间推理泄露不必要信息。
-
对简单任务反而增加噪声。
-
模型可能事后合理化答案。
生产中可以让模型内部思考,但只输出简要理由和可验证证据。
7. ReAct¶
ReAct 把 reasoning 和 acting 结合起来。它让模型在推理过程中调用工具,并根据工具返回继续推理。
典型模式:
Thought: 我需要查找相关信息。
Action: Search["..."]
Observation: ...
Thought: 现在我知道...
Action: ...
Observation: ...
Final: ...
8. ReAct 的关键优势¶
ReAct 的核心优势: - 推理和行动交替。
-
工具结果可以纠正模型先验。
-
适合开放域问答、网页搜索、交互环境。
-
过程可追踪。
-
支持多步检索和验证。
相比纯 CoT,ReAct 不只在模型内部推理,还能从外部环境获取新信息。
9. ReAct 的失败模式¶
ReAct 常见失败: - 选错工具。
-
query 写得差。
-
忽略 observation。
-
编造 observation。
-
工具调用循环。
-
过早 final。
-
把网页或文档中的恶意指令当作系统指令。
生产中应使用结构化工具调用、最大步数、工具权限和 observation grounding。
10. LLM+P¶
LLM+P 指让 LLM 与经典规划器结合。LLM 负责把自然语言任务转成规划问题描述,例如 PDDL;经典 planner 负责搜索可行计划;LLM 再把计划翻译回自然语言或执行步骤。
高层流程:
Natural language task
-> LLM translates to planning domain/problem
-> symbolic planner solves
-> plan returned
-> LLM verbalizes or executes
11. LLM+P 的适用场景¶
LLM+P 适合: - 状态和动作定义清晰。
-
约束明确。
-
需要可验证计划。
-
经典规划器能求解。
-
例如机器人任务、物流、积木世界、日程安排。
不适合: - 状态空间难以形式化。
-
目标模糊。
-
工具和环境不稳定。
-
需要大量常识和开放网页信息。
12. LLM+P 的关键难点¶
难点: - 自然语言到形式化规划问题的转换可能错。
-
PDDL/domain/action schema 设计复杂。
-
现实环境不完全可观测。
-
planner 输出计划可能不符合实际工具约束。
-
执行过程中状态可能变化。
因此 LLM+P 适合强结构任务,但工程成本较高。
13. Tree of Thoughts, ToT¶
ToT 把推理过程从单一路径扩展为搜索树。每个 thought 是一个中间状态或候选步骤,模型可以生成多个候选 thought,并对它们评估、回溯和选择。
简化流程:
state_0
-> thought_1a, thought_1b, thought_1c
-> evaluate
-> expand promising thoughts
-> search until solution
14. ToT 与 CoT 的区别¶
CoT 通常是一条链:
ToT 是一棵树: ToT 更接近搜索算法,能探索多个候选路径,但调用成本更高。15. 搜索策略¶
ToT 可以结合不同搜索策略: - BFS:广度优先,探索多个候选。
-
DFS:深度优先,沿路径深入。
-
Beam Search:每层保留 top-b 候选。
-
Best-first Search:优先扩展评分最高状态。
评估函数可以由 LLM 打分,也可以由规则、工具或环境反馈提供。
16. Planning 方法对比¶
CoT: 单路径分步推理,简单低成本。
ReAct: 推理 + 工具行动,适合外部信息任务。
LLM+P: LLM + 经典规划器,适合强结构可形式化任务。
ToT: 多路径搜索,适合需要探索和回溯的问题。
-
是否需要形式化约束。
-
是否有多个候选路径。
-
成本和延迟预算。
-
是否需要可验证执行。
17. Planning 在 Agent 中的生产化¶
生产中常见做法: - 简单任务使用固定 workflow。
-
中等复杂任务使用 ReAct 或 Plan-Execute。
-
强结构任务使用 planner 或规则引擎。
-
高风险任务加入 verifier。
-
限制最大步骤和工具权限。
-
记录完整 trace。
Planning 不是越复杂越好。复杂 planning 会增加延迟、成本和不可控性。
18. 核心总结¶
Planning 是 Agent 的行动组织能力。CoT 让模型分步推理,ReAct 让模型在推理中调用工具,LLM+P 把自然语言任务转成符号规划,ToT 把单路径推理扩展为多路径搜索。 面试表达重点: - CoT 解决“想清楚再答”。
-
ReAct 解决“边查边想边做”。
-
LLM+P 解决“用形式化 planner 搜索计划”。
-
ToT 解决“多路径探索与回溯”。
19. 参考资料¶
-
ReAct paper: https://arxiv.org/pdf/2210.03629
-
LLM+P paper: https://export.arxiv.org/pdf/2304.11477v2
-
Chain-of-Thought paper: https://arxiv.org/pdf/2201.11903
-
Tree of Thoughts paper: https://arxiv.org/pdf/2305.10601
-
LangChain Agents concepts: https://python.langchain.com/docs/concepts/agents/
预览时标签不可点<div class="