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,还是固定流程更合适