Skip to content

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) ​

框架出品方特点适用场景状态
LangGraphLangChain图编排、checkpointer 持久化、人机协同生产级 Agent / 多 Agent 编排活跃,事实标准之一
OpenAI Agents SDKOpenAI轻量、Handoffs、Guardrails快速构建单/多 Agent活跃
Pydantic AIPydantic 团队类型安全、结构化输出工程化 Agent 应用活跃
Google ADKGoogle与 Gemini / Vertex AI 深度集成GCP 生态 Agent活跃
CrewAICrewAI角色化多 Agent 协作团队协作类任务活跃
AutoGen(AG2)微软/社区对话式多 Agent企业级多 Agent 应用活跃(v0.4+ 全新架构)
smolagentsHuggingFace极简、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. 环境准备 ​

bash
# 安装基础库(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示例 ​

python
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:

python
# ❌ 旧写法(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协作示例 ​

python
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框架深入学习: