AI Agent 系统 - 自主规划与工具调用

系列文章: System Prompt 实战指南(6/6)
难度: ⭐⭐⭐⭐⭐
预计阅读时间: 30 分钟


一、真实案例引入

1.1 场景:自动化数据分析 Agent

某数据团队每天需要处理大量数据分析请求:

  • 从数据库提取数据
  • 数据清洗和转换
  • 生成可视化图表
  • 撰写分析报告

现状痛点:

  • 重复性工作多(80% 的分析流程相似)
  • 人工操作易出错
  • 响应时间长(平均 2 小时)
  • 需要懂 SQL、Python、数据可视化

解决方案: 构建一个自动化数据分析 Agent

1.2 用户需求分析

核心需求:

  1. 任务理解:理解用户的分析需求
  2. 自主规划:分解任务为可执行步骤
  3. 工具调用:调用数据库、Python、可视化工具
  4. 错误恢复:遇到错误能自动修正

典型工作流程:

用户: 分析上周销售数据,找出 Top 10 产品

Agent 规划:
1. 查询数据库获取上周销售数据
2. 按产品聚合销售额
3. 排序并取 Top 10
4. 生成柱状图
5. 撰写分析报告

Agent 执行:
→ 调用 SQL 工具
→ 调用 Python 数据处理
→ 调用图表生成工具
→ 生成报告

输出: 完整的分析报告 + 图表

二、问题分析与需求拆解

2.1 核心挑战 1:任务理解与分解

问题: 如何将复杂任务分解为可执行步骤?

示例:

用户需求: "分析用户留存率"

需要分解为:
1. 定义留存率计算方法
2. 确定时间范围
3. 查询用户活跃数据
4. 计算留存率
5. 可视化趋势
6. 生成报告

解决思路:

  • ReAct 模式:推理 → 行动 → 观察
  • Plan-and-Execute:先规划,再执行
  • 分层任务分解

2.2 核心挑战 2:工具选择与编排

问题: 何时使用哪个工具?如何组合多个工具?

可用工具:

  • query_database: 查询数据库
  • run_python: 执行 Python 代码
  • create_chart: 生成图表
  • search_web: 搜索信息

编排模式:

  • 串行:A → B → C
  • 并行:A + B → C
  • 条件:if A then B else C

解决思路:

  • 明确每个工具的能力和限制
  • 提供工具使用示例
  • 定义工具组合模式

2.3 核心挑战 3:多步推理与状态管理

问题: 如何记住中间结果?如何基于结果调整计划?

状态管理:

state = {
    "current_step": 3,
    "completed_steps": [1, 2],
    "intermediate_results": {
        "step_1": "查询结果: 1000 条数据",
        "step_2": "清洗后: 950 条有效数据"
    },
    "next_action": "执行数据聚合"
}

解决思路:

  • 维护执行状态
  • 记录中间结果
  • 动态调整计划

2.4 核心挑战 4:错误处理与恢复

问题: 工具调用失败时如何处理?

常见错误:

  • SQL 语法错误
  • Python 代码异常
  • 数据格式不匹配
  • 工具超时

恢复策略:

  1. 重试:临时性错误(网络超时)
  2. 修正:语法错误(修改 SQL)
  3. 替代:换一个工具或方法
  4. 求助:无法自动恢复,请求人工

三、解决方案演进

V1:简单的工具调用

System Prompt:

SYSTEM_PROMPT_V1 = """
你是一个数据分析助手,可以调用以下工具:

## 可用工具
1. query_database(sql): 执行 SQL 查询
2. run_python(code): 执行 Python 代码
3. create_chart(data, type): 生成图表

## 工作流程
1. 理解用户需求
2. 选择合适的工具
3. 调用工具获取结果
4. 返回分析结果
"""

优点:

  • ✅ 能调用工具
  • ✅ 基本可用

缺点:

  • ❌ 不能多步规划
  • ❌ 错误处理简单
  • ❌ 没有状态管理

V2:ReAct 模式 Agent

改进点:

  1. ReAct 循环:思考 → 行动 → 观察
  2. 多步推理:支持复杂任务
  3. 中间结果记录:保存每步输出

System Prompt 改进:

SYSTEM_PROMPT_V2 = """
你是一个数据分析 Agent,使用 ReAct 模式工作。

## ReAct 循环

每一步按以下格式输出:

**思考 (Thought):** [分析当前情况,决定下一步]
**行动 (Action):** [选择工具和参数]
**观察 (Observation):** [工具返回的结果]

重复上述循环,直到完成任务。

## 可用工具

### query_database
- 功能:执行 SQL 查询
- 参数:sql (string)
- 返回:查询结果(JSON)

### run_python
- 功能:执行 Python 代码
- 参数:code (string)
- 返回:执行结果

### create_chart
- 功能:生成图表
- 参数:data (JSON), chart_type (string)
- 返回:图表 URL

## 示例

用户: 查询上周销售额

**思考:** 需要查询数据库获取上周的销售数据
**行动:** query_database("SELECT SUM(amount) FROM sales WHERE date >= '2024-05-01' AND date < '2024-05-08'")
**观察:** 结果: {"total": 125000}

**思考:** 已获取数据,现在生成报告
**行动:** 完成任务
**结果:** 上周销售额为 125,000 元

## 约束
- 每次只执行一个行动
- 基于观察结果调整计划
- 遇到错误要分析原因并修正
"""

改进效果:

  • ✅ 支持多步推理
  • ✅ 能处理复杂任务
  • ✅ 有思考过程

仍存在的问题:

  • ❌ 错误恢复能力弱
  • ❌ 没有并行执行
  • ❌ 缺少计划优化

V3:生产级 Agent 系统

完整代码见 code/v3_production.py

核心特性:

  1. ✅ Plan-and-Execute:先规划,再执行
  2. ✅ 并行工具调用:提升效率
  3. ✅ 智能错误恢复:自动重试和修正
  4. ✅ 状态持久化:可暂停和恢复
  5. ✅ 执行监控:记录每步耗时和结果

四、关键技术点深度剖析

4.1 任务规划技术

ReAct vs Plan-and-Execute:

维度 ReAct Plan-and-Execute
规划方式 边执行边规划 先规划后执行
灵活性
效率
适用场景 探索性任务 明确目标任务

推荐: 混合模式

  • 先用 Plan-and-Execute 生成初始计划
  • 执行中用 ReAct 动态调整

4.2 工具编排模式

串行执行:

result1 = tool_a()
result2 = tool_b(result1)
result3 = tool_c(result2)

并行执行:

result1, result2 = parallel(tool_a(), tool_b())
result3 = tool_c(result1, result2)

条件执行:

if condition:
    result = tool_a()
else:
    result = tool_b()

4.3 错误分类与恢复

错误类型:

  1. 临时性错误(网络超时)

    • 策略:重试 3 次
    • 延迟:指数退避
  2. 语法错误(SQL 错误)

    • 策略:分析错误信息,修正后重试
    • 示例:修正 SQL 语法
  3. 逻辑错误(结果不符合预期)

    • 策略:重新规划
    • 示例:换一种查询方式
  4. 不可恢复错误(权限不足)

    • 策略:报告错误,请求人工介入

4.4 状态机管理

状态定义:

class AgentState(Enum):
    PLANNING = "planning"      # 规划中
    EXECUTING = "executing"    # 执行中
    WAITING = "waiting"        # 等待工具返回
    ERROR = "error"            # 错误状态
    COMPLETED = "completed"    # 已完成

状态转换:

PLANNING → EXECUTING → WAITING → EXECUTING → COMPLETED
                ↓
              ERROR → PLANNING (重新规划)

五、生产环境注意事项

5.1 安全控制

  • 工具权限限制
  • 敏感操作需人工确认
  • 审计日志

5.2 成本控制

  • 设置最大步数限制
  • Token 消耗监控
  • 工具调用计费

5.3 性能优化

  • 并行执行
  • 结果缓存
  • Prompt Caching

六、性能优化与成本控制

6.1 并行优化

  • 识别可并行的工具调用
  • 减少总执行时间 50-70%

6.2 成本分析

人工 vs Agent:

任务 人工耗时 Agent 耗时 节省
数据分析 2 小时 5 分钟 96%
报告生成 1 小时 3 分钟 95%

ROI: 提升 20-30 倍效率


七、关键要点总结

  1. 规划是关键

    • 先规划后执行
    • 动态调整计划
  2. 工具编排要灵活

    • 串行、并行、条件
    • 根据场景选择
  3. 错误恢复要智能

    • 分类处理
    • 自动修正
  4. 状态管理要完善

    • 记录中间结果
    • 支持暂停恢复
  5. 安全控制不能少

    • 权限限制
    • 人工确认
    • 审计日志

系列总结

恭喜你完成了《System Prompt 实战指南》系列的学习!

我们学习了:

  • 第 0 篇:System Prompt 基础概念
  • 第 1 篇:多轮对话系统(上下文管理)
  • 第 2 篇:内容创作系统(风格控制)
  • 第 3 篇:RAG 系统(知识库问答)
  • 第 4 篇:代码生成助手(智能编程)
  • 第 5 篇:AI Agent 系统(自主规划)

核心收获:

  1. System Prompt 是 AI 应用的灵魂
  2. 不同场景需要不同的设计策略
  3. 从简单到复杂的渐进式优化
  4. 生产环境需要考虑全面
  5. 成本优化有方法

下一步:

  • 实践:运行代码示例
  • 应用:将技术应用到实际项目
  • 优化:根据反馈持续改进
  • 分享:与团队分享经验

本文是《System Prompt 实战指南》系列的第 6 篇(完结篇)
发布日期:2026-05-08

感谢阅读!期待你的反馈和实践成果分享。

posted @ 2026-05-08 15:16  拉耶维奇  阅读(69)  评论(0)    收藏  举报