AI 智能体框架对比:LangGraph、AutoGen、CrewAI 与 Agents SDK
"多智能体系统"是当前 AI 应用开发里最热的方向,但框架生态已经非常拥挤。LangGraph、AutoGen、CrewAI 与 OpenAI Agents SDK 是最常被拿来对比的四个选择,它们的哲学差异很大:有的强调对执行流程的精细控制,有的强调开箱即用的多智能体协作,有的强调角色化分工,有的强调极简原语。选错框架的代价是后期迁移成本高,所以先用一张地图理解各自定位,再决定。基础概念可先看 AI 智能体开发基础。
一、LangGraph:以"图"为核心的精确控制
LangGraph 由 LangChain 团队维护,核心理念是把智能体执行流程建模成状态图(StateGraph):节点(node)执行逻辑,边(edge)决定流转,所有节点通过共享状态通信。
- StateGraph 与 reducer:每个节点是"State → Partial State"的函数,reducer 定义多节点写入同一字段时的合并规则。
- checkpointer(持久化):编译时传入 checkpointer,配合
thread_id,让图具备"暂停、恢复、回放"能力,是长任务与断点续跑的基础。 - human-in-the-loop:通过
interrupt()在节点内暂停图执行、向客户端索取输入,再用Command恢复——这是审批类流程的标配。 - 动态并行:
Send支持 map-reduce 式并行(把同一节点以不同状态并发执行后聚合)。 - 子图与条件边:支持子图嵌套与
add_conditional_edges动态路由。
它几乎不预设抽象,控制力最强,但学习曲线也最陡。与 LangChain 开发指南搭配使用最为顺畅。
二、AutoGen:微软的"事件驱动 + 智能体团队"
AutoGen 由微软维护,分两层:底层 autogen-core 是事件驱动的编程模型,上层 AgentChat 提供开箱即用的高级 API,内置多种多智能体协作模式:
- 团队与协作:预置 Selector Group Chat(共享上下文 + 集中式选择器)、Swarm(局部工具式路由)、Magentic-One(通用多智能体)与 GraphFlow(有向图工作流)。
- 事件驱动:核心层强调组件间的消息/事件流,灵活但需要理解异步模型。
- 应用与监控:与 Microsoft Foundry 生态集成,提供日志与追踪。
适合想要"多智能体对话式协作"、且愿意接受微软生态与事件驱动学习成本的中大型项目。
三、CrewAI:角色化分工与低门槛
CrewAI 的核心抽象是"Crew(团队)":把多个 Agent(角色 + 目标 + 背景)与 Task 组合,按顺序(sequential)或层级(hierarchical,由 manager 协调)流程执行。
- 极低上手门槛:声明式定义角色、目标、任务即可跑通,适合业务人员理解、快速出原型。
- Flows(流程):事件驱动的轻量工作流层,用
@start、@listen、@router装饰器串接方法与状态,支持条件分支、循环与状态持久化。 - 记忆与检查点:内置记忆系统与 checkpoint,长任务可断点恢复。
- 人机协同:
@human_feedback支持审批门控与人工反馈。
适合快速验证"多角色协作"业务(如市场调研、内容生产流水线),以及更看重开发效率而非极致控制的团队。
四、OpenAI Agents SDK:极简原语 + 官方生态
OpenAI Agents SDK 是 Swarm 的生产级升级版,刻意保持很小的原语集:
- Agent:LLM + 指令 + 工具 + 护栏(guardrails)的组合。
- Handoff:让一个智能体把任务移交给另一个智能体,天然支持"分流/委派"式编排。
- Guardrails:输入/输出校验,可与执行并行、快速失败。
- Tracing 与 Sessions:内置追踪与持久化会话,调试和监控开箱即用。
- Python-first:用原生 Python 表达编排逻辑,几乎没有新抽象,学习成本最低。
它默认使用 OpenAI 的 Responses API(相关背景见 OpenAI API 开发指南),也支持非 OpenAI 模型。适合需要快速上手、主要跑在 OpenAI 生态、看重追踪与护栏的项目。
同一个任务的四种写法
以"写一篇产品简介并总结成 3 个要点"为例,不同框架的表达差异一目了然:
# CrewAI:声明式,最快跑通
from crewai import Agent, Task, Crew
writer = Agent(role="文案", goal="写产品简介", backstory="资深文案")
summarizer = Agent(role="编辑", goal="提炼要点", backstory="严谨编辑")
crew = Crew(
agents=[writer, summarizer],
tasks=[
Task(description="写 200 字产品简介", agent=writer),
Task(description="总结为 3 个要点", agent=summarizer),
],
)
print(crew.kickoff())
# OpenAI Agents SDK:极简原语,两行编排
from agents import Agent, Runner
writer = Agent(name="writer", instructions="写产品简介")
result = Runner.run_sync(writer, "为 AI 客服产品写 200 字简介")
print(result.final_output)
# LangGraph:显式定义节点与边
from langgraph.graph import StateGraph
g = StateGraph(dict)
g.add_node("write", lambda s: {"draft": draft_fn(s["topic"])})
g.add_node("summary", lambda s: {"summary": sum_fn(s["draft"])})
g.set_entry_point("write"); g.add_edge("write", "summary")
app = g.compile()
print(app.invoke({"topic": "AI 客服产品"}))
可以看到:CrewAI 把"角色协作"写成配置,Agents SDK 只保留 Agent 与 Runner 两个概念,LangGraph 需要你亲手定义每一跳。AutoGen 则偏"对话式团队",用异步事件驱动,写法上更接近构建一个多角色 chat。没有绝对优劣,关键在于你愿意为哪种表达方式付费。
五、选型建议
| 维度 | LangGraph | AutoGen | CrewAI | OpenAI Agents SDK |
|---|---|---|---|---|
| 核心抽象 | 状态图 | 智能体团队/事件 | Crew + Flow | Agent + Handoff |
| 控制力 | 最高 | 高 | 中 | 中低 |
| 上手难度 | 较陡 | 中 | 低 | 最低 |
| 持久化/断点 | checkpointer 原生 | 部分 | checkpoint 内置 | Sessions 内置 |
| 适合场景 | 复杂可控流程 | 多智能体对话协作 | 快速角色化原型 | OpenAI 生态轻量应用 |
一句话总结:要精确控制每一步选 LangGraph;要多智能体自由协作选 AutoGen;要快速搭角色化团队选 CrewAI;要极简 + 官方生态选 OpenAI Agents SDK。多数项目也可混合使用——用 LangGraph 编排核心流程,用轻量 SDK 做外围任务。
一个真实选型场景
某中型电商团队要做"智能售后工单":用户描述问题 → 自动分类 → 查询订单与物流 → 必要时转人工。他们最终的选择是:
- 路由与审批:用 LangGraph 把"分类 → 查询 → 是否转人工"画成状态图,配合
interrupt()让人工介入时有暂停点; - 外围任务:用 Agents SDK 处理两个独立的小任务(工单摘要、回复草稿),代码量小、便于维护;
- 快速验证:最初用 CrewAI 在一周内跑通了端到端原型,验证了"多角色流水线"的可行性,再逐步迁移到 LangGraph 强化控制。
复盘下来,最大的教训是"不要一上来就上最重的框架":先用轻量方案验证业务,再按控制力需求升级,迁移成本比想象中低——因为核心的提示词、工具函数与数据模型都可以复用。
常见问题(FAQ)
- 这四个框架能混用吗? 可以。底层只要都走 OpenAI 兼容的 API,LangGraph 编排 + Agents SDK 跑外围任务是很常见的组合;关键是保持"工具函数与提示词独立于框架"。
- 中文内容生成用哪个更好? 框架本身不决定生成质量,模型才决定。选型只看控制力、生态与维护成本;语言质量靠提示词与模型档位解决。
- 什么时候该从 CrewAI 迁到 LangGraph? 当流程开始出现复杂分支、需要严格的状态回溯与人工审批时,就是迁移的信号;在那之前,CrewAI 的开发速度优势更大。
六、16IDC 落地建议
无论选哪个框架,先把护栏与审计想清楚:智能体一旦获得工具权限,其"自主性"就是新的攻击面(可参考 AI 安全与提示注入防御)。建议先用 CrewAI 或 Agents SDK 快速验证业务价值,再按需迁移到 LangGraph 强化控制;同时为 服务器选型预留足够的并发与日志算力——多智能体系统的每一步调用、状态与追踪都会消耗真实资源。
参考:LangGraph 文档 https://langchain-ai.github.io/langgraph/;AutoGen 文档 https://microsoft.github.io/autogen/;CrewAI 文档 https://docs.crewai.com/;OpenAI Agents SDK https://openai.github.io/openai-agents-python/