跳到主要内容

AI Agent 概述

AI Agent 是能够自主规划、决策并采取行动以完成复杂目标的 AI 系统。随着 LLM 能力的提升,Agent 正从研究概念走向生产应用,成为 AI 工程的重要方向。

Agent 定义

Agent 是一个运行在感知-决策-行动(Perception-Reasoning-Action)循环中的系统:

  • 感知(Perception):获取环境状态,包括用户输入、工具返回结果、外部系统状态
  • 推理(Reasoning):由 LLM 根据当前状态决定下一步行动
  • 行动(Action):执行工具调用、API 请求、写文件等具体操作
  • 观察(Observation):获取行动结果,更新环境状态,进入下一轮循环

这个循环持续运行直到任务完成或达到预设终止条件。

与普通 LLM 调用的区别

维度普通 LLM 调用Agent
交互轮次单次或固定多轮动态多轮,自主决定轮次
工具使用动态调用工具
规划无(单次生成)多步规划与执行
自我修正观察结果,调整策略
状态维护有限(上下文窗口)外部记忆系统
适合任务单步转换、问答多步工作流、自动化

关键区别在于:普通 LLM 调用是"一问一答",而 Agent 是"给我一个目标,我来想办法完成"。

ReAct 框架

ReAct(Reasoning + Acting)是最广泛使用的 Agent 运作框架,将推理和行动交织进行:

用户:帮我查一下苹果公司最新季度的营收,并与上一季度对比

Agent 内部循环:
思考:我需要获取苹果最新季度营收数据
行动:search("Apple Inc Q3 2024 revenue")
观察:搜索结果显示 Q3 2024 营收为 857 亿美元

思考:我需要获取上一季度的数据
行动:search("Apple Inc Q2 2024 revenue")
观察:Q2 2024 营收为 908 亿美元

思考:现在我有足够信息来回答
回答:苹果 Q3 2024 营收为 857 亿美元,比 Q2 2024 的 908 亿美元下降约 5.6%...

ReAct 的优势在于推理过程透明,可以追踪 Agent 的决策逻辑。

Agent 能力要素

规划(Planning)

Agent 需要将复杂任务分解为可执行的子步骤,并确定执行顺序。规划质量是 Agent 能力的核心。

记忆(Memory)

  • 短期记忆:当前对话/任务的上下文
  • 长期记忆:跨会话持久化的知识和经验(通常存储在向量数据库)
  • 工具/程序记忆:知道哪些工具存在及如何使用

工具使用(Tool Use)

Agent 通过工具与外部世界交互,常见工具:

  • 网络搜索
  • 代码解释器(执行 Python)
  • 文件读写
  • 数据库查询
  • API 调用(邮件、日历、CRM)
  • 浏览器控制

自我反思(Reflection)

高级 Agent 能够评估自己的输出质量,发现错误并修正,类似于 Reflexion 框架中的自我批评循环。

何时使用 Agent

适合 Agent 的场景

  • 动态决策:任务的下一步取决于上一步的结果,事先无法确定
  • 多步自动化:需要依次完成多个步骤的工作流(研究→分析→报告)
  • 工具依赖:需要调用多种外部工具和 API
  • 持续迭代:需要根据反馈不断调整,如代码调试(运行→看错误→修改)
  • 开放性探索:任务边界不明确,需要 Agent 自主探索

不适合 Agent 的场景

  • 确定性任务:流程固定、不需要动态决策,直接用 RAG 或普通 LLM 即可
  • 低延迟要求:Agent 的多轮 LLM 调用会显著增加延迟(通常 10 秒到数分钟)
  • 高可靠性要求:Agent 失败率高于固定流程,不适合金融交易等高风险操作
  • 成本敏感:Agent 的多轮调用会大幅增加 Token 消耗

主流 Agent 框架

LangGraph

基于状态机的 Agent 框架,适合复杂的多步骤工作流:

  • 显式定义状态(State)和状态转换
  • 支持循环、条件分支、人工介入
  • 与 LangChain 生态无缝集成

AutoGen(微软)

基于对话的多 Agent 框架:

  • 多个 Agent 通过消息互相通信
  • 内置代码执行和自动修复能力
  • 适合需要多角色协作的任务

CrewAI

角色扮演多 Agent 框架:

  • 定义不同角色(研究员、写手、审核员)
  • 每个角色有专属工具和目标
  • 流水线式任务协作

可靠性挑战

Agent 在实际部署中面临的主要挑战:

  • 规划失误:LLM 可能制定不合理的计划,导致后续步骤无效
  • 工具调用错误:参数格式不对、API 调用失败未能正确处理
  • 循环陷阱:Agent 可能陷入无限循环,重复执行相同操作
  • 上下文溢出:长任务的对话历史超过上下文窗口
  • 幻觉行动:Agent 声称执行了某操作,但实际上并未执行
  • 成本失控:未设置最大步骤数,导致 Agent 无限调用 LLM

成本考量

Agent 的成本显著高于普通 LLM 调用:

  • 单次用户请求可能触发 10-50 次 LLM 调用
  • 每次调用都携带完整的系统提示和历史上下文
  • 工具结果(搜索内容、代码输出)会增加大量 Token
  • 使用旗舰模型(GPT-4o、Claude Sonnet)时成本更高

成本控制策略:

  • 为 Agent 的规划和工具选择用轻量模型,关键推理用旗舰模型
  • 设置最大步骤数(max_iterations)作为硬性保护
  • 压缩工具返回结果,只保留关键信息
  • 评估是否真的需要 Agent,还是固定流程更合适