返回AI笔记
AI Day 12

AI Day 12: Agent框架:ReAct / Tool Use / Planning — 让AI不只是聊天,而是"做事"

AI Agent 是以LLM为"大脑",配备记忆(Memory)、工具(Tools)和规划能力(Planning)的自主系统——它不只是回答问题,而是能感知环境、制定计划、调用工具、执行多步任务,并根据结果动态调整策略。

2026-04-13
AIReActToolFunctionPlanningLangChainLangGraphCrewAIAutoGenClaudeMulti-AgentMemory

日期:2026-04-13 阶段:第一阶段 — AI/LLM技术深潜 (Day 1-15) 标签AI Agent ReAct Tool Use Function Calling Planning LangChain LangGraph CrewAI AutoGen Claude Agent SDK Multi-Agent Memory


学习路径树

AI/LLM 深度技术学习 50天计划
├── 第一阶段:模型基础 (Day 1-15)
│   ├── Day 1:  Transformer架构与LLM基础 ✅
│   ├── Day 2:  模型量化与本地部署 ✅
│   ├── Day 3:  训练过程深度:Pre-training / SFT / RLHF / DPO ✅
│   ├── Day 4:  Prompt Engineering与上下文学习(ICL)原理 ✅
│   ├── Day 5:  RAG架构:检索增强生成全链路 ✅
│   ├── Day 6:  向量数据库与Embedding模型 ✅
│   ├── Day 7:  Fine-tuning实战:LoRA / QLoRA / Adapter ✅
│   ├── Day 8:  推理优化:vLLM / TensorRT-LLM / SGLang ✅
│   ├── Day 9:  长上下文技术:RoPE扩展 / Ring Attention ✅
│   ├── Day 10: 多模态模型:Vision-Language架构 ✅
│   ├── Day 11: Reasoning模型:CoT / o1 / R1 / Extended Thinking ✅
│   ├── Day 12: Agent框架:ReAct / Tool Use / Planning ← 你在这里
│   ├── Day 13: MCP协议与Tool生态
│   ├── Day 14: 模型评估:Benchmark / Arena / 安全评估
│   └── Day 15: 阶段复习与架构总结
│
├── 第二阶段:工程实践 (Day 16-30)
│   ├── Day 16-20: LLM应用架构设计(微服务/网关/缓存/监控)
│   ├── Day 21-25: 生产级RAG系统(Chunking/Rerank/评估/迭代)
│   └── Day 26-30: Agent系统工程化(状态管理/错误恢复/成本控制)
│
├── 第三阶段:金融零售AI应用 (Day 31-42)
│   ├── Day 31-35: 金融AI(风控模型/智能投顾/合规/反欺诈)
│   ├── Day 36-40: 零售AI(推荐系统/智能客服/供应链预测/营销)
│   └── Day 41-42: CeFi x DeFi x AI融合架构
│
└── 第四阶段:面试冲刺 (Day 43-50)
    ├── Day 43-46: 系统设计面试(LLM平台/RAG/Agent/推荐)
    ├── Day 47-49: 产品/架构面试模拟
    └── Day 50: 总结与作品集

核心概念

一句话定义

AI Agent 是以LLM为"大脑",配备记忆(Memory)、工具(Tools)和规划能力(Planning)的自主系统——它不只是回答问题,而是能感知环境、制定计划、调用工具、执行多步任务,并根据结果动态调整策略。

金融类比

普通LLM (ChatGPT/Claude聊天模式):
  = 银行客服热线
  → 客户问什么答什么
  → "请问我的余额是多少?" → "抱歉,我无法查询您的账户"
  → "如何转账?" → "您可以通过手机银行..."
  → 只能回答知识性问题,不能实际操作任何东西
  → 纯粹的信息输出,没有行动能力

AI Agent (Agent模式):
  = 专属客户经理 / 私人银行顾问
  → 客户说: "帮我把10万转到理财账户,选一个年化4%以上的产品"
  → 客户经理:
      1. [思考] 先查看客户当前余额和风险等级
      2. [行动] 登录核心系统查询余额 → 确认有10万可用
      3. [思考] 筛选符合条件的理财产品
      4. [行动] 调用产品系统查询 → 找到3个符合条件的
      5. [思考] 根据客户风险偏好排序
      6. [行动] 执行转账 + 购买理财
      7. [观察] 确认交易成功
      8. [回复] "已完成。为您选择了XX产品,年化4.2%,已投入10万"
  → 能思考、能查系统、能操作、能确认结果
  → 一个完整的"任务闭环"

本质区别:
  LLM:   输入文本 → 输出文本     (语言模型)
  Agent: 输入目标 → 完成任务     (行动系统)

  LLM 的能力边界 = 它的知识 + 推理能力
  Agent 的能力边界 = LLM能力 × 可用工具数 × 规划能力

为什么2025-2026 Agent是最热方向

时间线:
  2023.03  AutoGPT引爆Agent概念 → 但实际效果很差(循环/幻觉/失控)
  2023.10  OpenAI Function Calling → 标准化工具调用接口
  2024.04  Devin发布 → AI软件工程师,引发Agent+编码热潮
  2024.11  Anthropic Computer Use → Claude可以操作电脑GUI
  2025.01  OpenAI Operator → Agent直接操作浏览器完成任务
  2025.03  Anthropic Claude Agent SDK → 官方Agent开发框架
  2025.05  Claude Code → Agent范式的代码开发工具,日活工程师百万+
  2025.06  MCP(Model Context Protocol)生态爆发 → Agent工具标准化
  2025-26  "Agentic AI" 成为企业AI部署第一关键词

为什么现在Agent终于可用了?
  1. Reasoning模型 → Agent的"大脑"够强了(Day 11)
  2. 长上下文 → Agent能处理复杂任务的完整信息(Day 9)
  3. Tool Use标准化 → Function Calling / MCP成熟
  4. 错误恢复 → 模型能自我纠错,不再陷入死循环
  5. 成本下降 → GPT-4o/Claude Sonnet让Agent调用变得经济可行

知识点1: Agent基本概念

什么是AI Agent

AI Agent的定义:
  一个能够自主感知环境、做出决策、执行行动以达成目标的AI系统

四大核心组件:

  ┌─────────────────────────────────────────────────┐
  │                  AI Agent                        │
  │                                                  │
  │  ┌──────────┐  ┌──────────┐  ┌──────────┐      │
  │  │   LLM    │  │  Memory  │  │  Tools   │      │
  │  │  (大脑)   │  │  (记忆)   │  │  (工具)   │      │
  │  └────┬─────┘  └────┬─────┘  └────┬─────┘      │
  │       │             │             │              │
  │       └─────────┬───┘─────────────┘              │
  │                 │                                │
  │          ┌──────┴──────┐                         │
  │          │  Planning   │                         │
  │          │  (规划引擎)  │                         │
  │          └─────────────┘                         │
  └─────────────────────────────────────────────────┘

  LLM (大脑):
    → 理解指令、推理、决策、生成文本
    → GPT-4o / Claude Opus 4 / Gemini 2.5 Pro
    → 越强的LLM = 越聪明的Agent

  Memory (记忆):
    → 短期: 当前对话上下文
    → 长期: 历史交互、用户偏好、学到的知识
    → 工作记忆: 当前任务的中间状态(scratchpad)

  Tools (工具):
    → API调用(天气/搜索/数据库)
    → 代码执行(Python/SQL)
    → 浏览器操作 / 文件读写
    → 每个工具 = Agent能做的一件"事"

  Planning (规划):
    → 分解目标为子任务
    → 决定工具调用顺序
    → 根据结果动态调整计划

Agent与普通Chatbot的区别

┌────────────────┬───────────────────┬───────────────────┐
│                │ Chatbot (聊天机器人)│ Agent (智能代理)    │
├────────────────┼───────────────────┼───────────────────┤
│ 交互模式       │ 问→答→问→答        │ 目标→规划→执行→反馈 │
│ 工具使用       │ 无                 │ 调用多种外部工具    │
│ 状态管理       │ 无状态或简单上下文  │ 复杂状态机+记忆     │
│ 自主性         │ 被动响应           │ 主动规划和执行      │
│ 错误处理       │ 给出错误答案       │ 检测错误并重试/换策略│
│ 任务复杂度     │ 单轮简单问答       │ 多步骤复杂任务      │
│ 行动能力       │ 只输出文本         │ 可执行真实操作      │
│ 典型耗时       │ 秒级              │ 分钟到小时级        │
├────────────────┼───────────────────┼───────────────────┤
│ 金融场景示例    │ "什么是基金定投?" │ "帮我定投每月5000到│
│                │ → 解释概念         │  沪深300,对比3个平 │
│                │                   │  台费率后选最优方案" │
└────────────────┴───────────────────┴───────────────────┘

Agent Loop: Observe → Think → Act → Observe

这是所有Agent系统的核心循环:

  ┌──────────────────────────────────────────────┐
  │                                              │
  │    ┌─────────┐                               │
  │    │ Observe │ ← 感知环境/工具返回/用户输入    │
  │    └────┬────┘                               │
  │         │                                    │
  │         ▼                                    │
  │    ┌─────────┐                               │
  │    │  Think  │ ← LLM推理: 分析观察,决定行动   │
  │    └────┬────┘                               │
  │         │                                    │
  │         ▼                                    │
  │    ┌─────────┐      ┌─────────┐              │
  │    │   Act   │ ──→  │ 工具执行 │              │
  │    └────┬────┘      └────┬────┘              │
  │         │                │                   │
  │         ▼                ▼                   │
  │    ┌────────────────────────┐                │
  │    │   Observe (新的观察)    │────────────┐   │
  │    └────────────────────────┘            │   │
  │                                          │   │
  │    任务完成?                              │   │
  │    ├── 否 → 继续循环 ─────────────────────┘   │
  │    └── 是 → 输出最终结果                       │
  │                                              │
  └──────────────────────────────────────────────┘

金融Agent示例:

  用户: "帮我分析茅台最新财报,评估是否值得买入"

  Loop 1:
    Observe: 用户想分析茅台财报
    Think:   需要先获取最新财报数据
    Act:     调用财报API → 获取2025年Q4数据

  Loop 2:
    Observe: 收到财报 → 营收1800亿,净利润800亿
    Think:   需要计算关键指标(PE/ROE/毛利率)并对比历史
    Act:     调用计算工具 → PE=30x, ROE=32%, 毛利率91%

  Loop 3:
    Observe: 指标计算完成,PE略高于历史均值
    Think:   需要对比同行业和查看分析师观点
    Act:     调用搜索工具 → 获取行业对比和分析师报告

  Loop 4:
    Observe: 同行业PE中位数25x,分析师一致看多
    Think:   综合分析 → PE偏高但基本面极强,估值合理
    Act:     生成分析报告返回用户

  → 4轮循环,每轮都是Observe→Think→Act
  → 普通Chatbot只能说"我无法访问实时财报数据"

知识点2: ReAct模式

Reasoning + Acting 交替执行

ReAct (Yao et al., 2022):
  将Reasoning(推理)和Acting(行动)交织在一起
  → 不是先想完再做 → 而是想一步做一步

为什么这很重要?

  纯Reasoning (CoT only):
    "茅台PE=30, 行业均值=25, 所以偏贵"
    → 问题: 如果你的知识是过时的?PE可能已经变了
    → 推理基于可能错误的前提 → 结论不可靠

  纯Acting (工具调用 only):
    调用API获取PE → 调用API获取行业均值 → 计算差值
    → 问题: 没有推理,不知道什么时候该停止调用
    → 可能无限调用工具或调错工具

  ReAct (推理+行动交替):
    Thought: 我需要茅台当前PE,不能依赖过时知识
    Action:  调用财报API获取实时PE
    Observation: PE = 28.5
    Thought: PE=28.5比我预期的低,可能最近有回调,继续查行业
    Action:  调用行业对比API
    Observation: 行业均值PE = 24
    Thought: PE=28.5 vs 行业24,溢价18%,合理范围。完成分析
    → 每步推理指导下一步行动 → 每步行动结果修正推理

ReAct详细流程

                    用户请求
                       │
                       ▼
              ┌────────────────┐
              │  生成Thought   │ ← LLM推理当前状况
              │  (推理步骤)     │
              └───────┬────────┘
                      │
                      ▼
              ┌────────────────┐
         ┌─── │  需要行动吗?   │
         │    └───────┬────────┘
         │            │
         │ 不需要      │ 需要
         │            ▼
         │    ┌────────────────┐
         │    │  生成Action    │ ← 选择工具+参数
         │    │  (行动步骤)     │
         │    └───────┬────────┘
         │            │
         │            ▼
         │    ┌────────────────┐
         │    │  执行工具调用   │ ← 实际API/计算
         │    └───────┬────────┘
         │            │
         │            ▼
         │    ┌────────────────┐
         │    │  Observation   │ ← 工具返回结果
         │    │  (观察结果)     │
         │    └───────┬────────┘
         │            │
         │            ▼
         │    ┌────────────────┐
         │    │  更新上下文     │ ← 将结果加入记忆
         │    └───────┬────────┘
         │            │
         ▼            ▼
  ┌────────────────────────┐
  │  任务完成?              │
  │  ├── 否 → 回到Thought   │──→ (继续循环)
  │  └── 是 → 生成最终答案   │
  └────────────────────────┘

实际Prompt格式

ReAct的Prompt模板(简化版):

System Prompt:
  You are a helpful financial analyst agent.
  You have access to the following tools:
  - search(query): Search the web for information
  - get_stock_data(ticker, metric): Get stock financial data
  - calculate(expression): Evaluate a math expression

  Use the following format:
  Thought: [your reasoning about what to do next]
  Action: [tool_name(parameters)]
  Observation: [tool output - this will be filled by the system]
  ... (repeat Thought/Action/Observation as needed)
  Thought: I now have enough information to answer
  Final Answer: [your complete answer]

User: 比较苹果和微软的PE,哪个更值得买入?

Agent执行过程:

  Thought: 需要获取苹果(AAPL)和微软(MSFT)的PE数据来对比
  Action: get_stock_data("AAPL", "pe_ratio")
  Observation: {"ticker": "AAPL", "pe_ratio": 32.1, "date": "2026-04-13"}

  Thought: 已获取苹果PE=32.1。现在获取微软的PE
  Action: get_stock_data("MSFT", "pe_ratio")
  Observation: {"ticker": "MSFT", "pe_ratio": 35.8, "date": "2026-04-13"}

  Thought: AAPL PE=32.1, MSFT PE=35.8。微软更贵,但PE本身
          不够,需要看盈利增长率(PEG)才能评估是否合理
  Action: get_stock_data("AAPL", "earnings_growth")
  Observation: {"ticker": "AAPL", "earnings_growth_yoy": 0.12}

  Thought: 苹果盈利增长12%,PEG = 32.1/12 = 2.68。查微软
  Action: get_stock_data("MSFT", "earnings_growth")
  Observation: {"ticker": "MSFT", "earnings_growth_yoy": 0.18}

  Thought: 微软盈利增长18%, PEG = 35.8/18 = 1.99。微软PEG更低,
          说明虽然PE更高但增长更快,性价比其实更好。
          我现在有足够信息做出分析了。
  Final Answer: 从估值角度看:
    - 苹果 PE=32.1, 盈利增长12%, PEG=2.68
    - 微软 PE=35.8, 盈利增长18%, PEG=1.99
    微软虽然PE更高,但PEG更低(1.99 vs 2.68),说明...

为什么ReAct比纯CoT更强

对比实验 (Yao et al., 2022):

任务: 多步知识推理 (HotpotQA)
  ┌───────────────┬──────────┐
  │ 方法           │ 准确率    │
  ├───────────────┼──────────┤
  │ Standard IO   │ 29.0%    │
  │ CoT only      │ 34.0%    │
  │ Act only      │ 26.0%    │
  │ ReAct         │ 35.0%    │ ← 最高
  │ ReAct + CoT-SC│ 40.0%    │ ← 结合后更强
  └───────────────┴──────────┘

为什么ReAct优于纯CoT?
  1. 信息获取: CoT只能用已有知识推理 → ReAct能获取新信息
  2. 事实校验: CoT可能基于幻觉推理 → ReAct通过工具验证事实
  3. 计算准确: CoT让LLM心算 → ReAct用计算器精确计算
  4. 可追溯性: ReAct的Thought链 → 可审计决策过程

为什么ReAct优于纯Act?
  1. 目标导向: 推理让Agent知道"为什么"调用工具
  2. 效率: 推理减少不必要的工具调用
  3. 整合: 推理把多个工具结果综合成有意义的结论
  4. 终止: 推理判断何时已收集足够信息 → 避免无限循环

金融PM视角:
  ReAct = 最符合人类工作方式的Agent模式
  → 分析师也是: 看数据(Observe) → 想(Think) → 查更多资料(Act) → 循环
  → 可解释性强 → 监管/合规场景下可审计

知识点3: Tool Use / Function Calling

核心机制

Tool Use 让 LLM 从"纯文本生成器"变成"工具使用者":

传统LLM:
  用户: "今天上海天气怎么样?"
  LLM:  "我没有实时天气数据,无法回答"  ← 老实但没用

Tool Use LLM:
  用户: "今天上海天气怎么样?"
  LLM:  [决定调用天气工具]
        → {"tool": "get_weather", "params": {"city": "Shanghai"}}
  系统: [执行工具调用] → {"temp": 22, "condition": "晴"}
  LLM:  "今天上海天气晴朗,气温22°C,适合外出"  ← 有用

技术实现流程:

  ┌────────┐   1.发送消息    ┌────────┐
  │  用户   │ ──────────→   │  LLM   │
  └────────┘               └───┬────┘
                               │ 2.LLM判断需要调用工具
                               │   返回tool_call JSON
                               ▼
                          ┌────────────┐
                          │ 应用程序    │  3.解析tool_call
                          │ (你的代码)  │    执行实际API调用
                          └──────┬─────┘
                                 │ 4.将工具结果返回给LLM
                                 ▼
                          ┌────────────┐
                          │    LLM     │  5.LLM综合结果生成最终回答
                          └──────┬─────┘
                                 │
                                 ▼
                          ┌────────────┐
                          │  用户看到   │  最终自然语言回答
                          │  完整回答   │
                          └────────────┘

关键: LLM本身不执行工具 → 只生成"调用意图"(JSON)
     → 应用程序负责实际执行 → 结果喂回LLM
     → 这保证了安全性: 你的代码控制什么能执行、什么不能

OpenAI Function Calling

OpenAI的Tool Use实现 (2023年开创,2025年成熟):

工具定义格式:
  tools = [
    {
      "type": "function",
      "function": {
        "name": "get_stock_price",
        "description": "获取指定股票的当前价格和关键指标",
        "parameters": {
          "type": "object",
          "properties": {
            "ticker": {
              "type": "string",
              "description": "股票代码,如AAPL、MSFT"
            },
            "metrics": {
              "type": "array",
              "items": {"type": "string"},
              "description": "需要的指标: price/pe/volume/market_cap"
            }
          },
          "required": ["ticker"]
        }
      }
    }
  ]

LLM返回的tool_call:
  {
    "tool_calls": [{
      "id": "call_abc123",
      "type": "function",
      "function": {
        "name": "get_stock_price",
        "arguments": "{\"ticker\": \"AAPL\", \"metrics\": [\"price\", \"pe\"]}"
      }
    }]
  }

你的代码执行后返回:
  {
    "role": "tool",
    "tool_call_id": "call_abc123",
    "content": "{\"price\": 198.5, \"pe\": 32.1}"
  }

2025年改进:
  - Parallel Function Calling: 一次返回多个tool_call → 并行执行
  - Strict Mode: 返回JSON严格符合schema → 减少解析错误
  - Streaming: 工具调用也支持流式 → 更好的用户体验

Anthropic Tool Use

Anthropic的实现 (Claude 3+ 系列):

工具定义格式:
  tools = [
    {
      "name": "query_database",
      "description": "查询金融数据库,获取交易记录和账户信息",
      "input_schema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "SQL查询语句"
          },
          "database": {
            "type": "string",
            "enum": ["transactions", "accounts", "products"]
          }
        },
        "required": ["query", "database"]
      }
    }
  ]

Claude返回:
  {
    "content": [
      {
        "type": "text",
        "text": "我需要先查询该客户的交易记录..."
      },
      {
        "type": "tool_use",
        "id": "toolu_abc123",
        "name": "query_database",
        "input": {
          "query": "SELECT * FROM txn WHERE user_id='U001' ORDER BY date DESC LIMIT 10",
          "database": "transactions"
        }
      }
    ]
  }

Anthropic的独特设计:
  1. 工具调用可以和文本混合在同一个response中
     → Claude会先解释为什么要调用这个工具
     → 提升可解释性(对金融合规很重要)

  2. Extended Thinking + Tool Use (2025)
     → Claude先在thinking中规划用哪些工具
     → 然后执行工具调用
     → Reasoning Agent的最佳实践

  3. Computer Use (2024.11发布)
     → 特殊工具类型: 操作电脑GUI
     → 截屏 → 识别界面元素 → 模拟点击/输入
     → 可以操作没有API的遗留系统(金融行业尤其多)

并行工具调用

单次请求多个工具 → 大幅提升Agent效率:

串行调用 (慢):
  Thought: 需要查苹果和微软的PE
  Action: get_stock_data("AAPL", "pe")  → 等2秒
  Observation: PE=32.1
  Action: get_stock_data("MSFT", "pe")  → 又等2秒
  Observation: PE=35.8
  → 总计4秒

并行调用 (快):
  Thought: 需要同时查苹果和微软的PE
  Actions: [
    get_stock_data("AAPL", "pe"),
    get_stock_data("MSFT", "pe")
  ]
  → 同时执行 → 2秒得到两个结果
  Observations: AAPL PE=32.1, MSFT PE=35.8

何时适合并行:
  ✓ 多个独立的数据获取(不互相依赖)
  ✓ 批量操作(同类型不同参数)
  ✗ 有依赖关系的调用(B的参数取决于A的结果)

金融场景:
  "对比5家银行的理财产品利率"
  → 并行查5个银行API → 秒级完成
  → 串行查 → 可能要10秒+

2025-2026最佳实践:
  OpenAI GPT-4o: 原生支持parallel tool calls
  Claude Opus 4: 支持多tool_use block并行
  自定义框架: 通常需要自己实现并行执行层

工具选择策略

当Agent有很多工具时,如何选择正确的工具?

问题:
  Agent可能有50+工具
  → 全部放进System Prompt → token太多/模型选择困难
  → 如何高效匹配?

策略1: 全量注入 (工具数 < 20)
  所有工具定义都放在System Prompt中
  → 简单直接
  → 适合工具少且模型强的场景

策略2: 分类分层 (工具数 20-100)
  ┌─────────────────────────────┐
  │ 第一层: 工具类别选择          │
  │  → 金融分析 / 数据查询 / 交易 │
  ├─────────────────────────────┤
  │ 第二层: 具体工具选择          │
  │  → get_pe / get_revenue / ...│
  └─────────────────────────────┘
  → 两步决策,减少每步的选择空间

策略3: 语义检索 (工具数 > 100)
  用户请求 → Embedding → 向量搜索最相关的5个工具
  → 只把最相关的工具注入Prompt
  → 类似RAG,但检索的是工具描述而非文档

策略4: MCP动态注册 (Day 13详解)
  工具不硬编码 → 通过MCP协议动态发现
  → Agent运行时发现"哦,有新的区块链分析工具可用"
  → 最灵活但最复杂

金融系统的工具选择:
  合规要求: 不是所有Agent都能调用所有工具
  → 零售客户Agent: 只能查产品/费率,不能执行交易
  → 投顾Agent: 可以查行情+分析,不能直接下单
  → 交易Agent: 可以下单,但有限额和审批
  → 权限控制 = Agent安全的核心

知识点4: Planning策略

为什么Agent需要规划

简单任务 → ReAct即可 → 一步步想/做
复杂任务 → 需要先规划 → 否则Agent会迷路

对比:
  ReAct (无规划):
    "帮我做一份行业分析报告"
    Thought: 先查行业规模... → 查了 → 然后呢?
    Thought: 再查竞争格局... → 查了 → 还需要什么?
    Thought: 呃,查查政策环境? → ...
    → 缺乏全局视角 → 可能遗漏重要维度 → 产出不完整

  有规划的Agent:
    "帮我做一份行业分析报告"
    Plan:
      1. 行业概览(规模/增长率/关键驱动因素)
      2. 竞争格局(主要玩家/份额/差异化)
      3. 产业链分析(上游/中游/下游)
      4. 政策环境(监管趋势/合规要求)
      5. 未来趋势(技术/市场/风险)
      6. 整合成报告
    → 有全局蓝图 → 每步都知道自己在整体中的位置

Plan-and-Execute

最直觉的规划方式: 先做计划,再逐步执行

  ┌──────────────────────────────────┐
  │  Phase 1: Planning               │
  │  LLM生成完整的执行计划             │
  │  Step 1: ...                     │
  │  Step 2: ...                     │
  │  Step 3: ...                     │
  └──────────────┬───────────────────┘
                 │
                 ▼
  ┌──────────────────────────────────┐
  │  Phase 2: Execution              │
  │  逐步执行计划中的每一步            │
  │  Step 1 → 执行 → 结果            │
  │  Step 2 → 执行 → 结果            │
  │  Step 3 → 执行 → 结果            │
  └──────────────┬───────────────────┘
                 │
                 ▼
  ┌──────────────────────────────────┐
  │  Phase 3: Synthesis              │
  │  整合所有步骤结果,生成最终输出     │
  └──────────────────────────────────┘

优点:
  + 结构清晰,步骤可预测
  + 用户可以在执行前审核计划
  + 适合有固定流程的任务(审计/报告/合规检查)

缺点:
  - 计划是静态的 → 如果步骤2失败,整个计划可能需要重做
  - 不适合需要根据中间结果调整策略的场景

Hierarchical Planning (层次化规划)

复杂任务 → 分解为子任务 → 子任务再分解:

  用户: "帮我设计一个DeFi借贷协议的产品方案"

  高层计划 (Strategic):
    1. 市场分析
    2. 产品设计
    3. 技术方案
    4. 风险评估
    5. Go-to-market

  中层计划 (Tactical):
    2. 产品设计:
       2.1 核心借贷机制设计
       2.2 利率模型选择
       2.3 清算机制设计
       2.4 代币经济模型

  底层执行 (Operational):
    2.2 利率模型选择:
       2.2.1 查询Aave利率模型参数
       2.2.2 查询Compound利率模型参数
       2.2.3 对比两者优劣
       2.2.4 推荐最优方案

  ┌────────────────────────────────────┐
  │         高层规划Agent               │
  │    (分解为5个子任务)                 │
  └──────┬──────┬──────┬──────┬───────┘
         │      │      │      │
         ▼      ▼      ▼      ▼
    ┌──────┐ ┌──────┐ ... ┌──────┐
    │子任务1│ │子任务2│     │子任务5│
    │ Agent│ │ Agent│     │ Agent│  ← 每个可以是独立Agent
    └──────┘ └──────┘     └──────┘

优点:
  + 可并行执行子任务
  + 每个子Agent可以专精一个领域
  + 失败隔离: 一个子任务失败不影响其他

缺点:
  - 架构复杂
  - 子Agent之间需要信息共享机制
  - 成本高(多个LLM调用)

动态重规划 (Adaptive Re-planning)

计划不是一成不变的 → 根据执行结果动态调整:

  初始计划:
    Step 1: 查询用户信用评分 → 预期结果: 分数
    Step 2: 根据分数推荐产品 → 预期结果: 产品列表
    Step 3: 生成推荐报告

  执行到Step 1:
    结果: "该用户无信用记录" → 原计划失效!

  重新规划:
    Step 1: [已完成] → 用户无信用记录
    Step 2: [调整] → 改为查询替代数据(社保/公积金/消费记录)
    Step 3: [新增] → 基于替代数据做风险评估
    Step 4: [调整] → 推荐适合新用户的产品(小额/担保类)
    Step 5: 生成推荐报告

  → 计划根据实际情况动态演进
  → 这才是真实世界中Agent最需要的能力

实现方式:
  每执行完一步 → 检查:
    1. 结果是否符合预期?
    2. 是否需要调整后续步骤?
    3. 是否发现了新的必要步骤?
  → 如果需要 → 重新调用LLM生成修正后的计划

ReAct vs Planning: 何时用哪个

┌─────────────────┬──────────────────┬──────────────────┐
│ 维度            │ ReAct             │ Planning          │
├─────────────────┼──────────────────┼──────────────────┤
│ 任务步骤数      │ 1-5步             │ 5-20+步          │
│ 是否需要全局视角 │ 不需要            │ 需要              │
│ 中间结果可预测   │ 不可预测          │ 大致可预测        │
│ 用户是否需要预览 │ 不需要            │ 需要审批计划      │
│ 容错要求        │ 可以试错          │ 错误代价高        │
│ 典型延迟        │ 快(秒级/轮次少)   │ 慢(先规划再执行)  │
├─────────────────┼──────────────────┼──────────────────┤
│ 适用场景示例     │ "查一下ETH价格"  │ "做一份尽调报告"  │
│                 │ "解释这段代码"    │ "设计空投方案"    │
│                 │ "搜索最新新闻"    │ "迁移遗留系统"    │
└─────────────────┴──────────────────┴──────────────────┘

最佳实践 (2025-2026):
  大多数生产系统会组合使用:
    简单请求 → ReAct模式 → 快速响应
    复杂请求 → 先Plan → 用户确认 → 逐步ReAct执行每个子任务
    执行中出现意外 → 动态Re-plan → 继续执行

  这就是LangGraph/CrewAI等框架的核心设计思路

知识点5: 2025-2026 Agent框架对比

主流框架概览

2025-2026年Agent框架生态:

  ┌─────────────────────────────────────────────────────────┐
  │                   Agent框架生态图                        │
  │                                                         │
  │  平台级 (厂商官方):                                      │
  │    OpenAI Assistants API / Responses API                │
  │    Anthropic Claude Agent SDK                           │
  │    Google Vertex AI Agent Builder                       │
  │                                                         │
  │  通用框架:                                               │
  │    LangChain / LangGraph     (最大生态)                  │
  │    Pydantic AI               (类型安全)                  │
  │    Smolagents (HuggingFace)  (极简主义)                  │
  │                                                         │
  │  多Agent框架:                                            │
  │    CrewAI                    (角色扮演)                  │
  │    AutoGen / AG2 (Microsoft) (多Agent对话)              │
  │    OpenAI Swarm              (轻量多Agent)              │
  │                                                         │
  │  协议标准:                                               │
  │    MCP (Model Context Protocol)   (工具标准化)           │
  │    A2A (Agent-to-Agent Protocol)  (Agent间通信)          │
  └─────────────────────────────────────────────────────────┘

LangChain / LangGraph

LangChain (2022年底发布):
  最早的LLM应用框架 → 生态最大
  核心: Chain(链式调用) + Agent(工具调用) + Memory + 集成

  优点:
    + 生态最丰富: 600+ 集成(向量库/LLM/工具)
    + 文档完善,社区活跃
    + LangSmith: 配套的观测/调试平台

  缺点:
    - 过度抽象 → "简单事情变复杂"
    - 版本迭代激进 → 频繁Breaking Change
    - 调试困难 → 抽象层太多层

LangGraph (2024年发布,LangChain团队):
  用"图"(Graph)来定义Agent工作流
  核心: 节点(Node) + 边(Edge) + 状态(State)

  ┌─────┐    条件边     ┌─────────┐
  │ 开始 │ ──────────→ │ 分析请求  │
  └─────┘              └────┬────┘
                            │
              ┌─────────────┼─────────────┐
              ▼             ▼             ▼
        ┌──────────┐ ┌──────────┐ ┌──────────┐
        │ 查数据    │ │ 搜新闻   │ │ 查行情    │
        └────┬─────┘ └────┬─────┘ └────┬─────┘
             │            │            │
             └─────────┬──┘────────────┘
                       ▼
                 ┌──────────┐
                 │ 综合分析  │
                 └────┬─────┘
                      ▼
                 ┌──────────┐
                 │ 生成报告  │
                 └──────────┘

  优点:
    + 流程可视化
    + 支持条件分支/循环/并行
    + 状态持久化 → 适合长运行任务
    + Human-in-the-Loop: 关键节点人工审批

  定位: 最适合复杂的、有确定工作流的Agent系统

CrewAI

CrewAI (2024年爆发):
  核心理念: 多个Agent角色协作完成任务
  → 模拟团队协作 → 每个Agent扮演不同角色

  金融分析团队示例:

    Crew = 金融分析团队
    ├── Agent 1: 宏观分析师
    │   Role: 分析宏观经济环境
    │   Tools: [economic_data_api, news_search]
    │   Goal: 评估当前经济周期
    │
    ├── Agent 2: 行业分析师
    │   Role: 深度行业研究
    │   Tools: [industry_reports, company_data]
    │   Goal: 行业竞争格局分析
    │
    ├── Agent 3: 量化分析师
    │   Role: 估值和数据建模
    │   Tools: [financial_calculator, backtester]
    │   Goal: 计算合理估值区间
    │
    └── Agent 4: 报告编写员
        Role: 整合分析,生成报告
        Tools: [document_generator]
        Goal: 产出专业投研报告

  优点:
    + 直觉上容易理解(团队协作隐喻)
    + 每个Agent可以用不同的LLM
    + 内置角色分配和任务委派
    + 2025年发布了CrewAI Enterprise (企业版)

  缺点:
    - 角色定义质量决定输出质量
    - 多Agent通信开销大
    - 成本高(N个Agent × M次调用)
    - 调试复杂: 问题出在哪个Agent?

AutoGen / AG2 (Microsoft)

AutoGen (Microsoft Research, 2023):
  核心: Multi-Agent对话系统
  → Agent之间通过"对话"协作(不是预定义工作流)

  2025年重大变化:
    AutoGen → 分裂为两个项目
    ├── AutoGen 0.4+ (Microsoft官方): 重写,更模块化
    └── AG2 (社区Fork): 延续原版设计理念

  核心概念:
    ConversableAgent: 能对话的Agent
    GroupChat: 多个Agent在群聊中协作
    GroupChatManager: 管理谁该发言

  示例: 代码审查场景
    ┌────────────┐  "写一个支付接口"  ┌────────────┐
    │ 用户        │ ────────────────→ │ 编码Agent   │
    └────────────┘                   └──────┬─────┘
                                            │ 写完代码
                                            ▼
                                     ┌────────────┐
                                     │ 审查Agent   │ → 发现bug
                                     └──────┬─────┘
                                            │ 反馈修改意见
                                            ▼
                                     ┌────────────┐
                                     │ 编码Agent   │ → 修复
                                     └──────┬─────┘
                                            │
                                            ▼
                                     ┌────────────┐
                                     │ 测试Agent   │ → 通过
                                     └────────────┘

  优点:
    + 灵活的Agent对话协议
    + 支持人参与对话(Human Agent)
    + 微软背景 → 企业级支持
    + 代码执行能力强(Docker沙箱)

  缺点:
    - 对话式协作 → 有时低效(Agent之间废话太多)
    - 分裂后生态碎片化
    - 学习曲线较陡

Pydantic AI

Pydantic AI (2024年底发布):
  来自Pydantic团队 (FastAPI / Pydantic的创建者)
  核心理念: 类型安全 + 简洁 + 生产就绪

  设计哲学:
    LangChain: "给你所有工具,自己组装"
    Pydantic AI: "像写FastAPI一样写Agent"

  代码风格 (伪代码):
    from pydantic_ai import Agent

    agent = Agent(
        'openai:gpt-4o',
        system_prompt='你是金融分析助手',
        result_type=StockAnalysis,  # 强类型输出
    )

    @agent.tool
    def get_stock_data(ticker: str) -> StockData:
        """获取股票数据"""
        return api.fetch(ticker)

    result = await agent.run("分析苹果股票")
    # result.data 是 StockAnalysis 类型 → IDE自动补全

  优点:
    + 类型安全 → 编译期就能发现错误
    + 极简API → 学习成本低
    + 原生异步 → 适合高并发Web服务
    + 结构化输出 → result_type保证返回格式
    + LangChain/LangGraph可以集成Pydantic AI

  缺点:
    - 生态较小(新框架)
    - 不适合超复杂的多Agent场景
    - 文档还在完善中

  适合: Python后端开发者、需要快速构建生产级单Agent

Smolagents (HuggingFace)

Smolagents (2025年发布):
  HuggingFace的极简Agent框架
  名字来自"Small Agents" → 强调轻量

  核心特色: Code Agent
    传统Agent: 生成JSON描述工具调用 → 应用程序解析执行
    Code Agent: 直接生成Python代码 → 执行代码来调用工具

    传统: {"tool": "search", "query": "ETH price"} → 解析 → 执行
    Code:  result = search("ETH price")            → 直接执行

    为什么Code更好?
    → LLM本来就擅长写代码
    → 代码天然支持变量/循环/条件/函数调用
    → 不需要特殊的JSON schema解析层

  优点:
    + 极简: 核心代码不到1000行
    + Code Agent模式高效
    + 与HuggingFace Hub集成
    + 支持本地开源模型

  缺点:
    - 功能较少(故意为之)
    - Code执行有安全风险(需沙箱)
    - 不适合复杂多Agent场景

  适合: 快速原型、研究实验、与HuggingFace生态集成

OpenAI Assistants API / Responses API

OpenAI的Agent平台 (持续演进):

  Assistants API (2023.11):
    → 托管的Agent运行时
    → 内置: Code Interpreter / File Search / Function Calling
    → 状态管理: Thread(对话) + Run(执行)
    → 自带向量存储 → 不需要自己搭RAG

  Responses API (2025.03 新):
    → 取代Chat Completions API的新一代
    → 原生支持: Web Search / File Search / Computer Use
    → 内置工具更丰富
    → 与Agents SDK配合使用

  优点:
    + 最简单的上手路径 → OpenAI全托管
    + 内置Code Interpreter → 数据分析Agent一行代码
    + 内置File Search → 文档RAG零配置
    + 有GPT Store生态

  缺点:
    - 厂商锁定 → 只能用OpenAI模型
    - 可观测性有限 → 黑箱运行
    - 定制化受限
    - 成本: 存储/运行都按用量收费

Claude Agent SDK

Anthropic Claude Agent SDK (2025.03发布):

  核心设计:
    → 基于Claude模型的Agent开发框架
    → 原生支持Extended Thinking + Tool Use
    → 强调安全性和可控性

  关键特性:
    1. Agentic Loop: 内置Observe→Think→Act循环
    2. MCP集成: 原生支持MCP协议 → 无缝连接工具生态
    3. Guardrails: 内置安全护栏 → Agent不会执行危险操作
    4. Multi-turn: 自动管理对话状态
    5. Streaming: 实时显示Agent思考和行动过程

  与Claude Code的关系:
    Claude Code = 基于Agent SDK构建的编程Agent产品
    → Agent SDK是基础设施
    → Claude Code是上层应用
    → 你可以用Agent SDK构建自己的"Claude Code"

  优点:
    + Anthropic官方支持 → 与Claude深度集成
    + 安全设计优先 → 适合金融/医疗等受监管行业
    + MCP原生 → 工具生态最丰富
    + Extended Thinking → Agent规划能力最强

  缺点:
    - 只支持Claude模型
    - 相对较新 → 社区资源还在建设中

详细对比表

┌──────────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
│              │LangGr. │CrewAI  │AutoGen │Pydant. │Smol.   │OAI API │Claude  │
│              │        │        │/AG2    │AI      │agents  │        │SDK     │
├──────────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
│ 复杂度       │ 高     │ 中     │ 高     │ 低     │ 极低   │ 低     │ 中     │
│ 灵活性       │ 极高   │ 中     │ 高     │ 中     │ 低     │ 低     │ 中     │
│ 多Agent      │ ✓     │ ✓✓   │ ✓✓   │ ✗     │ ✗     │ ✗     │ ✓     │
│ 模型无关     │ ✓     │ ✓     │ ✓     │ ✓     │ ✓     │ ✗     │ ✗     │
│ 类型安全     │ 弱     │ 弱     │ 弱     │ 强     │ 弱     │ 中     │ 中     │
│ 可视化       │ ✓✓   │ ✓     │ ✗     │ ✗     │ ✗     │ ✗     │ ✗     │
│ 企业就绪     │ ✓     │ ✓     │ ✓     │ ✓     │ ✗     │ ✓     │ ✓     │
│ 学习曲线     │ 陡     │ 平     │ 陡     │ 平     │ 极平   │ 平     │ 中     │
│ 生态规模     │ 极大   │ 大     │ 大     │ 小     │ 中     │ 极大   │ 中     │
│ MCP支持      │ ✓     │ ✓     │ ✓     │ ✓     │ ✓     │ ✗     │ ✓✓   │
├──────────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┤
│ 最适合场景    │复杂    │团队    │研究    │生产    │原型    │快速    │安全    │
│              │工作流   │协作    │实验    │API     │实验    │上线    │合规    │
│              │企业级   │创意    │多Agent  │微服务   │教学    │全托管  │金融    │
└──────────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘

选型决策树:
  你的场景是什么?
  │
  ├── 快速原型/学习 → Smolagents 或 Pydantic AI
  │
  ├── 生产级单Agent API → Pydantic AI 或 OpenAI Assistants
  │
  ├── 复杂工作流(有确定流程) → LangGraph
  │
  ├── 多Agent团队协作 → CrewAI 或 AutoGen
  │
  ├── 需要最强推理能力 → Claude Agent SDK + Extended Thinking
  │
  ├── 金融/合规场景(安全优先) → Claude Agent SDK
  │
  └── 全托管、不想管基础设施 → OpenAI Assistants API

知识点6: Agent Memory

三种记忆类型

人类的记忆系统:
  工作记忆 → 当前正在处理的信息 (脑子里装着的)
  短期记忆 → 最近发生的事 (今天做了什么)
  长期记忆 → 持久的知识和经验 (一辈子学到的)

Agent的记忆系统对应:

  ┌─────────────────────────────────────────────────┐
  │                Agent Memory System               │
  │                                                  │
  │  ┌──────────────────────────────────────────┐   │
  │  │ Working Memory (工作记忆 / Scratchpad)    │   │
  │  │ = 当前任务的中间状态                       │   │
  │  │ 例: "我已查了苹果PE=32, 还需查微软"       │   │
  │  │ 实现: Agent内部变量 / State管理            │   │
  │  │ 生命周期: 单次任务执行期间                  │   │
  │  └──────────────────────────────────────────┘   │
  │                                                  │
  │  ┌──────────────────────────────────────────┐   │
  │  │ Short-term Memory (短期记忆)              │   │
  │  │ = 当前对话的上下文窗口                     │   │
  │  │ 例: 用户之前问的问题 + Agent之前的回答      │   │
  │  │ 实现: LLM的Context Window (128K tokens)   │   │
  │  │ 生命周期: 单次对话 / Session               │   │
  │  │ 限制: 上下文窗口大小(token上限)             │   │
  │  └──────────────────────────────────────────┘   │
  │                                                  │
  │  ┌──────────────────────────────────────────┐   │
  │  │ Long-term Memory (长期记忆)               │   │
  │  │ = 跨对话/跨任务持久存储的知识               │   │
  │  │ 例: "这个用户偏好保守型理财, 风险厌恶"      │   │
  │  │ 实现: 向量数据库 / 关系数据库 / 文件系统    │   │
  │  │ 生命周期: 持久(跨Session)                  │   │
  │  └──────────────────────────────────────────┘   │
  └─────────────────────────────────────────────────┘

记忆管理策略

问题: 上下文窗口有限(即使128K tokens也会满)
→ 需要策略管理什么信息保留、什么信息丢弃

策略1: 滑动窗口 (Sliding Window)
  保留最近N轮对话 → 丢弃更早的
  简单但粗暴 → 可能丢失重要的早期信息

策略2: 摘要压缩 (Summarization)
  每当上下文接近限制 → LLM生成摘要 → 替换详细对话
  "前10轮对话摘要: 用户是金融从业者,正在研究DeFi借贷..."
  → 信息密度提高,但可能丢失细节

策略3: 语义检索 (Semantic Retrieval)
  所有历史对话存入向量库
  每次新请求 → 检索最相关的历史片段 → 注入上下文
  → 类似RAG(Day 5),但检索的是历史对话而非文档

策略4: 实体记忆 (Entity Memory)
  提取关键实体和关系 → 结构化存储
  "用户: 张三 → 职业: PM → 投资风格: 保守 → 关注: DeFi"
  → 像CRM系统一样管理用户画像

策略5: 分级记忆 (Tiered Memory) — 2025最佳实践
  ┌────────────┬────────────────────┬──────────┐
  │ 层级       │ 内容               │ 存储     │
  ├────────────┼────────────────────┼──────────┤
  │ L0 即时    │ 当前对话最近5轮     │ Context  │
  │ L1 对话    │ 本次对话摘要        │ Context  │
  │ L2 用户    │ 用户偏好/画像       │ 向量DB   │
  │ L3 知识    │ Agent学到的经验     │ 知识图谱  │
  └────────────┴────────────────────┴──────────┘

金融Agent的记忆特殊需求:
  1. 合规留痕: 所有Agent决策过程必须可追溯 → 不能"忘记"
  2. 隐私保护: 用户个人信息不能存在公共向量库
  3. 时效性: 金融数据有时效 → 过期的记忆必须标记/清除
  4. 一致性: 同一用户的多个Agent会话 → 记忆必须同步

知识点7: Agent设计模式

Single Agent (单Agent)

最简单的模式: 一个Agent搞定一切

  用户请求 → [Agent] → 结果

  适用:
    + 任务类型单一(客服/搜索/分析)
    + 工具数量适中(<20个)
    + 不需要并行处理

  金融示例:
    客服Agent: 回答产品问题 + 查询账户信息 + 简单操作
    → 一个Agent + 10个工具 → 覆盖80%客户需求

Multi-Agent (多Agent并行)

多个Agent同时工作 → 各管一个领域:

  用户: "帮我做投资组合分析"
         │
    ┌────┴────┬────────────┐
    ▼         ▼            ▼
  ┌─────┐  ┌──────┐  ┌──────┐
  │股票  │  │债券   │  │另类   │
  │分析  │  │分析   │  │资产   │
  │Agent │  │Agent  │  │Agent  │
  └──┬──┘  └──┬───┘  └──┬───┘
     │        │         │
     └────┬───┘─────────┘
          ▼
    ┌──────────┐
    │ 整合Agent │ → 综合分析报告
    └──────────┘

  适用: 任务可以分解为独立的子任务
  优点: 并行执行 → 速度快
  挑战: 子Agent结果如何整合?冲突如何解决?

Hierarchical (层级Agent)

上级Agent管理下级Agent:

  ┌──────────────────┐
  │  Manager Agent    │  ← 理解全局目标,分配任务
  │  (经理)           │
  └────────┬─────────┘
           │ 分配任务
    ┌──────┼──────┐
    ▼      ▼      ▼
  ┌────┐ ┌────┐ ┌────┐
  │研究│ │分析│ │写作│    ← 执行具体工作
  │员  │ │师  │ │员  │
  └────┘ └────┘ └────┘

  Manager的职责:
    1. 理解用户最终目标
    2. 分解为子任务
    3. 分配给合适的子Agent
    4. 收集结果并质量检查
    5. 如果不满意 → 要求返工
    6. 整合最终输出

  金融类比: 投行业务部
    MD(Manager Agent): 理解客户需求,分配工作
    VP(中间Agent): 管理执行细节
    Analyst(Worker Agent): 做具体的数据分析和建模

Supervisor-Worker (监督者-工人)

类似Hierarchical但更强调"监督":

  ┌──────────────────────────────┐
  │  Supervisor Agent             │
  │  - 接收任务                    │
  │  - 决定由哪个Worker处理        │
  │  - 审核Worker输出质量          │
  │  - 决定是否需要另一个Worker    │
  │  - 组合最终结果                │
  └──────────┬───────────────────┘
             │
        ┌────┼────┬────┐
        ▼    ▼    ▼    ▼
       W1   W2   W3   W4   (专业Worker)

  与Hierarchical的区别:
    Hierarchical: Manager提前分配所有任务
    Supervisor:   动态决定下一步让谁做 → 更灵活

  LangGraph实现:
    Supervisor是一个特殊节点 → 根据当前状态路由到不同Worker
    每个Worker完成后 → 回到Supervisor → 决定下一步
    → 这是LangGraph最推荐的多Agent模式

错误恢复 / 重试 / Human-in-the-Loop

Agent会失败 → 必须设计错误处理:

错误类型和恢复策略:

  1. 工具调用失败 (API超时/返回错误)
     策略: 自动重试(最多3次) → 换备用工具 → 报告错误
     ┌──────┐  失败   ┌──────┐  失败   ┌──────┐
     │重试1 │ ────→  │重试2 │ ────→  │备用   │
     └──────┘        └──────┘        │工具   │
                                     └──────┘

  2. LLM输出格式错误 (JSON解析失败/幻觉)
     策略: 重新调用LLM → 附加格式纠正提示 → 强制结构化输出
     "你上次返回的格式不正确,请严格按以下JSON schema..."

  3. 逻辑死循环 (Agent反复做同样的事)
     策略: 设置最大循环次数 → 超过则强制终止 → 请求人工介入
     max_iterations = 10  # 超过就停止

  4. 结果不可靠 (Agent不确定/信心低)
     策略: Agent主动请求人工确认
     "我的分析可能不准确,原因是...,是否需要人工审核?"

Human-in-the-Loop (HITL) — 金融场景必备:
  ┌────────┐          ┌────────┐
  │ Agent  │ ──分析──→ │ 人类   │ ← 审核Agent的分析
  │ 自动化  │          │ 审批   │
  └────────┘          └───┬────┘
                          │ 批准/驳回/修改
                          ▼
                    ┌────────────┐
                    │ Agent继续   │ ← 根据人类反馈调整
                    │ 或终止      │
                    └────────────┘

  金融场景中HITL不是可选的——是合规要求:
    → 大额交易 → Agent建议 + 人工审批
    → 投资建议 → Agent分析 + 投顾审核
    → 风控告警 → Agent预判 + 风控员确认
    → 完全自主的金融Agent → 目前监管不允许

今日思考

思考1: Agent是2025年最被高估还是最被低估的技术?

高估论:
  - 2023年AutoGPT热潮 → 实际效果很差 → "Agent幻灭期"
  - 大多数"Agent产品"本质上还是带工具调用的Chatbot
  - 可靠性不够: 企业不敢让Agent自主决策
  - 成本问题: 一个复杂Agent任务可能花费$1-10

低估论:
  - 2025年的Agent和2023年完全不同:
    → Reasoning模型让规划能力质变
    → MCP/A2A让工具生态标准化
    → Claude Code证明了Agent在编码领域的生产力
    → 错误恢复能力大幅提升
  - 企业落地正在加速:
    → 客服Agent替代率达40-60%
    → 代码Agent(Claude Code/Cursor)已成为开发者标配
    → 数据分析Agent在金融/咨询领域快速渗透

我的判断:
  Agent在"通用自主"上被高估 → "帮我做任何事"还太远
  Agent在"专业垂直"上被低估 → 特定领域的Agent正在爆发
  → 金融PM应该关注的是:
     不是"全能Agent" → 而是"某个具体场景的Agent"
     如: 合规审查Agent / 客户尽调Agent / 投研分析Agent

  每个Agent = 解决一个明确的业务问题
  组合多个专业Agent = 逐步替代知识工作者的重复性劳动

思考2: 金融行业的Agent应该多大程度自主?

自主性光谱:

  Level 0: 纯工具 (Excel/计算器)
    → 人操作,工具执行
    → 完全可控,但效率低

  Level 1: 建议型Agent (当前主流)
    → Agent分析 + 给出建议 → 人做最终决定
    → 如: "建议批准此贷款,理由是..."

  Level 2: 半自主Agent (正在发展)
    → 低风险操作自动执行 + 高风险操作请求审批
    → 如: 自动回复客户咨询 / 大额交易需要审批

  Level 3: 监督型自主 (金融行业的合理上限)
    → Agent自主执行 + 人实时监督 + 异常时介入
    → 如: 量化交易 → 自动下单但有人工盯盘 + 风控熔断

  Level 4: 完全自主 (目前不适合金融)
    → Agent自主决策,无人干预
    → 监管不允许 + 责任无法界定 + 风险不可控

  金融Agent的设计原则:
    1. 默认Level 1 → 可以建议,不能直接操作
    2. 明确的权限边界 → 什么能做/什么不能做
    3. 可审计 → 所有决策过程留痕
    4. 熔断机制 → 异常时自动停止 + 通知人类
    5. 渐进放权 → 从L1验证可靠后逐步升级到L2

  这和传统银行的审批层级体系是一样的道理:
    柜员可以批5万以下 → 主管批50万 → 行长批500万 → 总行批更高
    Agent也需要类似的"权限层级"

思考3: 选框架的决策本质是什么?

初学者的常见误区:
  "我应该学LangChain还是CrewAI?"
  → 这是错误的问题

正确的思考框架:
  1. 先明确你的业务场景和约束
  2. 再看哪个框架最匹配
  3. 框架是会变的,架构思维不会变

不变的Agent架构原则:
  ├── Observe-Think-Act循环 → 所有框架都基于这个
  ├── 工具定义标准化 → JSON Schema / MCP → 跨框架通用
  ├── 状态管理 → 无论用什么框架都需要
  ├── 错误恢复 → 生产级Agent的核心
  └── 可观测性 → 知道Agent在做什么、为什么这样做

金融PM视角的选型建议:
  如果你是PM做技术选型评审:
    → 不要问"用什么框架"
    → 要问"Agent的可靠性如何保证?"
    → 要问"Agent的决策过程是否可审计?"
    → 要问"Agent失控时如何熔断?"
    → 要问"数据安全和隐私如何保证?"
    → 这些问题比框架选择重要100倍

  框架会迭代 → LangChain已经大改3次了
  但安全、可审计、可控这些需求不会变

面试表达

"请解释什么是AI Agent,和Chatbot有什么区别?"

30秒版本:
  AI Agent是以LLM为大脑,配备记忆、工具和规划能力的自主系统。
  和Chatbot的核心区别是:Chatbot只能回答问题,Agent能完成任务。
  Agent通过Observe-Think-Act循环,自主调用工具、执行操作、
  并根据结果动态调整策略。比如在金融场景中,Chatbot能告诉你什么是基金定投,
  但Agent能帮你对比3个平台的费率后自动设置定投计划。

2分钟版本:
  补充: ReAct模式(推理+行动交替) → 为什么比纯推理或纯工具调用更好,
  Tool Use/Function Calling的技术实现(LLM生成调用意图→应用执行→结果回传),
  Planning策略(简单任务用ReAct,复杂任务先规划再执行),
  以及Memory系统(工作记忆/短期/长期)如何让Agent跨对话记住上下文。

追问准备:
  Q: 你会选择什么Agent框架?
  A: 取决于场景——生产级单Agent用Pydantic AI(类型安全/简洁),
     复杂工作流用LangGraph(状态机/可视化),
     多Agent协作用CrewAI(角色分工),
     安全合规场景用Claude Agent SDK(内置安全护栏+MCP原生)。
     不过框架选择不是最关键的决策,可靠性、可审计性和错误恢复才是。

  Q: Agent在金融行业有什么落地挑战?
  A: 三大挑战——一是可靠性(Agent幻觉导致错误操作,金融场景容错率极低),
     二是合规(Agent决策过程必须可审计,监管要求"可解释AI"),
     三是自主性边界(Agent应该做到什么程度?建议型还是自主型?)。
     实际落地建议: 先从Level 1(建议型)开始,验证可靠后渐进放权,
     关键操作必须Human-in-the-Loop。

  Q: ReAct和Planning什么时候用哪个?
  A: ReAct适合步骤少(1-5步)、不需要全局视角的任务,如查价格、搜新闻。
     Planning适合步骤多(5-20步)、需要全局规划的任务,如做尽调报告、设计方案。
     生产中通常组合: 简单请求直接ReAct,复杂请求先Plan-and-Execute,
     执行中遇到意外则Re-plan。

学习资源

必读论文

技术文档与博客

资源说明
OpenAI Function Calling Guide官方Tool Use文档
Anthropic Tool Use DocsClaude Tool Use文档
LangGraph DocumentationLangGraph官方文档
CrewAI DocumentationCrewAI官方文档
Pydantic AI DocumentationPydantic AI官方文档
Lilian Weng: LLM-Powered Agents经典综述博客
Chip Huyen: Building AI Agents工程实践视角
Anthropic: Building Effective AgentsAnthropic官方Agent最佳实践

视频教程


明日预告

Day 13: MCP协议与Tool生态

核心问题:
  Agent需要工具 → 但每个LLM厂商的工具定义格式不同
  → OpenAI一套JSON Schema, Anthropic另一套
  → 工具开发者要为N个平台写N个适配
  → 像USB出现之前每个设备用不同的接口一样混乱

  MCP (Model Context Protocol) = AI世界的USB-C
  → 统一的工具定义和通信协议
  → 一次开发,所有Agent都能用
  → 2025-2026最重要的AI基础设施标准

预习内容:
  MCP的Server/Client架构
  → MCP Hub生态(GitHub/Slack/数据库/区块链等MCP Server)
  → 自定义MCP Server开发
  → MCP vs Function Calling vs API的对比
  → 安全考量: MCP如何防止Agent滥用工具

与今日关系:
  Day 12 Agent框架  → 定义了Agent如何思考和行动
  Day 13 MCP协议    → 定义了Agent如何发现和使用工具
  → Agent框架 + MCP = 完整的Agent系统
  → 就像操作系统(框架) + 驱动程序(MCP) = 能用各种设备的电脑

Day 12 总结: AI Agent是2025-2026年最热门的AI应用范式——它让LLM从"只能聊天"进化为"能做事"。核心架构是LLM(大脑)+Memory(记忆)+Tools(工具)+Planning(规划),通过Observe-Think-Act循环自主完成多步任务。ReAct模式通过推理和行动的交替执行,既避免了纯推理的幻觉问题,又避免了纯工具调用的盲目性。Tool Use/Function Calling让LLM能安全地调用外部API——关键是LLM只生成调用意图,实际执行由应用代码控制。Planning策略方面,简单任务用ReAct逐步执行,复杂任务需要Plan-and-Execute加动态重规划。2025-2026框架生态百花齐放——LangGraph适合复杂工作流,CrewAI适合多Agent协作,Pydantic AI适合生产级类型安全开发,Claude Agent SDK适合安全合规场景。但框架选择不是最重要的决策——对金融行业而言,可靠性、可审计性、权限控制和Human-in-the-Loop才是Agent能否落地的关键。Agent不该追求完全自主,而应该像银行的审批层级体系一样,按风险等级渐进放权。