LLM和Agent——专题3: Agentic Workflow 入门(4)

LangGraph vs CrewAI vs AutoGen------Agentic 框架选型指南

2025 年,Agentic 框架已经进入"百团大战"阶段。面对 LangGraph、CrewAI、AutoGen 等众多选择,你应该选哪个?本文从架构设计、学习曲线、生态成熟度、生产就绪度四个维度进行深度对比,帮你做出正确决策。

一、引言

如果说 2023 年是"大模型元年",2024 年是"AI Agent 元年",那 2025 年就是"Agent 框架元年"。几乎每个月都有新的 Agent 框架涌现------LangGraph、CrewAI、AutoGen、Dify、Coze、Semantic Kernel、AgentLite......

对于技术选型者来说,选择困难症正在加剧。每个框架都声称自己是最好的,每个都有漂亮的 GitHub Star 数,但真正适合你业务场景的,可能只有一两个
低代码/平台
多 Agent 协作
底层引擎
企业级
Semantic Kernel

.NET 原生
LangGraph

状态图编排
CrewAI

角色扮演
AutoGen

对话驱动
Dify

可视化拖拽
Coze

一站式平台

图:2025 年 Agentic 框架生态------从底层引擎到企业平台

本文聚焦三个最具代表性、GitHub 社区最活跃的框架------LangGraph、CrewAI 和 AutoGen------进行全方位对比。

二、三大框架速览

2.1 LangGraph

一句话描述 :LangChain 团队出品的基于状态图的 Agent 编排框架。

  • GitHub Stars:10k+
  • 定位:底层状态机引擎,提供最大的灵活性和控制力
  • 核心理念:把 Agent 工作流建模为带状态的图(StateGraph),节点是操作,边是流转逻辑

条件路由
条件路由
start
think 思考节点
act 行动节点
end
observe 观察节点

图:LangGraph 核心理念------显式状态图(StateGraph),节点是操作,边是流转逻辑

python 复制代码
# LangGraph 的核心理念:显式状态图
from langgraph.graph import StateGraph, END

class MyState(TypedDict):
    messages: list
    next_step: str

workflow = StateGraph(MyState)

workflow.add_node("think", think_node)
workflow.add_node("act", act_node)
workflow.add_node("observe", observe_node)

workflow.add_conditional_edges(
    "think",
    router_function,  # 你的自定义路由逻辑
    {"act": "act", "end": END}
)
workflow.add_edge("act", "observe")
workflow.add_edge("observe", "think")

app = workflow.compile()

2.2 CrewAI

一句话描述 :让 AI 像团队一样协作------定义角色、分配任务、管理协作流程。

  • GitHub Stars:25k+
  • 定位:多 Agent 协作框架,强调角色扮演(Role-Playing)
  • 核心理念:定义 Agent 的"角色(Role)"、"目标(Goal)"和"背景故事(Backstory)",让它们自发协作

研究成果
初稿
终稿
研究员 Agent

角色: 市场研究员

目标: 分析市场趋势
撰稿人 Agent

角色: 报告撰写人

目标: 产出商业报告
编辑 Agent

角色: 内容编辑

目标: 润色优化
最终输出

图:CrewAI 核心理念------角色扮演 + 任务分配,模拟人类团队协作

python 复制代码
# CrewAI 的核心理念:角色扮演 + 任务分配
from crewai import Agent, Task, Crew

# 定义角色
researcher = Agent(
    role="市场研究员",
    goal="深度分析目标市场,发现趋势和机会",
    backstory="你是一位有 10 年经验的资深市场研究员,擅长数据驱动的分析",
)

writer = Agent(
    role="报告撰写人",
    goal="将研究成果转化为清晰、有说服力的商业报告",
    backstory="你是一位顶尖的商业报告撰写专家",
)

# 定义任务
research_task = Task(
    description="研究 2024 年中国 AI Agent 市场规模和竞争格局",
    agent=researcher,
)

write_task = Task(
    description="基于研究结果,撰写一份 3000 字的市场分析报告",
    agent=writer,
)

# 组建团队
crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, write_task],
    process="sequential",  # 顺序执行
)

result = crew.kickoff()

2.3 AutoGen(微软)

一句话描述 :微软出品的对话驱动多 Agent 框架,强调 Agent 之间的自然对话。

  • GitHub Stars:40k+
  • 定位:对话式多 Agent 协作,支持复杂的人机交互
  • 核心理念:Agent 通过"聊天"来协作------就像人在 Slack 群里讨论问题一样

代码执行器 编程助手 Agent 用户代理 代码执行器 编程助手 Agent 用户代理 帮我写个数据分析脚本 好的,我先规划脚本结构... 执行生成的代码 返回执行结果 代码运行成功,结果如下... 请加个图表 执行更新后的代码 图表生成成功

图:AutoGen 核心理念------Agent 通过对话自然协作,Human-in-the-loop

python 复制代码
# AutoGen 的核心理念:对话驱动
from autogen import AssistantAgent, UserProxyAgent

# 定义 Agent
assistant = AssistantAgent(
    name="编程助手",
    llm_config={"config_list": [{"model": "gpt-4o"}]},
    system_message="你是一个资深的 Python 编程专家。",
)

user_proxy = UserProxyAgent(
    name="用户代理",
    human_input_mode="TERMINATE",  # 关键决策时请求人类输入
    code_execution_config={"work_dir": "coding"},
)

# 发起对话
user_proxy.initiate_chat(
    assistant,
    message="请帮我写一个数据分析脚本,分析 sales.csv 的月度趋势并生成图表",
)

三、四维度深度对比

3.1 架构设计

维度 LangGraph CrewAI AutoGen
核心抽象 状态图(StateGraph) 角色+任务(Agent+Task) 对话(Conversation)
控制流 显式图定义(节点+边) 声明式(定义角色和任务,框架调度) 对话自然流转
灵活性 ★★★★★ 极细粒度控制 ★★★☆☆ 受限于框架预设 ★★★★☆ 对话式灵活
约束力 ★★★★☆ 强约束,行为可预测 ★★★☆☆ 中等 ★★☆☆☆ 弱约束,涌现性强
状态管理 内置 TypedDict 状态 自动管理(不透明) 对话历史即状态

设计哲学对比

  • LangGraph 是"给你积木,你怎么搭都行"------它只是一个图执行引擎,所有逻辑由你定义。优点是极其灵活,缺点是代码量大、心智负担重。

  • CrewAI 是"给你设置好角色和任务描述,剩下的我来调度"------它封装了常见的协作模式。优点是上手快、代码少,缺点是不够灵活,遇到特殊需求时可能不够用。

  • AutoGen 是"让 Agent 自己聊去吧"------它最小化了人为设计工作流的负担,依赖 Agent 之间的对话涌现来完成任务。优点是自然、适合探索性任务,缺点是不可预测、成本高。

3.2 学习曲线

复制代码
LangGraph:  ████████░░  熟悉图/状态机概念 → 2-3 天上手 → 1-2 周熟练
CrewAI:     ████░░░░░░  配置角色和任务即可 → 半天上手 → 3 天熟练
AutoGen:    ██████░░░░  理解 Agent 对话模式   → 1 天上手 → 1 周熟练

各阶段典型案例量对比

阶段 LangGraph CrewAI AutoGen
第一个 Hello World ~50 行 ~15 行 ~20 行
有意义的 Demo ~200 行 ~50 行 ~80 行
生产可用系统 ~500+ 行 ~150 行 ~200 行

CrewAI 上手最快的原因:它的抽象层最高,你不需要理解"状态图"、"条件边"这些概念,只需要定义 Agent 的角色、目标和任务就可以开始工作。

LangGraph 学习成本最高但回报最大:一旦你掌握了图思考方式,你能构建任何复杂度的工作流,而不会被框架限制。

3.3 功能矩阵

功能 LangGraph CrewAI AutoGen
Tool Use ✅ 原生支持(通过 LangChain 工具生态) ✅ 内置 ✅ 内置
Human-in-the-Loop ✅ 任意节点可中断 ✅ 支持 ✅ 核心特性
记忆/持久化 ✅ 内置 Checkpointer ✅ 内置 Memory ⚠️ 需自行管理
流式输出 ✅ 支持多种流模式 ⚠️ 有限支持 ✅ 支持
并行执行 ✅ 支持(Send API) ⚠️ 有限 ✅ 支持
条件路由 ✅ 核心特性 ❌ 有机规划 ⚠️ 通过对话
图可视化 ✅ Mermaid/PNG ❌ 无 ❌ 无
缓存 ✅ LangChain 缓存 ❌ 无 ❌ 无
异步 ✅ 全异步支持 ⚠️ 部分支持 ✅ 支持
多 LLM 支持 ✅ 任意 LangChain 模型 ✅ 主流模型 ✅ 主流模型

3.4 生产就绪度

维度 LangGraph CrewAI AutoGen
可观测性 LangSmith 集成 有限的日志 有限的日志
错误恢复 图级重试机制 任务级重试 对话级重试
成本追踪 LangSmith 手动 手动
安全性 工具级权限控制 Agent 级 代码执行沙箱
部署方案 LangGraph Cloud / 自部署 自部署 自部署
生产案例 Elastic、LinkedIn、Uber 中小企业较多 微软内部 + 外部
API 稳定性 ★★★★☆ ★★★☆☆(API 变动频繁) ★★★★☆

生产环境选型的关键考量

python 复制代码
# LangGraph 的生产优势:精细的容错控制
workflow.add_node("api_call", api_node, retry=RetryPolicy(
    max_attempts=3,
    initial_interval=1.0,
    backoff_factor=2,
))

# 每个节点都可以独立监控
workflow.add_node("critical_step", critical_node, 
    tags=["production", "pii_handling"]
)

四、场景化选型建议

场景 1:构建企业内部 RAG 问答系统

推荐:LangGraph

理由:RAG 需要精细的流程控制(检索 → 评估相关性 → 重写查询 → 再次检索 → 生成),LangGraph 的条件路由最适合这种"根据中间结果决定下一步"的场景。

python 复制代码
# RAG 的路由非常适合 LangGraph 的条件边
def route_after_retrieval(state):
    if state["relevance_score"] > 0.8:
        return "generate_answer"
    elif state["relevance_score"] > 0.5:
        return "rewrite_query"
    else:
        return "web_search"

场景 2:自动化市场调研报告生成

推荐:CrewAI

理由:这是一个典型的多角色协作任务(研究员 → 分析师 → 撰稿人),CrewAI 的角色扮演模型天然契合。不需要精细的流程控制,需要的是让 Agent 自然地分工协作。

场景 3:需要频繁人机交互的代码助手

推荐:AutoGen

理由:AutoGen 的 Human-in-the-loop 设计是最自然的------它允许 Agent 在执行到关键步骤时暂停并询问人类。写入文件前、执行危险命令前、关键决策点,都可以自动触发人工确认。

python 复制代码
# AutoGen 的人机交互很自然
user_proxy = UserProxyAgent(
    name="开发者",
    human_input_mode="ALWAYS",  # 每步都询问
    code_execution_config={
        "work_dir": "workspace",
        "use_docker": True,     # 安全隔离
    }
)

场景 4:金融风控决策流程

推荐:LangGraph

理由:金融场景要求流程的每一步都可审计、可解释、可重放。LangGraph 的显式状态图让每一步决策都有迹可循,且内置的 Checkpointer 可以完整记录状态变更历史。

场景 5:快速原型验证

推荐:CrewAI → 确认方向后迁移到 LangGraph

理由:创业团队或探索性项目,先用 CrewAI 几天内搭出可用原型。验证可行性后,如果需要更精细的控制(更好的性能、更低的成本、更可靠的输出),再用 LangGraph 重写。

选型决策树

复制代码
你需要构建一个 Agent 系统
│
├─ 团队有状态机/图编程经验?
│   └─ 是 → LangGraph
│
├─ 需要极度精细的流程控制?
│   └─ 是 → LangGraph
│
├─ 任务是典型的多角色协作?
│   └─ 是 → CrewAI
│
├─ 需要频繁的人机交互?
│   └─ 是 → AutoGen
│
├─ 快速原型,几天内要 Demo?
│   └─ 是 → CrewAI
│
└─ 生产系统,需要可观测性?
    └─ 是 → LangGraph









需要精细流程控制?
LangGraph
典型多角色协作?
CrewAI
频繁人机交互?
AutoGen
快速原型验证?
CrewAI → 后续迁移 LangGraph
LangGraph

生产首选

图:Agentic 框架选型决策树------根据需求找到最适合的框架

五、实战对比:用三个框架实现同一任务

为了给你一个直观感受,我们用三个框架实现同一个简单任务------"查询天气,如果下雨则建议带伞,否则建议出门散步"。

5.1 LangGraph 实现

python 复制代码
from langgraph.graph import StateGraph, END
from typing import TypedDict

class WeatherState(TypedDict):
    city: str
    weather: str
    suggestion: str

def get_weather(state):
    # 模拟 API 调用
    weather = "下雨" if "北京" in state["city"] else "晴天"
    return {"weather": weather}

def decide_suggestion(state):
    if "雨" in state["weather"]:
        suggestion = "今天下雨,建议带伞出门"
    else:
        suggestion = "天气不错,建议出门散步"
    return {"suggestion": suggestion}

workflow = StateGraph(WeatherState)
workflow.add_node("get_weather", get_weather)
workflow.add_node("suggest", decide_suggestion)
workflow.add_edge("get_weather", "suggest")
workflow.add_edge("suggest", END)
workflow.set_entry_point("get_weather")

app = workflow.compile()
result = app.invoke({"city": "北京"})
print(result["suggestion"])

5.2 CrewAI 实现

python 复制代码
from crewai import Agent, Task, Crew

weather_agent = Agent(
    role="天气查询助手",
    goal="查询指定城市的天气,并根据天气给出活动建议",
    backstory="你是一个贴心的生活助手,善于根据天气给出合理的出行建议",
)

task = Task(
    description="查询北京的天气。如果下雨建议带伞,否则建议出门散步。",
    agent=weather_agent,
    expected_output="一句话的天气查询结果和活动建议",
)

crew = Crew(agents=[weather_agent], tasks=[task])
result = crew.kickoff()

5.3 AutoGen 实现

python 复制代码
from autogen import AssistantAgent, UserProxyAgent

assistant = AssistantAgent(
    name="天气助手",
    system_message="你是天气查询助手。查询天气后给出活动建议。下雨→带伞,晴天→散步。",
)

user = UserProxyAgent(
    name="用户",
    human_input_mode="NEVER",
)

user.initiate_chat(
    assistant,
    message="查询北京的天气,给出活动建议",
)

5.4 代码量对比

框架 代码行数 核心概念数
LangGraph ~25 行 StateGraph, State, Node, Edge, EntryPoint
CrewAI ~12 行 Agent, Task, Crew
AutoGen ~10 行 AssistantAgent, UserProxyAgent, Chat

但要注意:代码量少不代表简单。当任务变得复杂时,LangGraph 的代码量增长是线性的,而 CrewAI 和 AutoGen 可能因为框架限制而需要更复杂的 workaround。

六、其他值得关注的框架

除了三大框架,还有一些特定场景下有优势的框架:

框架 特点 适合谁
Dify 可视化拖拽、低代码 非技术用户、快速原型
Coze(字节) 一站式、对接多平台 需要快速部署到飞书/微信
Semantic Kernel(微软) C#/Java 原生支持 .NET 技术栈团队
Agno 轻量级(~5000 行核心代码) 追求极简的开发者
Smolagents(HuggingFace) 开源、HuggingFace 生态 偏好开源的团队

七、总结

一句话总结

框架 一句话
LangGraph 如果你需要完全掌控工作流的每个细节,选它
CrewAI 如果你想用最少的代码让多个 Agent 协作起来,选它
AutoGen 如果你希望 Agent 之间通过对话自然协作,且需要频繁人机交互,选它

核心建议

  1. 不要过早优化框架选型------先用最简单的方案验证你的 Agent 想法是否可行,再根据实际痛点选择框架
  2. LangGraph + CrewAI 可以混合使用------在 LangGraph 图中的一个节点里调用 CrewAI 的 Crew,或者反过来
  3. 关注框架的 API 稳定性------Agent 框架还处于快速演进期,升级版本可能会破坏现有代码。做好版本锁定和测试
  4. 框架只是工具------更重要的还是你对 Agentic Workflow 设计模式的理解(见本系列第三篇)。一个设计良好的工作流,即使裸写也比一个糟糕的框架用法效果好

在本系列最后一篇文章中,我们将聊聊把 Agentic Workflow 真正部署到生产环境时你会遇到的那些坑------以及怎么填。

相关推荐
AI原来如此9 小时前
我用AI Agent做产品设计,省了20小时原型时间
人工智能·ai·大模型·ai编程
AI医影跨模态组学9 小时前
eClinMed 中国人民解放军总医院第五医学中心介入超声科:基于超声的可解释性机器学习模型用于≤3cm肝细胞癌分类的开发与验证
人工智能·深度学习·论文·医学·医学影像·影像组学
心中有国也有家9 小时前
CANN 算子开发完全指南——从 TBE DSL 到算子上线全流程
人工智能·经验分享·笔记·分布式·算法
Upsy-Daisy9 小时前
OpenClaw 源码解析(三):仓库目录结构解析
人工智能
godspeed_lucip9 小时前
LLM和Agent——专题3: Agentic Workflow 入门(2)
网络·人工智能·python
bloxed9 小时前
【AI大模型--NumPy-05】统计分析实战指南
人工智能·numpy
mingshili9 小时前
[Python] Python中自带模块级的单例模式-不需要定义单例类
python·单例模式
Mr数据杨9 小时前
【CanMV K210】传感器实验 烟雾传感器 AO/DO 双路检测与蜂鸣器报警
人工智能·硬件开发·canmv k210
码云骑士9 小时前
Codex 安装与 VS Code 联动:打造 AI 编程新体验
人工智能