#orchestration#multi-agent#architecture#framework

多智能体编排:LangGraph vs AutoGen vs CrewAI 实战对比

当单个 Agent 不够用的时候,我们会想到多智能体协作。但 LangGraph、AutoGen、CrewAI 三个主流框架的心智模型完全不同:状态机、对话群、角色+任务。本文从可控性、调试难度、生产落地三个维度横向对比,结合 YGG 在跨数据库查询与客户服务场景的真实落地经验,给出选型建议和一个最小 TypeScript 示例。

AutorYGG 智能体周刊Veröffentlicht5 Min. Lesezeit

为什么单 Agent 不够

一个 Agent 做一件事没问题,但真实业务里往往需要:检索 → 写代码 → 审查 → 调工具 → 汇总。把这些职责塞进一个 prompt,会遇到 context 膨胀、角色混乱、错误难定位。于是业界走向多智能体编排。三个最常被提起的框架是 LangGraph、AutoGen、CrewAI。它们不是同一代东西,心智模型差别很大。

三个框架的心智模型

LangGraph:状态机

把整个系统建模成一张有状态的有向图。每个节点是一个 Agent 或工具,边是条件跳转。状态在节点之间显式传递,checkpoint 可以持久化。适合流程可画清的场景,例如审批、RAG-Agent、工单流。

AutoGen:对话群

把多个 Agent 放在一个"群聊"里,它们通过消息互相交谈直到任务完成。有 GroupChatManager 负责调度。适合开放式探索、代码调试类任务,但调试很难,因为"谁接下一个话题"高度依赖 LLM 判断。

CrewAI:角色 + 任务

更偏产品化:你定义 Agent 的角色、目标、背景,然后定义 Task,Crew 负责把 Task 分派给 Agent,按 sequential 或 hierarchical 模式执行。对业务人员更友好,但自定义能力不如前两者。

对比表

| 维度 | LangGraph | AutoGen | CrewAI | |------|-----------|---------|--------| | 心智模型 | 有状态图 | 群聊 | 角色+任务 | | 可控性 | 高 | 低 | 中 | | 调试难度 | 低(状态可见) | 高 | 中 | | 持久化 | 内建 checkpoint | 需自己做 | 基础支持 | | 学习曲线 | 陡 | 平缓 | 平缓 | | 生产落地 | 推荐 | 谨慎 | 中小场景可选 |

YGG 在生产里的选择

在 DataWeaver(跨数据库自然语言查询)里,我们最终选了 LangGraph。核心原因是:每一次用户问句都要经过 NL2SQL → 安全检查 → 执行 → 可视化 → 报告 五个明确节点,每一步的失败都需要可观测、可回滚。LangGraph 的状态机模型 + checkpoint 几乎是为这种场景量身定做的。

在另一个客服类智能体上,我们一度尝试 AutoGen,效果不差但无法 debug:一旦用户发来复杂诉求,群聊就陷入循环,很难在生产环境定位根因。最后退回到"主 Agent + 工具函数"的朴素架构。

结论:可控性是生产的硬约束,心智酷不酷不是。

一段最小 LangGraph 风格的 TypeScript 代码

type State = {
  question: string
  sql?: string
  result?: unknown
  error?: string
}

const graph = new StateGraph<State>()

graph.addNode('planner', async (s) => ({ sql: await nl2sql(s.question) }))
graph.addNode('guard', async (s) => {
  if (containsDrop(s.sql!)) return { error: 'blocked: destructive sql' }
  return {}
})
graph.addNode('executor', async (s) => ({ result: await runSql(s.sql!) }))

graph.addEdge('planner', 'guard')
graph.addConditionalEdges('guard', (s) =>
  s.error ? 'END' : 'executor'
)
graph.addEdge('executor', 'END')

const app = graph.compile({ checkpointer: pgCheckpointer })

关键点:guard 节点显式拦截破坏性 SQL,failure 是一个 state 字段而不是异常。整个图可以被 checkpoint,失败的 trace 能完整回放。

选型建议

  • 流程可画清 → LangGraph
  • 想要快速 prototype / 纯对话式探索 → AutoGen,但不要直接上生产
  • 业务人员配置、场景简单 → CrewAI
  • 真实业务复杂度高 → 永远优先选状态可见、可回滚的方案

延伸阅读

  • LangGraph 文档的 Multi-agent workflows 章节
  • AutoGen v0.4 的架构演进讨论
  • CrewAI 与 LangGraph 的一些对比基准(社区 benchmark,结果需自己复现)

Kuratiert vom YGG-Team aus ArXiv, HackerNews und öffentlichen Anbieter-Blogs. Menschlich geprüft.