2026年AI Agent框架市场经历了一场结构性洗牌:Microsoft将AutoGen并入Semantic Kernel形成统一的Microsoft Agent Framework(MAF),Google发布ADK 2.0 GA引入Workflow运行时,OpenAI的Agents SDK从实验项目成长为支持Sandbox Agent和实时语音的生产级工具,Anthropic推出Claude Agent SDK,HuggingFace的Smolagents凭借代码优先范式异军突起,PydanticAI以类型安全切入企业市场。这些框架表面上都在解决"让LLM自主行动"这同一个问题,但在设计哲学上分成了截然不同的五派:图状态机派(LangGraph)、角色编排派(CrewAI)、厂商原语派(OpenAI/Google/Anthropic SDK)、代码优先派(Smolagents)、类型安全派(PydanticAI)。本文从核心抽象模型出发,用真实代码对比每派的架构选择、表达能力边界和生产就绪差距,为框架选型提供超越Star数和Benchmark的设计层洞察。
| 维度 | LangGraph (图状态机) | CrewAI (角色编排) | OpenAI Agents SDK (厂商原语) | Google ADK (厂商工作流) | Smolagents (代码优先) | PydanticAI (类型安全) |
|---|---|---|---|---|---|---|
| 核心抽象 | 有向图 + 状态 | Agent角色 + Crew + Task | Agent + Handoff + Tool | Agent + Workflow + Task | CodeAgent + Tool | Agent + Dependencies |
| 版本(2026.05) | ~0.3.x | ~0.120+ | 0.14+ | 2.0 GA | ~1.13+ | ~0.2+ |
| 编程范式 | 声明式图定义 | 声明式角色描述 | 命令式Python | 声明式Workflow + 命令式Agent | 代码生成式 | 命令式Python + DI |
| 状态管理 | 内置检查点持久化 | 短期+长期记忆 | Session抽象 | 内置Session/State | 无内置持久化 | 无内置持久化 |
| 多Agent模式 | 子图嵌套 | Crew编排 | Handoff/Agent-as-tool | Workflow编排 | 多Agent工具组合 | 手动编排 |
| LLM绑定 | 完全解耦 | 完全解耦 | 100+ LLM(via LiteLLM) | Gemini优先 | 完全解耦 | 完全解耦 |
| MCP支持 | 通过LangChain集成 | 社区插件 | 原生支持 | 原生支持 | 原生支持 | 社区插件 |
| 人机协作 | 内置Interrupt | 有限 | 内置HITL | 内置HITL | 有限 | 有限 |
| 部署方案 | LangSmith Deploy | Crew Control Plane | 自托管 | GCP集成 | 自托管 | 自托管 |
| 上手门槛 | 高(需理解图) | 低(角色直觉) | 中(概念简洁) | 中(双模式) | 极低(会写代码即可) | 中(需理解DI) |
LangGraph的核心论点是:任何Agent行为本质上都是一个状态机——从一个状态转移到另一个状态,根据条件分支,可能循环。因此,用有向图(Directed Graph)作为基础抽象,是最精确、最灵活的表达方式。
这个论点在理论上几乎无懈可击。无论是单Agent的"思考→行动→观察"循环,还是多Agent之间的交接、并行执行、条件路由,都可以用图的节点(Node)和边(Edge)来表达。LangGraph在此基础上加入了持久化检查点(Checkpoint),使图的状态可以序列化到数据库,从而实现:
from langgraph.graph import StateGraph, START, END
from typing import TypedDict
class AgentState(TypedDict):
messages: list
next_action: str
retry_count: int
def think(state: AgentState) -> AgentState:
# LLM推理节点
response = llm.invoke(state["messages"])
return {"messages": state["messages"] + [response]}
def act(state: AgentState) -> AgentState:
# 工具执行节点
result = tool.execute(state["next_action"])
return {"messages": state["messages"] + [result]}
def should_continue(state: AgentState) -> str:
if state["retry_count"] > 3:
return "end"
return "think"
builder = StateGraph(AgentState)
builder.add_node("think", think)
builder.add_node("act", act)
builder.add_edge(START, "think")
builder.add_conditional_edges("think", should_continue, {"think": "think", "end": END})
builder.add_edge("act", "think")
graph = builder.compile(checkpointer=SqliteSaver(conn))
LangGraph的表达力上限极高——理论上任何可计算的工作流都能用图表达。但代价是认知复杂度:开发者必须将业务逻辑翻译成图的拓扑结构。当一个Workflow有20+个节点和条件边时,可读性急剧下降。2026年LangChain推出了Deep Agents高层封装来缓解这个问题,但底层仍然是图。
LangGraph是2026年生产就绪度最高的框架之一。Klarna、Replit、Elastic等公司已将其用于生产。LangSmith提供完整的追踪、评估和部署平台。主要差距在于:学习曲线陡峭,新开发者从安装到第一个有意义的生产Agent可能需要1-2周。
高变现潜力。LangGraph + LangSmith的组合适合包装为"企业Agent开发训练营",目标客户为中大型企业的AI团队。定价可覆盖3000-8000元/人的培训市场。
CrewAI的设计哲学是直觉优先:人类理解Agent协作的最自然方式是"角色分工"——就像一个团队里有研究员、编辑、审核员。CrewAI将每个Agent定义为一个角色(Role),赋予它目标(Goal)、背景故事(Backstory)和工具集,然后将一组角色组成Crew(团队),按顺序或层级执行任务。
这个设计的核心洞察是:降低概念门槛比最大化表达力更重要。一个不懂状态机的产品经理,也能理解"让一个研究员Agent搜索信息,再让一个编辑Agent整理成报告"。
from crewai import Agent, Task, Crew, Process
researcher = Agent(
role="高级市场研究员",
goal="发现关于{topic}的前沿趋势和数据",
backstory="你是一位有15年经验的行业分析师,擅长从海量信息中提取洞察",
tools=[search_tool, web_scraper],
verbose=True,
)
writer = Agent(
role="技术内容编辑",
goal="将研究结果转化为有深度的分析报告",
backstory="你是一位知名科技媒体的前任主编",
tools=[file_writer],
verbose=True,
)
research_task = Task(
description="调研{topic}的最新发展动态",
expected_output="包含数据和引用的调研摘要",
agent=researcher,
)
write_task = Task(
description="基于调研结果撰写深度分析报告",
expected_output="3000字以上的专业分析报告",
agent=writer,
)
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
process=Process.sequential,
)
result = crew.kickoff(inputs={"topic": "AI Agent框架2026"})
2026年CrewAI最重要的架构演进是引入了Flow原语——一个面向生产场景的事件驱动编排引擎。Flow与Crew的关系是:Flow是编排层,Crew是执行层。一个Flow可以包含多个Crew,也可以包含单个LLM调用。这使得CrewAI从"多Agent玩具"进化为"企业工作流引擎"。
CrewAI在2026年宣称已有超过10万名开发者通过其认证课程,每月运行4.5亿个工作流,GitHub Star超过44,600。这些数字表明它在开发者采用率上领先。
CrewAI的表达力上限受限于角色隐喻。当工作流需要复杂的条件分支、循环、状态回滚时,角色隐喻变得牵强。例如,"如果Agent A的输出置信度低于0.7,则回退到上一个检查点重试"——这种逻辑在LangGraph中是原生的,但在CrewAI中需要绕道。
CrewAI通过Crew Control Plane(云托管平台)解决了生产部署问题,提供追踪、可观测性、安全和24/7支持。但完全脱离LangChain依赖、从头构建意味着生态集成需要时间积累。
极高变现潜力。CrewAI的"角色分工"隐喻天然适合非技术用户。可以包装为"AI自动化训练营"面向运营、市场、HR等非研发人员,价格区间2000-5000元/人。CrewAI自己的认证体系已经验证了这条路径。
2026年最大的格局变化是三大云厂商+Anthropic全部推出了自己的Agent SDK。它们的共同设计哲学是:最简原语 + 深度生态绑定。不追求框架层面的抽象完备性,而是提供最少的概念(Agent、Tool、Handoff),然后通过深度集成自家基础设施(OpenAI的沙箱、Google的GCP、Anthropic的Claude Code)来提供完整解决方案。
OpenAI Agents SDK的核心概念只有5个:Agent、Tool、Handoff、Guardrails、Tracing。2026年的重大更新是Sandbox Agent——Agent在容器中执行文件操作和命令,可以维护跨长时间任务的工作空间状态。
from agents import Runner
from agents.sandbox import SandboxAgent, Manifest
from agents.sandbox.entries import GitRepo
from agents.sandbox.sandboxes import UnixLocalSandboxClient
agent = SandboxAgent(
name="代码审查助手",
instructions="检查仓库代码质量并生成报告",
default_manifest=Manifest(
entries={"repo": GitRepo(repo="user/project", ref="main")}
),
)
result = Runner.run_sync(
agent,
"审查README和核心模块的代码质量",
run_config=RunConfig(sandbox=SandboxRunConfig(
client=UnixLocalSandboxClient()
)),
)
print(result.final_output)
OpenAI Agents SDK声称支持100+ LLM(通过LiteLLM集成),不是OpenAI专属。但Sandbox Agent、Realtime Agent等高级功能显然是为OpenAI模型优化的。
Google ADK 2.0于2026年5月发布GA,最大亮点是Workflow运行时——一个基于图的执行引擎,支持路由、扇出/扇入、循环、重试和状态管理。Workflow与Agent的关系是互补的:Workflow处理确定性编排,Agent处理自主决策。
from google.adk import Agent, Workflow
generate_agent = Agent(
name="generate_agent",
model="gemini-2.5-flash",
instruction="返回一个随机水果名称",
)
benefit_agent = Agent(
name="benefit_agent",
model="gemini-2.5-flash",
instruction="告诉我指定水果的健康益处",
)
# Workflow定义确定性编排流
root_agent = Workflow(
name="root_agent",
edges=[("START", generate_agent, benefit_agent)],
)
ADK 2.0引入了Task API实现Agent间结构化委派,支持多轮任务模式、单轮受控输出和混合委派模式。这直接对标的LangGraph的子图嵌套,但用更简洁的API实现。
Claude Agent SDK走了一条完全不同的路径:它不是一个通用Agent框架,而是Claude Code能力的编程接口。TypeScript实现,核心能力是让Agent理解代码库、编辑文件、运行命令。它更像是"可编程的Claude Code"而非"通用Agent框架"。
// npm install @anthropic-ai/claude-agent-sdk
import { ClaudeAgentSDK } from '@anthropic-ai/claude-agent-sdk';
const sdk = new ClaudeAgentSDK();
const agent = await sdk.createAgent({
instructions: "分析代码库并修复安全漏洞",
});
const result = await agent.run("检查所有API端点的输入验证");
三大厂商SDK的共同特征是:轻量级API + 深度平台绑定。它们不试图成为"万能框架",而是做自家生态的最佳Agent入口。这意味着:
厂商SDK的变现路径不是直接卖框架,而是通过平台使用量收费。对第三方开发者而言,OpenAI Agents SDK和Google ADK适合包装为"快速构建AI应用"的培训课程,定价4000-10000元/人。
Smolagents的论点激进而简洁:Agent应该用代码思考,而不是用JSON。传统的Tool Calling流程是:LLM生成JSON格式的工具调用→框架解析JSON→执行→返回结果。Smolagents让LLM直接生成Python代码来表达行动,然后在沙箱(E2B/Docker/Modal)中执行。
这个设计的理论依据来自HuggingFace的研究:代码生成比JSON生成更能准确表达复杂逻辑,尤其是涉及条件判断、循环和数据变换时。一个CodeAgent的核心逻辑只有约1000行代码,这本身就是设计哲学的体现。
from smolagents import CodeAgent, WebSearchTool, InferenceClientModel
model = InferenceClientModel(model_id="deepseek-ai/DeepSeek-R1", provider="together")
agent = CodeAgent(tools=[WebSearchTool()], model=model, stream_outputs=True)
result = agent.run(
"一只猎豹以最高速度跑过巴黎艺术桥需要多少秒?"
)
# Agent生成的代码类似:
# speed_km_h = 120 # 猎豹最高速度
# bridge_length_m = 155 # 艺术桥长度
# speed_m_s = speed_km_h * 1000 / 3600
# time_seconds = bridge_length_m / speed_m_s
# print(f"需要 {time_seconds:.2f} 秒")
Smolagents的独特之处在于它不做抽象——不像LangGraph的图、CrewAI的角色、ADK的Workflow那样引入新的概念层。它直接让Agent写代码,代码就是工作流。这意味着:
Smolagents还提供了Hub集成——可以将工具和Agent分享到HuggingFace Hub,实现即插即用的Agent共享。
Code-first的天花板在于LLM的代码生成质量。当任务需要精确的状态管理、持久化和复杂的错误恢复时,让LLM生成正确的Python代码比生成正确的JSON工具调用更难保证。此外,代码执行的安全边界需要严格的沙箱策略。
Smolagents在2026年仍然更偏向研究/原型工具。缺少内置的持久化、生产级部署方案和企业级可观测性。但它的"无框架"哲学对特定场景(数据分析、科学计算、自动化脚本)非常合适。
中等变现潜力。适合包装为"AI自动化脚本训练营"面向数据分析师和研究人员,定价1500-3000元/人。但生产场景有限制。
PydanticAI的设计哲学是:如果Agent的输入/输出/依赖关系有类型保证,那么大量运行时错误可以在开发阶段被捕获。它将Pydantic的类型系统深度集成到Agent开发中——从Agent的输入/输出模型、工具参数、到依赖注入(Dependency Injection),全部有静态类型检查。
from pydantic_ai import Agent, RunContext
from pydantic import BaseModel
class SearchResult(BaseModel):
title: str
url: str
relevance_score: float
search_agent = Agent(
'openai:gpt-4o',
result_type=SearchResult, # 结构化输出有类型保证
deps_type=SearchDB, # 依赖注入也有类型
)
@search_agent.tool
async def search(ctx: RunContext[SearchDB], query: str) -> list[SearchResult]:
# ctx.deps 有正确的类型提示
return ctx.deps.search(query)
result = await search_agent.run("最新的Agent框架")
typed_result: SearchResult = result.data # 类型安全
PydanticAI的核心差异化是依赖注入系统——通过Python的类型注解,Agent的运行时依赖(数据库连接、API客户端等)可以在测试时被替换,在生产时被注入。这使得Agent的可测试性远超其他框架。
类型安全的代价是灵活性受限。当Agent的输出结构不可预测(例如自由文本生成、开放式对话),强制类型约束反而增加了复杂度。PydanticAI最适合输出结构明确的任务(数据提取、分类、格式化),不适合开放式创作。
PydanticAI的16,500+ GitHub Star表明社区认可度高,但生产案例相对较少。缺乏原生的多Agent编排和持久化。适合作为其他框架(如LangGraph)的类型安全层来使用。
graph TB
subgraph "图状态机派 - LangGraph"
LG_S[START] --> LG_T[Think Node]
LG_T -->|条件边| LG_A[Act Node]
LG_A --> LG_C{Continue?}
LG_C -->|Yes| LG_T
LG_C -->|No| LG_E[END]
LG_T -.->|Checkpoint| LG_DB[(SQLite/Postgres)]
end
subgraph "角色编排派 - CrewAI"
CR_R[Researcher Agent] -->|顺序执行| CR_W[Writer Agent]
CR_W -->|Flow编排| CR_E[Editor Agent]
CR_R -.-> CR_C[Crew Context]
end
subgraph "厂商原语派"
OA_A1[Sandbox Agent] -->|Handoff| OA_A2[Review Agent]
OA_A1 -.-> OA_SB[Container Sandbox]
GA_A1[Generate Agent] -->|Workflow Edge| GA_A2[Benefit Agent]
GA_A1 -.-> GA_GCP[GCP/Gemini]
CA_A1[Claude Agent] -->|Code Actions| CA_Files[File System]
CA_A1 -.-> CA_CC[Claude Code Engine]
end
subgraph "代码优先派 - Smolagents"
SM_Q[User Query] --> SM_Code[LLM generates Python]
SM_Code --> SM_Exec[Sandbox Execute]
SM_Exec --> SM_R[Result]
end
subgraph "类型安全派 - PydanticAI"
PA_I[Typed Input] --> PA_Agent[Agent + DI]
PA_Agent --> PA_O[Typed Output]
PA_Agent -.-> PA_D[Dependencies]
end
style LG_DB fill:#f9f,stroke:#333
style CR_C fill:#bbf,stroke:#333
style OA_SB fill:#fbb,stroke:#333
style SM_Exec fill:#bfb,stroke:#333
style PA_D fill:#fbf,stroke:#333
2026年Agent框架领域最具象征意义的事件是Microsoft将AutoGen并入维护模式,并将其与Semantic Kernel合并为统一的Microsoft Agent Framework(MAF)。同时,AutoGen的社区分支AG2由原核心维护者独立运营。
这个事件揭示了Agent框架竞争的本质:框架不再是中立的基础设施,而是云厂商生态锁定的重要武器。Microsoft不再需要两个Agent框架互相竞争开发者的注意力,而是需要一个统一的入口来引导开发者进入Azure生态。
AG2社区分支的存在说明开源社区对"厂商控制"的抵抗。AG2宣称自己是"Open-Source AgentOS",由多组织的志愿者维护,正在向v1.0推进。但一个没有大厂背书的Agent框架能否在2026年的激烈竞争中存活,仍然存疑。
graph TD
START[选择Agent框架] --> Q1{需要多Agent编排?}
Q1 -->|Yes| Q2{编排逻辑复杂度?}
Q1 -->|No| Q3{主要任务类型?}
Q2 -->|高:条件/循环/回滚| LANG[LangGraph<br/>图状态机]
Q2 -->|中:角色分工| CREW[CrewAI<br/>角色编排]
Q2 -->|低:简单接力| Q4{首选云厂商?}
Q4 -->|OpenAI| OAI[OpenAI Agents SDK]
Q4 -->|Google/Gemini| ADK[Google ADK]
Q4 -->|Anthropic/Claude| CAS[Claude Agent SDK]
Q4 -->|中立| AG2[AG2 社区版]
Q3 -->|数据分析/脚本| SMOL[Smolagents<br/>代码优先]
Q3 -->|结构化提取/分类| PYD[PydanticAI<br/>类型安全]
Q3 -->|通用对话/工具| Q4
style LANG fill:#e1f5fe
style CREW fill:#f3e5f5
style OAI fill:#e8f5e9
style ADK fill:#fff3e0
style CAS fill:#fce4ec
style SMOL fill:#e0f2f1
style PYD fill:#f1f8e9
style AG2 fill:#ede7f6
为了直观对比各派的表达差异,用同一个任务——"搜索一个主题并生成摘要报告"——在六个框架中实现核心逻辑:
from langgraph.graph import StateGraph, START, END
def research(state):
state["research"] = search_tool(state["topic"])
return state
def summarize(state):
state["summary"] = llm.summarize(state["research"])
return state
g = StateGraph(dict)
g.add_node("research", research)
g.add_node("summarize", summarize)
g.add_edge(START, "research")
g.add_edge("research", "summarize")
g.add_edge("summarize", END)
graph = g.compile()
from crewai import Agent, Task, Crew
researcher = Agent(role="研究员", goal="搜索{topic}", tools=[search])
writer = Agent(role="编辑", goal="撰写摘要报告")
crew = Crew(agents=[researcher, writer],
tasks=[Task(description="搜索", agent=researcher),
Task(description="摘要", agent=writer)])
crew.kickoff(inputs={"topic": "AI Agents"})
from agents import Agent, Runner
researcher = Agent(name="研究员", instructions="搜索给定主题")
writer = Agent(name="编辑", instructions="将搜索结果整理成摘要",
handoffs=[researcher])
result = Runner.run_sync(writer, "搜索AI Agents并写摘要")
from google.adk import Agent, Workflow
researcher = Agent(name="researcher", instruction="搜索主题")
writer = Agent(name="writer", instruction="整理成摘要")
root = Workflow(name="pipeline",
edges=[("START", researcher, writer)])
from smolagents import CodeAgent, WebSearchTool, InferenceClientModel
agent = CodeAgent(tools=[WebSearchTool()], model=InferenceClientModel())
agent.run("搜索AI Agents最新进展,生成摘要报告")
from pydantic_ai import Agent
from pydantic import BaseModel
class Report(BaseModel):
summary: str
sources: list[str]
agent = Agent('openai:gpt-4o', result_type=Report)
result = agent.run_sync("搜索AI Agents最新进展并生成摘要")
代码行数对比:Smolagents(3行) < PydanticAI(5行) < CrewAI(8行) < OpenAI SDK(5行) < ADK(5行) < LangGraph(11行)。但行数不代表一切——LangGraph的11行提供了完整的检查点、持久化和条件路由能力,其他框架的"简洁"往往以牺牲这些能力为代价。
2026年Agent框架领域的一个重要趋势是Model Context Protocol(MCP)的原生支持。MCP作为Anthropic发起的开放标准,正在成为Agent与外部工具/数据源的通用接口。
当前MCP支持情况:
- OpenAI Agents SDK:原生支持,工具可直接从MCP Server加载
- Google ADK:原生支持
- Smolagents:原生支持,ToolCollection.from_mcp()
- LangGraph:通过LangChain社区集成
- CrewAI:社区插件
- PydanticAI:社区插件
MCP的普及可能改变框架竞争格局:当所有框架都能通过MCP访问相同的工具生态时,工具数量不再是差异化因素,竞争将聚焦在编排能力、状态管理和开发者体验上。
推荐:LangGraph。当你的Agent需要持久执行、人在回路、复杂条件分支和状态回滚时,LangGraph是目前唯一成熟的选项。配合LangSmith的生产级可观测性和部署平台,适合金融、医疗等对可靠性要求极高的场景。
推荐:CrewAI。角色隐喻的非技术团队可理解性是最大优势。Flow的引入使CrewAI能处理更复杂的生产场景。适合市场自动化、内容生产、业务流程自动化。
推荐:对应厂商SDK。如果团队已深度使用OpenAI/GCP/Anthropic生态,直接用对应SDK。OpenAI Agents SDK的Sandbox Agent、Google ADK的Workflow Runtime、Claude Agent SDK的代码理解能力都是"别人无法复制的独家优势"。
推荐:Smolagents。对于需要LLM执行数据分析、科学计算、文件处理等任务的场景,Code-first范式最自然。生成可审计的Python代码比JSON工具调用更可靠。
推荐:PydanticAI。当团队重视类型安全、可测试性和IDE自动补全时,PydanticAI提供最好的开发体验。适合输出结构明确的任务(数据提取、分类、格式化报告)。
推荐:LangGraph + Smolagents混合。核心编排用LangGraph保证生产级可靠性,辅助Agent用Smolagents快速实现。两者都是厂商中立的开源项目,不受任何云厂商控制。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
