智能体深度解析 / 智能体的规划与推理
CHAPTER 05 · TOPIC 03

智能体的规划与推理

规划和推理是智能体的"大脑"中最关键的部分——它决定了 Agent 如何将一个复杂目标分解为可执行的步骤,并在执行过程中动态调整策略。本章深入讲解 Agent 规划和推理的核心方法,这些方法最终都会落地到单智能体架构之中。

一句话理解

规划和推理是智能体的"大脑"中最关键的部分——它决定了 Agent 如何将一个复杂目标分解为可执行的步骤,并在执行过程中动态调整策略。本章深入讲解 Agent 规划和推理的核心方法,这些方法最终都会落地到单智能体架构之中。

阅读前置

理解提示工程与工具调用

本文关注

ReAct:推理与行动的交替、任务分解(Task Decomposition)、反思与自我修正(Reflection)

所在知识层

行动系统 · 智能体深度解析

文章导航
主教学视觉智能体的规划与推理 · 知识结构

点击图中节点可定位到对应正文。

核心主题关系与流向

引言

规划和推理是智能体的"大脑"中最关键的部分——它决定了 Agent 如何将一个复杂目标分解为可执行的步骤,并在执行过程中动态调整策略。本章深入讲解 Agent 规划和推理的核心方法,这些方法最终都会落地到单智能体架构之中。


1. ReAct:推理与行动的交替

1.1 核心思想

ReAct(Reasoning + Acting)是最经典的 Agent 推理框架,它在提示工程的思维链(CoT)基础上,将"思考"和"行动"交替进行:

TEXT
用户: "帮我查一下 Elon Musk 旗下有哪些公司"

Thought 1: 我需要搜索 Elon Musk 的公司信息
Action 1: search("Elon Musk companies list")
Observation 1: 搜索结果:Tesla, SpaceX, X (Twitter), Neuralink, The Boring Company...

Thought 2: 我找到了主要公司列表,让我获取更详细的信息
Action 2: get_details("Tesla, SpaceX, X, Neuralink, Boring Company")
Observation 2: Tesla-电动车; SpaceX-航天; X-社交媒体; Neuralink-脑机接口; Boring Company-隧道

Thought 3: 我已经有足够的信息来回答了
Final Answer: Elon Musk 旗下主要公司包括:
1. Tesla - 电动汽车和清洁能源
2. SpaceX - 航天和太空探索
3. X(原 Twitter)- 社交媒体平台
4. Neuralink - 脑机接口技术
5. The Boring Company - 隧道和基础设施

1.2 ReAct 的优势

优势说明
可解释性每步的 Thought 让推理过程透明
可调试性出错时可以看到在哪一步出了问题
灵活性根据 Observation 动态调整下一步行动
可追溯完整的推理链便于审计

2. 任务分解(Task Decomposition)

2.1 Plan-and-Execute 模式

先规划完整方案,再逐步执行:

TEXT
用户: "帮我创建一个项目周报"

Step 1 - 规划阶段:
  Plan:
    1. 获取本周的项目进度数据
    2. 获取本周的会议纪要
    3. 收集团队成员的工作汇报
    4. 汇总和分析数据
    5. 生成周报文档
    6. 发送给相关干系人

Step 2 - 执行阶段:
  Execute Step 1: query_project_status(week="current")
  Execute Step 2: get_meeting_notes(week="current")
  Execute Step 3: collect_team_reports(week="current")
  Execute Step 4: analyze_data(status, notes, reports)
  Execute Step 5: generate_report(analysis)
  Execute Step 6: send_email(report, recipients)

2.2 递归任务分解

对于复杂任务,进行多层分解:

语义 SVG 重绘智能体的规划与推理 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

Level 1 分解:1. 需求分析2. 系统设计3. 编码实现4. 测试5. 部署
查看原文结构
Level 1 分解:
├── 1. 需求分析
├── 2. 系统设计
├── 3. 编码实现
├── 4. 测试
└── 5. 部署
语义 SVG 重绘智能体的规划与推理 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

Level 2 分解(以"3. 编码实…3.1 数据库设计3.2 后端 API3.2.1 用户注册 API3.2.2 登录 API3.2.3 权限管理 API
查看原文结构
Level 2 分解(以"3. 编码实现"为例):
├── 3.1 数据库设计
├── 3.2 后端 API
│   ├── 3.2.1 用户注册 API
│   ├── 3.2.2 登录 API
│   └── 3.2.3 权限管理 API
├── 3.3 前端页面
│   ├── 3.3.1 登录页面
│   ├── 3.3.2 用户列表页面
│   └── 3.3.3 权限配置页面
└── 3.4 集成
语义 SVG 重绘智能体的规划与推理 · 结构 3

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

输入与上下文Level 3 分解(以"3.2.1 用户注册 A…系统核心定义数据模型编写路由处理器输入验证工具、结果与反馈密码加密数据库存储
查看原文结构
Level 3 分解(以"3.2.1 用户注册 API"为例):
├── 定义数据模型
├── 编写路由处理器
├── 输入验证
├── 密码加密
├── 数据库存储
└── 编写单元测试

2.3 HuggingGPT 的任务分解

语义 SVG 重绘智能体的规划与推理

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

执行依赖关系:Task 1Task 2Task 3(顺序执行)
查看原文结构
执行依赖关系:
  Task 1 → Task 2 → Task 3(顺序执行)

3. 反思与自我修正(Reflection)

3.1 Reflexion 框架

Agent 执行失败后,反思错误并改进:

语义 SVG 重绘智能体的规划与推理 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

第 1 次尝试:任务: 编写一个函数计算斐波那契数列行动: 生成代码运行测试失败(超时)反思: "递归实现太慢了,大数时会超时…
查看原文结构
第 1 次尝试:
  任务: 编写一个函数计算斐波那契数列
  行动: 生成代码 → 运行测试 → 失败(超时)
  反思: "递归实现太慢了,大数时会超时"
语义 SVG 重绘智能体的规划与推理 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

查看原文结构
第 2 次尝试:
  行动: 改用迭代实现 → 运行测试 → 通过
  反思: "迭代实现正确且高效"
  存储经验: "斐波那契数列应使用迭代而非递归"

3.2 反思的具体流程

PYTHON
def reflexion_loop(task, max_attempts=3):
    memory = []
    
    for attempt in range(max_attempts):
        # 思考 + 行动
        thought = llm.generate(f"""
            任务: {task}
            之前的尝试: {memory}
            请思考如何解决这个任务。
        """)
        
        action = llm.generate(f"基于思考,执行什么操作?")
        observation = execute(action)
        
        # 评估结果
        result = evaluate(observation)
        
        if result.success:
            return result
        
        # 反思
        reflection = llm.generate(f"""
            任务: {task}
            我的行动: {action}
            结果: {observation}
            为什么失败了?下次应该怎么改进?
        """)
        
        memory.append({
            "attempt": attempt + 1,
            "action": action,
            "result": observation,
            "reflection": reflection
        })
    
    return "未能完成任务"

3.3 自我验证(Self-Verification)

语义 SVG 重绘智能体的规划与推理

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

查看原文结构
生成答案: "北京的人口约为 2100 万"
    ↓
自我验证: "这个答案合理吗?让我验证一下..."
    ↓
验证方法: search("北京人口 2024")
    ↓
验证结果: "搜索结果显示北京常住人口约 2188 万"
    ↓
修正答案: "北京常住人口约 2188 万(2024 年数据)"

4. 高级推理策略

4.1 Tree-of-Thought(ToT)

让模型探索多条推理路径,选择最优方案:

语义 SVG 重绘智能体的规划与推理

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

查看原文结构
路径 A: 3 + 5 = 8, 8 + 7 = 15, 15 + 8 = 23 → 不行
路径 B: 3 × 5 = 15, 15 - 7 = 8, 8 + 8 = 16 → 不行  
路径 C: 8 - 5 = 3, 3 × 3 = 9, 9 + 7 = 16 → 不行
路径 D: 5 - 3 = 2, 2 × 8 = 16, 16 + 7 = 23 → 不行
路径 E: 8 / (7 - 5) = 4, 4 × 3 = 12 → 不行
路径 F: (5 - 3) × (7 + 8) = 2 × 15 = 30 → 不行
...

4.2 Least-to-Most 推理

从最简单的子问题开始,逐步解决更复杂的问题:

语义 SVG 重绘智能体的规划与推理

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

分解:1. 最简单的子问题:如果全是鸡,有多…35 × 2 = 70 只脚2. 实际比全鸡多多少只脚?94 - 70 = 24 只脚3. 每只兔比鸡多几只脚?
查看原文结构
分解:
1. 最简单的子问题:如果全是鸡,有多少只脚?
   → 35 × 2 = 70 只脚
2. 实际比全鸡多多少只脚?
   → 94 - 70 = 24 只脚
3. 每只兔比鸡多几只脚?
   → 4 - 2 = 2 只脚
4. 所以有多少只兔?
   → 24 / 2 = 12 只兔
5. 有多少只鸡?
   → 35 - 12 = 23 只鸡

5. 规划的实际实现

5.1 LangGraph 中的状态图

PYTHON
# 用状态图表示 Agent 的规划流程
from langgraph.graph import StateGraph

graph = StateGraph(AgentState)

# 添加节点
graph.add_node("plan", planning_node)        # 规划
graph.add_node("execute", execution_node)    # 执行
graph.add_node("reflect", reflection_node)   # 反思
graph.add_node("replan", replanning_node)    # 重新规划

# 添加边
graph.add_edge("plan", "execute")
graph.add_conditional_edges("execute", should_continue, {
    "success": END,
    "failure": "reflect"
})
graph.add_edge("reflect", "replan")
graph.add_edge("replan", "execute")

5.2 动态重规划

语义 SVG 重绘智能体的规划与推理 · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

初始计划: A → B → C → D
查看原文结构
初始计划: A → B → C → D
语义 SVG 重绘智能体的规划与推理 · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

查看原文结构
执行 A: 成功 ✓
执行 B: 失败 ✗ (发现新信息)
  ↓
反思: B 失败是因为 X,需要改用方法 Y
  ↓
重规划: A → B' → C' → D'  (根据新信息调整计划)
  ↓
执行 B': 成功 ✓
执行 C': 成功 ✓
执行 D': 成功 ✓

6. 本章小结

方法核心思想适用场景
ReAct思考-行动交替通用 Agent 任务
Plan-and-Execute先规划后执行步骤明确的复杂任务
Reflexion失败后反思改进需要试错的任务
ToT探索多条路径搜索和优化问题
Least-to-Most从简到难数学和逻辑推理
动态重规划根据执行结果调整计划不确定性高的任务

相关章节


延伸阅读

  • Yao, S. et al. (2023). "ReAct: Synergizing Reasoning and Acting in Language Models". ICLR
  • Shinn, N. et al. (2023). "Reflexion: Language Agents with Verbal Reinforcement Learning". NeurIPS
  • Yao, S. et al. (2023). "Tree of Thoughts: Deliberate Problem Solving with Large Language Models". NeurIPS
  • Wang, L. et al. (2023). "Plan-and-Solve Prompting". ACL