Level 445 分钟

Agent 架构设计

深入理解 AI Agent 的核心架构与设计模式

Agent 架构设计:构建智能 AI 系统

什么是 AI Agent?

AI Agent 是能够:

  • 感知环境
  • 制定计划
  • 执行行动
  • 学习改进

的自主系统。

Agent 核心组件

          ┌─────────────────────────────┐
          │         AI Agent            │
          │  ┌─────────────────────┐    │
 用户 ────▶│  │   LLM(大脑)        │    │
          │  └─────────────────────┘    │
          │           │                 │
          │  ┌────────┼────────┐        │
          │  ▼        ▼        ▼        │
          │ 记忆    规划器    工具      │
          └─────────────────────────────┘

1. LLM(大脑)

核心推理引擎:

  • 理解用户意图
  • 制定行动计划
  • 生成回复

2. 记忆系统 (Memory)

短期记忆:当前对话上下文 长期记忆:历史交互、用户偏好

interface Memory {
  shortTerm: Message[];      // 当前对话
  longTerm: VectorStore;     // 向量数据库
  workingMemory: any;        // 当前任务状态
}

3. 规划器 (Planner)

将复杂任务分解为可执行步骤:

用户目标:"帮我订下周去北京的机票和酒店"
    ↓
规划器分解:
1. 确认出发日期和返回日期
2. 搜索北京机票
3. 筛选合适航班
4. 搜索北京酒店
5. 推荐酒店选项
6. 确认预订

4. 工具集 (Tools)

Agent 可调用的外部能力:

  • 搜索引擎
  • 计算器
  • 代码执行
  • API 调用

常见架构模式

1. ReAct 模式

思考-行动-观察循环:

while not done:
    thought = llm.think(context)
    action = llm.decide_action(thought)
    observation = execute(action)
    context.add(observation)

2. Plan-and-Execute 模式

先规划,后执行:

plan = planner.create_plan(goal)
for step in plan:
    result = executor.run(step)
    if need_replan(result):
        plan = planner.replan(goal, result)

3. LATS 模式 (Language Agent Tree Search)

探索多条路径,选择最优:

          目标
         /    \
      路径A   路径B
       /\       /\
     A1 A2    B1 B2
     ↓
   评估并选择最佳路径

Agent 设计最佳实践

1. 工具描述要精确

❌ "搜索工具"
✅ "search_web: 搜索互联网获取实时信息。
   适用于:查询最新新闻、产品价格、天气。
   不适用于:访问付费内容、需要登录的页面。"

2. 错误处理要健壮

async function executeWithRetry(action, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await execute(action);
    } catch (error) {
      if (i === maxRetries - 1) {
        return fallback(action, error);
      }
      await sleep(exponentialBackoff(i));
    }
  }
}

3. 记忆管理要高效

// 短期记忆:滑动窗口
function trimShortTermMemory(messages, maxTokens) {
  while (countTokens(messages) > maxTokens) {
    messages.shift(); // 移除最旧消息
  }
}

// 长期记忆:相关性检索
function retrieveRelevant(query, k = 5) {
  return vectorStore.similaritySearch(query, k);
}

实战示例:构建研究 Agent

const researchAgent = {
  name: "Research Assistant",
  
  tools: [
    "search_web",      // 搜索网络
    "read_url",        // 读取网页
    "take_notes",      // 记录要点
    "write_report"     // 生成报告
  ],
  
  systemPrompt: `
你是一个研究助手,帮助用户收集和整理信息。

工作流程:
1. 理解研究主题
2. 搜索相关资料
3. 阅读并提取关键信息
4. 整理成结构化报告

始终标注信息来源。
  `,
  
  memory: {
    notes: [],        // 研究笔记
    sources: [],      // 来源列表
    outline: null     // 报告大纲
  }
};

Agent 评估指标

| 指标 | 描述 | 目标 | |-----|------|------| | 任务完成率 | 成功完成任务的比例 | > 90% | | 步骤效率 | 平均完成任务的步骤数 | 越少越好 | | 工具调用准确率 | 正确选择工具的比例 | > 95% | | 错误恢复率 | 从错误中恢复的能力 | > 80% |

练习

设计一个"购物助手"Agent:

功能需求:

  • 搜索商品
  • 比较价格
  • 查看评价
  • 下单购买

思考:

  1. 需要哪些工具?
  2. 系统提示怎么写?
  3. 如何处理用户改变主意?

小结

  • Agent = LLM + 记忆 + 规划 + 工具
  • 选择合适的架构模式
  • 工具描述要精确
  • 错误处理和记忆管理很重要

下一课我们将学习多 Agent 协作。

加载中...