目录

AI Agent 2025:智能体框架的战国时代

前言

如果说 2023 年是 LLM 的元年,2024 年是 RAG 普及之年,那 2025 年就是 AI Agent(智能体)的爆发之年。这一年,AI Agent 不再是实验室里的概念验证,而是真正走进了生产环境——从客服系统到代码审查,从自动化运维到金融风控,Agent 正在重塑软件开发的方式。

与此同时,Agent 开发框架也从群雄逐鹿进入三国鼎立:LangGraphCrewAIAutoGen 三足鼎立,而 MCP 协议则成为它们共同的语言。

什么是 AI Agent?

AI Agent 是一个能够自主决策、调用工具、执行多步骤任务的智能程序。它不只是"问一句答一句"的聊天机器人,而是能像人类一样思考、规划、执行的"数字员工"。

传统 LLM:  用户提问 → LLM 回答
RAG:        用户提问 → 检索知识 → LLM 回答
Agent:     用户提目标 → Agent 规划 → 调用工具 → 观察结果 → 再规划 → ... → 完成任务

Agent 的核心能力:

能力 说明 2025 年进展
规划(Planning) 将复杂目标拆解为子任务 框架原生支持多步推理
工具调用(Tool Use) 调用 API、数据库、浏览器等 MCP 协议统一工具接口
记忆(Memory) 长期/短期记忆,上下文持久化 Graph-based 持久化成为标配
执行(Execution) 按计划执行并处理异常 Durable execution 容错机制
人机协作(HITL) 关键节点人工介入确认 Human-in-the-loop 内置支持

框架一:LangGraph — 最灵活的 Agent 运行时

LangGraph(来自 LangChain 团队)定位为 Agent 的底层运行时,而不是高层抽象。它的核心是用**有向图(Directed Graph)**来定义 Agent 的执行流程。

from langgraph.graph import StateGraph, MessagesState
from langgraph.prebuilt import ToolNode
from langchain_openai import ChatOpenAI

# 1. 定义工具
def search_web(query: str) -> str:
    """搜索网络信息"""
    return f"搜索结果:{query} 的相关信息..."

def calculate(expression: str) -> str:
    """计算数学表达式"""
    return str(eval(expression))

# 2. 构建 Agent 图
class AgentState(MessagesState):
    pass

graph = StateGraph(AgentState)

# 3. 添加节点
model = ChatOpenAI(model="gpt-4o").bind_tools([search_web, calculate])
tool_node = ToolNode([search_web, calculate])

def call_model(state: AgentState):
    return {"messages": [model.invoke(state["messages"])]}

graph.add_node("agent", call_model)
graph.add_node("tools", tool_node)

# 4. 定义边:判断是否继续调用工具
def should_continue(state: AgentState):
    last_msg = state["messages"][-1]
    return "tools" if last_msg.tool_calls else "__end__"

graph.set_entry_point("agent")
graph.add_conditional_edges("agent", should_continue)
graph.add_edge("tools", "agent")

# 5. 编译并运行
app = graph.compile()
result = app.invoke({"messages": [("human", "2025年Go发布了哪个版本?有什么新特性?")]})

LangGraph 的核心设计哲学:把 Agent 流程当作有向图来建模——每个节点是一个步骤,每条边是决策逻辑。这让复杂的多步 Agent 流程变得可维护、可调试。

2025 年的 Key 特性:

  • Durable Execution:Agent 执行中途崩溃可恢复,类似 Temporal
  • Deep Agents:高层 Agent 可以动态创建子 Agent 执行子任务
  • LangSmith Fleet:无代码 Agent 构建器,降低使用门槛
  • 时间旅行调试:回溯到任意执行步骤查看状态

框架二:CrewAI — 多 Agent 协作的生产力工具

CrewAI 的理念是**“让 AI 团队像人类团队一样协作”**。你可以定义多个 Agent、分配角色和职责,然后让它们共同完成任务。

from crewai import Agent, Task, Crew, Process

# 1. 定义 Agent 角色
researcher = Agent(
    role="技术研究员",
    goal="搜索并总结最新的技术趋势",
    backstory="你是一名资深技术分析师,擅长从海量信息中提取关键洞察。",
    tools=[search_web],
    verbose=True,
)

writer = Agent(
    role="技术写手",
    goal="将研究结果写成易懂的技术文章",
    backstory="你是一名技术博客作者,擅长将复杂技术概念讲清楚。",
    verbose=True,
)

# 2. 定义任务
research_task = Task(
    description="搜索 2025 年 Go 语言的最新进展",
    expected_output="一份包含关键特性、版本号和发布日期的技术报告",
    agent=researcher,
)

write_task = Task(
    description="根据研究报告撰写一篇技术博客",
    expected_output="一篇结构清晰、适合开发者阅读的博客文章",
    agent=writer,
)

# 3. 组建团队并执行
crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, write_task],
    process=Process.sequential,  # 或 Process.hierarchical
)

result = crew.kickoff()
print(result)

2025 年的关键更新:

  • Flows:声明式工作流,支持条件分支和循环
  • Guardrails:内置安全护栏,防止 Agent 做出危险操作
  • 企业版:RBAC、环境管理、监控控制台
  • 第三方集成:直接连接 Gmail、Slack、Salesforce、HubSpot 等

框架三:AutoGen 0.4 — 分布式多 Agent 系统

微软的 AutoGen 在 2025 年进行了重大重写,0.4 版本采用了事件驱动架构,原生支持分布式部署。

from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.teams import RoundRobinGroupChat
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.tools.mcp import McpToolAdapter

# 1. 注册 MCP 工具
mcp_tools = McpToolAdapter.from_server("weather-mcp")

# 2. 创建 Agent
weather_agent = AssistantAgent(
    name="weather_agent",
    model_client=OpenAIChatCompletionClient(model="gpt-4o"),
    tools=mcp_tools,
    system_message="你是天气查询助手,使用 MCP 工具获取实时天气。",
)

planner_agent = AssistantAgent(
    name="planner_agent",
    model_client=OpenAIChatCompletionClient(model="gpt-4o"),
    system_message="你是计划助手,根据天气信息给出出行建议。",
)

# 3. 组成团队
team = RoundRobinGroupChat([weather_agent, planner_agent])

# 4. 运行
stream = team.run_stream(task="明天北京适合出门吗?")
async for message in stream:
    print(message)

AutoGen 0.4 核心变化:

  • 事件驱动:异步消息传递,不再是简单的函数调用链
  • GrpcWorkerAgentRuntime:Agent 可以分布在不同的机器上
  • MCP 原生集成:通过 McpWorkbench 直接加载 MCP 工具
  • Docker 沙箱:代码执行在隔离容器中运行

MCP 协议:Agent 的"通用语言"

2025 年,MCP(Model Context Protocol)已经成为 Agent 调用工具的事实标准。无论是 LangGraph、CrewAI 还是 AutoGen,都原生支持 MCP 协议。

# 一个 MCP 服务器的简单示例
from mcp.server import Server
from mcp.types import Tool, TextContent

app = Server("code-analyzer")

@app.list_tools()
async def list_tools():
    return [
        Tool(
            name="analyze_code",
            description="分析代码中的问题",
            inputSchema={
                "type": "object",
                "properties": {
                    "code": {"type": "string"},
                    "language": {"type": "string"},
                },
            },
        )
    ]

@app.call_tool()
async def call_tool(name: str, arguments: dict):
    if name == "analyze_code":
        # 执行代码分析
        return [TextContent(type="text", text="分析结果...")]

MCP 解决的核心问题:Agent 不需要为每个工具写不同的适配代码——只要工具提供 MCP 接口,任何兼容 MCP 的 Agent 框架都能直接调用。

实战:构建一个代码审查 Agent

下面用 LangGraph + MCP 构建一个完整的代码审查 Agent:

import asyncio
from langgraph.graph import StateGraph, MessagesState
from langgraph.prebuilt import ToolNode
from langchain_openai import ChatOpenAI
from mcp import ClientSession, StdioServerParameters

# 1. 连接 MCP 服务器
async def setup_mcp_tools():
    server_params = StdioServerParameters(
        command="python",
        args=["-m", "mcp_server_code_review"],
    )
    async with ClientSession(server_params) as session:
        tools = await session.list_tools()
        return [convert_mcp_to_langchain(t) for t in tools]

# 2. 构建审查 Agent
def build_review_agent():
    tools = asyncio.run(setup_mcp_tools())
    tool_node = ToolNode(tools)
    
    model = ChatOpenAI(model="gpt-4o").bind_tools(tools)
    
    graph = StateGraph(MessagesState)
    graph.add_node("agent", lambda s: {"messages": [model.invoke(s["messages"])]})
    graph.add_node("tools", tool_node)
    graph.set_entry_point("agent")
    graph.add_conditional_edges(
        "agent",
        lambda s: "tools" if s["messages"][-1].tool_calls else "__end__",
    )
    graph.add_edge("tools", "agent")
    
    return graph.compile()

# 3. 审查代码
agent = build_review_agent()
result = agent.invoke({
    "messages": [("human", """审查下面这段 Go 代码:\n\nfunc main() {\n    for i := 0; i < 10; i++ {\n        go func() {\n            fmt.Println(i)\n        }()\n    }\n}""")]
})

框架选型建议

场景 推荐框架 理由
复杂多步 Agent 流程 LangGraph 图模型灵活,适合需要精细控制的场景
多 Agent 角色协作 CrewAI 开箱即用的角色分工,上手快
分布式 Agent 系统 AutoGen 0.4 原生分布式,事件驱动,适合大规模部署
与 MCP 工具生态集成 任意框架 三者都原生支持 MCP
团队没有 AI 专家 CrewAI / LangSmith Fleet 低代码/无代码方案

总结

2025 年的 AI Agent 生态已经清晰:三个框架 + 一个协议

要点 说明
LangGraph Agent 底层运行时,用有向图建模,灵活度最高
CrewAI 多 Agent 协作框架,角色分工,开箱即用
AutoGen 0.4 分布式 Agent 系统,事件驱动,适合大规模部署
MCP 协议 Agent 与工具交互的统一标准,三大框架均支持

对于开发者来说,2025 年学习和投入 AI Agent 开发是一个确定性很高的选择。建议从 LangGraph + MCP 这个组合开始,既有灵活性,又符合生态趋势。