跳转至

四十一: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 中:

Goal -> Plan -> Actions -> Observations -> Updated Plan -> Final
Planning 要解决: - 任务拆解。

  • 步骤排序。

  • 工具选择。

  • 中间状态跟踪。

  • 失败重试。

  • 停止条件。

如果没有 planning,Agent 容易随机调用工具、遗漏子任务或过早回答。

3. Planning 与推理

Planning 和 reasoning 密切相关,但不完全相同。 - Reasoning:推导答案、解释关系、判断条件。

  • Planning:决定做哪些步骤、调用哪些工具、以什么顺序完成目标。

例如数学题中,CoT 更偏推理;订旅行计划中,先查航班、再查酒店、再比较预算,则更偏 planning。 Agent 往往需要二者结合。

4. Chain-of-Thought, CoT

img

CoT 通过显式或隐式分步推理提升复杂问题表现。经典形式是:

Let's think step by step.
或在 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 结合起来。它让模型在推理过程中调用工具,并根据工具返回继续推理。

img

典型模式:

Thought: 我需要查找相关信息。
Action: Search["..."]
Observation: ...
Thought: 现在我知道...
Action: ...
Observation: ...
Final: ...
ReAct 适合需要外部信息、工具调用和多步观察的任务。

8. ReAct 的关键优势

ReAct 的核心优势: - 推理和行动交替。

  • 工具结果可以纠正模型先验。

  • 适合开放域问答、网页搜索、交互环境。

  • 过程可追踪。

  • 支持多步检索和验证。

相比纯 CoT,ReAct 不只在模型内部推理,还能从外部环境获取新信息。

9. ReAct 的失败模式

ReAct 常见失败: - 选错工具。

  • query 写得差。

  • 忽略 observation。

  • 编造 observation。

  • 工具调用循环。

  • 过早 final。

  • 把网页或文档中的恶意指令当作系统指令。

生产中应使用结构化工具调用、最大步数、工具权限和 observation grounding。

10. LLM+P

LLM+P 指让 LLM 与经典规划器结合。LLM 负责把自然语言任务转成规划问题描述,例如 PDDL;经典 planner 负责搜索可行计划;LLM 再把计划翻译回自然语言或执行步骤。

img

高层流程:

Natural language task
-> LLM translates to planning domain/problem
-> symbolic planner solves
-> plan returned
-> LLM verbalizes or executes
这种方法利用了经典规划器的系统性搜索能力。

img

11. LLM+P 的适用场景

LLM+P 适合: - 状态和动作定义清晰。

  • 约束明确。

  • 需要可验证计划。

  • 经典规划器能求解。

  • 例如机器人任务、物流、积木世界、日程安排。

不适合: - 状态空间难以形式化。

  • 目标模糊。

  • 工具和环境不稳定。

  • 需要大量常识和开放网页信息。

12. LLM+P 的关键难点

难点: - 自然语言到形式化规划问题的转换可能错。

  • PDDL/domain/action schema 设计复杂。

  • 现实环境不完全可观测。

  • planner 输出计划可能不符合实际工具约束。

  • 执行过程中状态可能变化。

因此 LLM+P 适合强结构任务,但工程成本较高。

13. Tree of Thoughts, ToT

ToT 把推理过程从单一路径扩展为搜索树。每个 thought 是一个中间状态或候选步骤,模型可以生成多个候选 thought,并对它们评估、回溯和选择。

img

简化流程:

state_0
 -> thought_1a, thought_1b, thought_1c
 -> evaluate
 -> expand promising thoughts
 -> search until solution
ToT 适合需要探索多个方案的问题,例如组合题、规划题、创意生成和复杂推理。

14. ToT 与 CoT 的区别

CoT 通常是一条链:

step1 -> step2 -> step3 -> answer
ToT 是一棵树:

branch A
branch B
branch C
evaluate and backtrack
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="