Agent框架概述
版本基线:本文基于 LangChain 1.x / LangGraph 1.x(2025-10 GA),示例模型 gpt-5-mini,更新于 2026-09。
什么是Agent框架?
Agent框架是用于构建AI Agent的软件框架,提供了工具调用、记忆管理、规划决策等核心功能,帮助开发者快速构建能够自主完成任务的智能系统。
核心概念
1. Agent定义
Agent是能够感知环境、做出决策并采取行动的智能系统:
- 自主性:能够独立做出决策
- 反应性:能够响应环境变化
- 主动性:能够主动采取行动
- 社会性:能够与其他Agent交互
2. 核心组件
Agent框架的核心组件:
- LLM引擎:大语言模型作为推理引擎
- 工具集:Agent可使用的工具集合
- 记忆系统:短期和长期记忆管理
- 规划器:任务规划和分解
- 执行器:任务执行和监控
3. 工作模式
Agent的常见工作模式:
- ReAct模式:推理-行动-观察循环
- Plan-and-Execute:先规划后执行
- Reflexion:反思和改进
- Multi-Agent:多Agent协作
4. 交互方式
Agent与环境的交互方式:
- 工具调用:调用外部工具和API
- 代码执行:生成和执行代码
- 自然语言:通过自然语言交互
- 结构化输出:输出结构化数据
技术原理
1. 推理机制
Agent的推理机制:
- 思维链(CoT):逐步推理过程
- 自一致性:多个推理路径的一致性
- 树状思维(ToT):树状推理结构
- 图状思维(GoT):图状推理结构
2. 记忆机制
Agent的记忆管理:
- 短期记忆:当前对话的上下文
- 长期记忆:持久化的知识和经验
- 工作记忆:当前任务的相关信息
- 情景记忆:特定事件的记忆
3. 规划机制
Agent的规划能力:
- 任务分解:将复杂任务分解为子任务
- 优先级排序:确定任务执行顺序
- 资源分配:合理分配计算资源
- 风险评估:评估任务执行风险
4. 学习机制
Agent的学习能力:
- 从反馈中学习:根据执行结果改进
- 从示例中学习:学习成功的案例
- 从探索中学习:通过尝试新策略学习
- 从人类反馈中学习:RLHF等
架构设计
1. 单Agent架构
用户输入 → Agent → LLM推理 → 工具调用 → 结果输出
↓
记忆管理
↓
规划决策2. 多Agent架构
用户输入 → 协调器 → Agent1 → 任务1
↓
Agent2 → 任务2
↓
Agent3 → 任务3
↓
结果整合 → 输出3. 分层架构
应用层
├── 接口层
├── 协调层
├── Agent层
│ ├── 推理Agent
│ ├── 执行Agent
│ └── 监控Agent
└── 工具层主流Agent框架对比(2026)
| 框架 | 出品方 | 特点 | 适用场景 | 状态 |
|---|---|---|---|---|
| LangGraph | LangChain | 图编排、checkpointer 持久化、人机协同 | 生产级 Agent / 多 Agent 编排 | 活跃,事实标准之一 |
| OpenAI Agents SDK | OpenAI | 轻量、Handoffs、Guardrails | 快速构建单/多 Agent | 活跃 |
| Pydantic AI | Pydantic 团队 | 类型安全、结构化输出 | 工程化 Agent 应用 | 活跃 |
| Google ADK | 与 Gemini / Vertex AI 深度集成 | GCP 生态 Agent | 活跃 | |
| CrewAI | CrewAI | 角色化多 Agent 协作 | 团队协作类任务 | 活跃 |
| AutoGen(AG2) | 微软/社区 | 对话式多 Agent | 企业级多 Agent 应用 | 活跃(v0.4+ 全新架构) |
| smolagents | HuggingFace | 极简、Code Agent | 轻量 Agent 原型 | 活跃 |
| MCP 生态 | Anthropic 等 | Model Context Protocol,工具/上下文接入标准 | Agent 工具接入的事实标准 | 持续扩展 |
| MetaGPT | 社区 | 多角色"软件公司"模拟 | 软件开发流程演示 | 2023 年早期探索项目,具历史意义 |
| AutoGPT | 社区 | 完全自主循环 Agent | 自主性概念验证 | 2023 年早期探索项目,具历史意义 |
| BabyAGI | 社区 | 极简任务队列 Agent | 学习参考 | 2023 年早期探索项目,具历史意义 |
| ChatDev | 社区 | 虚拟软件公司 | 教学演示 | 更新放缓,具历史价值 |
| CAMEL | 社区 | 角色扮演通信 Agent | 研究探索 | 更新放缓,具历史价值 |
2026 年怎么选
生产项目优先考虑 LangGraph / OpenAI Agents SDK / Pydantic AI / Google ADK,多角色协作看 CrewAI / AutoGen,工具接入统一走 MCP(Model Context Protocol)。AutoGPT、BabyAGI、MetaGPT、ChatDev、CAMEL 属于 2023 年的早期探索项目,适合用来理解 Agent 思想的演进,不建议作为新项目的底座。
选型指南
1. 需求分析
- 任务类型:探索性任务、确定性任务
- 自主程度:完全自主、半自主、人工监督
- 协作需求:单Agent、多Agent协作
- 性能要求:响应时间、准确性、稳定性
2. 技术评估
- 成熟度:框架的稳定性和社区活跃度
- 扩展性:功能扩展和定制能力
- 集成性:与现有系统的集成难度
- 学习成本:团队学习和使用成本
3. 成本考虑
- 开发成本:开发时间和人力成本
- 运行成本:API调用费用、计算资源
- 维护成本:长期维护和更新成本
- 机会成本:选择该框架放弃的其他方案
开发实践
1. 环境准备
# 安装基础库(LangChain 1.x + LangGraph)
pip install -U langchain langgraph langchain-openai
# 可 pip 安装的多 Agent 框架
pip install crewai # CrewAI
pip install metagpt # MetaGPT
pip install autogen-agentchat # AutoGen v0.4+ 新包(旧包名 pyautogen 已停止演进)
# 注意:AutoGPT / BabyAGI 是开源项目而非 pip 库,无法 pip install:
# AutoGPT:git clone https://github.com/Significant-Gravitas/AutoGPT 后按官方文档运行
# BabyAGI:仅数百行源码,建议直接阅读仓库代码作为学习参考2. 基础Agent示例
from langchain.agents import create_agent
from langchain.tools import tool
from langchain_openai import ChatOpenAI
# 定义工具
@tool
def search(query: str) -> str:
"""搜索互联网"""
return f"搜索结果: {query}"
@tool
def calculate(expression: str) -> str:
"""计算数学表达式"""
try:
result = eval(expression) # ⚠️ 仅教学演示,生产环境禁止
return str(result)
except Exception:
return "计算错误"
# 创建Agent(LangChain 1.x:create_agent 取代 AgentExecutor)
llm = ChatOpenAI(model="gpt-5-mini")
tools = [search, calculate]
agent = create_agent(
llm,
tools=tools,
system_prompt="你是一个有用的助手,可以使用工具来完成任务。",
)
# 使用Agent
result = agent.invoke({
"messages": [{"role": "user", "content": "搜索最新科技新闻并计算相关数据"}]
})
print(result["messages"][-1].content)eval() 安全提示
示例中的 eval() 仅供教学演示。生产环境严禁对不可信输入使用 eval()——它会执行任意代码,造成注入风险。替代方案:
- 仅解析字面量:
ast.literal_eval - 白名单解析:用
ast模块解析表达式后,仅放行加减乘除等白名单节点 - 沙箱执行:独立进程/容器运行,并施加资源与超时限制
旧写法对照(LangChain 0.x)
旧版教程常用 AgentExecutor + create_openai_tools_agent:
# ❌ 旧写法(LangChain 0.x,已移除)
from langchain.agents import AgentExecutor, create_openai_tools_agent
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
result = agent_executor.invoke({"input": "..."})["output"]LangChain 1.x 中它们已被 from langchain.agents import create_agent 取代,返回结果为消息列表,messages[-1].content 即最终回答。
3. 多Agent协作示例
from langchain.agents import create_agent
from langchain.tools import tool
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-5-mini")
# 创建研究员Agent
@tool
def research(topic: str) -> str:
"""研究指定主题"""
return f"关于{topic}的研究结果"
research_agent = create_agent(
llm, tools=[research],
system_prompt="你是一个研究员,负责收集和分析信息。",
)
# 创建分析师Agent
@tool
def analyze(data: str) -> str:
"""分析数据"""
return f"分析结果: {data}"
analyst_agent = create_agent(
llm, tools=[analyze],
system_prompt="你是一个分析师,负责分析数据并提供见解。",
)
# 协调器:顺序编排两个 Agent
def coordinate(task: str) -> str:
def _ask(agent, content: str) -> str:
result = agent.invoke({"messages": [{"role": "user", "content": content}]})
return result["messages"][-1].content
# 研究阶段
research_result = _ask(research_agent, f"研究: {task}")
# 分析阶段
return _ask(analyst_agent, f"分析以下研究结果: {research_result}")
# 使用示例
print(coordinate("人工智能在医疗领域的应用"))更复杂的多 Agent 协作(如 supervisor 用结构化输出路由、LangGraph StateGraph 编排)参见多Agent系统概述。
最佳实践
1. 设计原则
- 单一职责:每个Agent只负责一个特定任务
- 明确接口:定义清晰的输入输出接口
- 错误处理:添加完善的错误处理机制
- 日志记录:记录Agent的执行过程
2. 性能优化
- 缓存机制:缓存重复查询结果
- 异步执行:使用异步提升并发性能
- 资源限制:设置执行时间和资源限制
- 监控告警:监控Agent执行状态
3. 安全考虑
- 输入验证:验证用户输入
- 权限控制:限制工具使用权限
- 敏感信息:避免暴露敏感信息
- 审计日志:记录所有操作日志
常见问题
1. 稳定性问题
- 执行失败:添加重试机制和错误处理
- 死循环:设置最大执行次数
- 资源耗尽:设置资源使用限制
- API限流:处理API调用限制
2. 性能问题
- 响应慢:优化工具调用,使用缓存
- 成本高:优化提示,减少API调用
- 并发低:使用异步处理,优化架构
- 内存占用高:优化数据结构,及时释放资源
3. 开发问题
- 调试困难:添加详细日志,使用调试工具
- 测试困难:设计可测试的接口,使用模拟数据
- 维护困难:模块化设计,文档完善
- 扩展困难:设计可扩展的架构
下一步学习
选择一个Agent框架深入学习: