ChatGPT能写文章、能回答问题,但你让它帮你订一张机票,它做不到。它能告诉你"你应该去携程搜一下",但它没法真的打开网页、输入日期、比价、下单。

**AI Agent(智能体)**就是为了解决这个问题——让LLM不仅能"想",还能"做"。Agent = LLM + 工具使用 + 自主规划 + 记忆。

一、从聊天机器人到智能体

1.1 纯LLM的局限

一个纯粹的LLM本质上是一个"无状态的文本生成器":

graph LR
    IN["输入文本"] --> LLM["LLM"]
    LLM --> OUT["输出文本"]

它有几个根本性的限制:

限制表现
无法执行动作不能调API、不能操作文件、不能访问数据库
无持久记忆每次对话结束后就"忘了"
知识过时无法获取训练数据之后的信息
无法自主规划不能将复杂任务分解并逐步执行
单轮思考一次生成就结束,不能自我检查和修正

1.2 Agent的定义

AI Agent是一个以LLM为"大脑"的自主系统,能够:

  1. 感知:理解用户的意图和当前环境状态
  2. 规划:将复杂目标分解为可执行的步骤
  3. 行动:调用外部工具完成具体操作
  4. 观察:获取行动的结果
  5. 反思:根据结果调整策略
graph TD
    USER["用户目标"] --> PERCEIVE["感知
理解意图"] PERCEIVE --> PLAN["规划
分解任务"] PLAN --> ACT["行动
调用工具"] ACT --> OBSERVE["观察
获取结果"] OBSERVE --> REFLECT["反思
是否完成?"] REFLECT -->|未完成| PLAN REFLECT -->|已完成| RESULT["返回结果"]

二、Agent的核心组件

2.1 架构总览

graph TB
    subgraph Agent ["AI Agent"]
        LLM["LLM(大脑)"]
        PLAN["规划模块"]
        MEM["记忆系统"]
        TOOL["工具集"]
    end
    
    USER["用户"] --> LLM
    LLM --> PLAN
    PLAN --> LLM
    LLM --> MEM
    MEM --> LLM
    LLM --> TOOL
    TOOL --> LLM
    LLM --> USER

2.2 LLM:Agent的大脑

LLM负责理解、推理和决策。作为Agent大脑的LLM需要具备:

  • 指令遵循能力:准确理解并执行复杂指令
  • 推理能力:能够进行多步逻辑推理
  • 工具使用能力:知道何时该调用什么工具
  • 结构化输出:能以特定格式(如JSON)输出工具调用参数

并非所有LLM都适合做Agent。目前在Agent场景中表现较好的模型包括GPT-4系列、Claude系列、Gemini系列等。

2.3 工具(Tools)

工具是Agent与外部世界交互的接口。每个工具通常定义为:

{
  "name": "search_web",
  "description": "搜索互联网获取最新信息",
  "parameters": {
    "type": "object",
    "properties": {
      "query": {
        "type": "string",
        "description": "搜索关键词"
      }
    },
    "required": ["query"]
  }
}

常见的工具类型:

类型示例
信息检索网页搜索、数据库查询、文档检索
代码执行Python解释器、Shell命令
文件操作读写文件、创建目录
API调用发邮件、创建日历事件、管理项目
浏览器操作打开网页、点击按钮、填写表单

Agent的工作方式:LLM决定要调用哪个工具以及传什么参数 → 系统执行工具调用 → 将结果返回给LLM → LLM根据结果继续推理或调用下一个工具。

2.4 记忆系统

Agent需要记忆来维持连贯的行为:

短期记忆:当前任务的对话上下文和中间结果。通常就是对话历史本身,受限于LLM的上下文窗口。

长期记忆:跨会话持久化的信息。实现方式包括:

  • 向量数据库存储过往经验
  • 结构化数据库存储用户偏好
  • 文件系统存储任务记录
graph LR
    subgraph 短期 ["短期记忆"]
        CTX["对话上下文"]
        WM["工作记忆
(当前任务状态)"] end subgraph 长期 ["长期记忆"] VDB["向量数据库
(经验/知识)"] DB["结构化存储
(用户偏好)"] end 短期 <--> LLM["LLM"] 长期 <--> LLM

2.5 规划模块

面对复杂目标,Agent需要将其分解为可执行的步骤。

任务分解

用户目标:"帮我调研竞品的启动性能,写一份对比报告"

Agent规划:
1. 确定需要对比的竞品列表
2. 搜索各竞品的公开性能数据
3. 使用Instruments对竞品进行实测
4. 整理数据到表格中
5. 撰写对比分析报告
6. 输出最终文档

规划策略对比:

策略方式优点缺点
一次性规划开始时制定完整计划简单直接不能适应执行中的变化
逐步规划每完成一步再规划下一步灵活可能缺乏全局视角
动态重规划发现偏差时重新调整计划鲁棒性强可能反复调整

三、Agent的推理模式

3.1 ReAct模式

最经典的Agent推理模式,交替进行Reasoning(推理)Acting(行动)

用户:北京到上海的高铁需要多久?最近车票多少钱?

思考(Thought):我需要查询北京到上海高铁的时刻和票价信息。
行动(Action):search_web("北京到上海高铁时刻表票价2026")
观察(Observation):北京南到上海虹桥,G1次,4小时18分,二等座588元...

思考(Thought):我已经获取到了时刻和票价信息,可以回答用户了。
回答(Answer):北京到上海的高铁最快约4小时18分,二等座票价588元...

3.2 Plan-and-Execute模式

先制定完整计划,再逐步执行:

graph TD
    GOAL["目标"] --> PLANNER["规划器
制定步骤"] PLANNER --> S1["步骤1"] S1 --> E1["执行器
执行步骤1"] E1 --> S2["步骤2"] S2 --> E2["执行器
执行步骤2"] E2 --> S3["步骤3"] S3 --> E3["执行器
执行步骤3"] E3 --> REPLAN{需要重新规划?} REPLAN -->|是| PLANNER REPLAN -->|否| DONE["完成"]

优点是有全局视角,适合多步骤复杂任务。

3.3 Reflection模式

Agent完成初始输出后,进行自我反思和改进:

第一轮生成 → "这段代码实现了基本功能..."
自我反思   → "等等,我没有处理边界情况,也没有添加错误处理"
第二轮改进 → "补充了nil检查、错误处理和边界情况..."
再次反思   → "现在覆盖了主要场景,可以输出了"

这种模式让Agent能够自我纠正,提高输出质量。

四、Multi-Agent系统

4.1 为什么需要多Agent

就像一个公司不可能只有一个人一样,复杂的任务往往需要多个Agent协作,各自负责不同的专业领域。

4.2 协作模式

顺序管道:Agent A的输出作为Agent B的输入

graph LR
    A["Agent A
需求分析"] --> B["Agent B
代码实现"] B --> C["Agent C
代码审查"] C --> D["Agent D
测试编写"]

监督者模式:一个主Agent负责调度,分配子任务给专家Agent

graph TD
    S["Supervisor Agent
(调度者)"] S --> A["Coder Agent
写代码"] S --> B["Reviewer Agent
代码审查"] S --> C["Tester Agent
写测试"] A --> S B --> S C --> S

辩论模式:多个Agent从不同角度讨论,最终达成共识

graph LR
    A["Agent A
主张方案1"] <--> B["Agent B
主张方案2"] A <--> C["Agent C
提出反例"] B <--> C A --> D["共识"] B --> D C --> D

4.3 主流Multi-Agent框架

框架特点
CrewAI角色定义清晰,工作流易配置
AutoGen (Microsoft)支持灵活的多Agent对话模式
LangGraph基于图的Agent编排,状态管理强大
MetaGPT模拟软件公司,角色分工明确

五、Agent的关键挑战

5.1 幻觉传播

单次LLM调用的幻觉率可能是5%,但Agent的多步推理中,错误会累积:

步骤1(正确率95%)→ 步骤2(95%)→ 步骤3(95%)→ ... → 步骤10
总正确率:0.95^10 ≈ 59.9%

10步之后,整体成功率可能只有60%。

应对策略:

  • 每步验证:执行后检查结果的合理性
  • 自我纠正:发现错误时回退并重试
  • 人工介入:关键节点请求人类确认

5.2 上下文窗口管理

Agent的对话历史包含所有的推理过程、工具调用和结果,很容易超出上下文窗口:

用户问题 → Thought 1 → Action 1 → Observation 1 (可能很长)
         → Thought 2 → Action 2 → Observation 2 (可能很长)
         → ...
         → Thought N → 最终回答

管理策略:

  • 摘要压缩:将较早的对话历史压缩为摘要
  • 选择性保留:只保留关键信息,丢弃中间冗余
  • 外部化存储:将详细信息存到外部存储,上下文中只保留索引

5.3 成本控制

Agent的每一步推理都消耗Token,多步推理的成本可能是单次调用的数十倍:

场景典型LLM调用次数Token消耗倍数
简单问答1次1x
RAG问答1~2次2~3x
简单Agent任务3~5次5~10x
复杂Agent任务10~50次20~100x

优化方向:

  • 简单任务不走Agent流程
  • 使用更小的模型处理简单子任务
  • 缓存常见的工具调用结果
  • 设置最大步数限制

5.4 安全性

Agent能执行真实操作,安全风险远大于纯聊天机器人:

风险示例
数据泄露Agent查询数据库时返回了敏感数据
误操作Agent删错了文件或发送了错误的邮件
提示注入恶意用户通过Prompt让Agent执行非预期操作
权限过大Agent获得了不必要的系统权限

防护措施:

  • 最小权限原则:Agent只获取完成任务必需的最小权限
  • 操作确认:高风险操作需要人类确认
  • 沙箱执行:在隔离环境中执行代码和命令
  • 审计日志:记录Agent的所有操作

六、Agent的典型应用场景

6.1 编程Agent

最成熟的Agent应用领域之一。典型的编程Agent工作流:

graph TD
    REQ["用户需求"] --> UNDERSTAND["理解需求"]
    UNDERSTAND --> EXPLORE["探索代码库
(搜索、阅读文件)"] EXPLORE --> PLAN["制定修改计划"] PLAN --> CODE["编写/修改代码"] CODE --> TEST["运行测试"] TEST --> CHECK{通过?} CHECK -->|否| DEBUG["分析错误
修复代码"] DEBUG --> TEST CHECK -->|是| REVIEW["自我审查"] REVIEW --> DONE["提交代码"]

代表产品:Cursor、GitHub Copilot、Windsurf、Devin等。

6.2 数据分析Agent

用户:"分析上个月的用户留存数据,找出流失的主要原因"

Agent:
1. 连接数据库,查询上月用户行为数据
2. 用Python进行数据清洗和分析
3. 生成留存率曲线和流失漏斗图
4. 分析流失用户的共性特征
5. 撰写分析报告并给出建议

6.3 自动化运维Agent

用户:"线上告警CPU使用率超过90%,排查一下"

Agent:
1. SSH连接到告警机器
2. 执行top查看高CPU进程
3. 分析进程日志
4. 检查最近部署记录
5. 定位到是某个定时任务导致
6. 给出处理建议(重启 or 回滚 or 优化)

七、Agent的技术生态

Agent不是孤立存在的,它依赖一系列基础设施:

graph TB
    subgraph 应用层 ["应用层"]
        APP["Agent应用
Cursor / GPT Actions / ..."] end subgraph 框架层 ["框架层"] FW["Agent框架
LangChain / LangGraph / CrewAI"] end subgraph 协议层 ["协议层"] FC["Function Calling"] MCP["MCP协议"] end subgraph 能力层 ["能力层"] LLM["LLM"] TOOLS["工具/API"] MEM["记忆/存储"] end APP --> FW FW --> FC FW --> MCP FC --> LLM FC --> TOOLS MCP --> TOOLS FW --> MEM

其中Function Calling和MCP是连接LLM与外部工具的关键协议,我们将在下一篇文章中详细介绍它们的原理和区别。

八、总结

AI Agent代表了LLM从"对话工具"到"自主执行系统"的进化。它的核心架构可以概括为:

  1. LLM大脑:负责理解、推理和决策
  2. 工具集:Agent的"手脚",执行真实操作
  3. 记忆系统:维持上下文连贯性和长期知识
  4. 规划模块:将复杂目标分解为可执行步骤

Agent的强大之处在于组合——LLM本身无法搜索网页,也无法执行代码,但通过工具调用将这些能力组合起来,就能完成远超LLM单独能力的任务。

然而,Agent仍然面临幻觉累积、成本控制、安全性等挑战。当前Agent更适合作为人类的"助手"而非完全自主的"替代者"——人机协作(Human-in-the-loop)是更务实的路径。