多智能体(Multi-Agent)系统正在成为 AI 应用的核心架构。面对 AutoGen、CrewAI、LangGraph 三大主流框架,到底该选哪个?本文从实战角度深度对比,附完整代码示例。
1. 为什么要关注多智能体框架?
单个大模型 API 调用已经不能满足复杂业务需求了:
- 任务太复杂:一个 Prompt 搞不定端到端流程
- 需要分工:代码生成、测试、Review 需要不同角色
- 需要协作:多个 AI “员工” 相互配合完成项目
这就是多智能体框架的价值——让多个 AI Agent 像真实团队一样协作。
2. 三大框架核心定位
| 框架 | 开发者 | 核心定位 | 适合场景 |
|---|---|---|---|
| AutoGen | 微软 | 对话驱动的多Agent协作 | 研究原型、快速验证 |
| CrewAI | CrewAI Inc | 角色驱动的Agent团队 | 业务流程自动化 |
| LangGraph | LangChain团队 | 图状流程编排 | 复杂状态机、生产级应用 |
3. AutoGen 实战:对话驱动的协作
3.1 安装
pip install pyautogen==0.2.32
3.2 代码示例:代码审查场景
import autogen
# 配置大模型
config_list = [
{
"model": "gpt-4o",
"api_key": "你的OpenAI API Key",
}
]
# 创建两个Agent
coder = autogen.AssistantAgent(
name="Coder",
llm_config={"config_list": config_list},
system_message="你是一位资深Python开发者,负责编写高质量代码。"
)
reviewer = autogen.AssistantAgent(
name="Reviewer",
llm_config={"config_list": config_list},
system_message="你是一位严格的代码审查专家,负责发现代码中的问题。"
)
# 创建用户代理(代理人类角色)
user_proxy = autogen.UserProxyAgent(
name="User",
human_input_mode="NEVER", # 无需人类干预
max_consecutive_auto_reply=3,
)
# 启动对话
user_proxy.initiate_chat(
coder,
message="写一个Python函数,用快排算法对列表进行排序,并添加单元测试。"
)
运行效果:Coder 写代码 → Reviewer 审查 → Coder 修改 → 循环直到通过
3.3 AutoGen 优缺点
✅ 优点:
– 上手快,几行代码就能跑起来
– 对话历史自动管理
– 支持人类干预(human-in-the-loop)
❌ 缺点:
– 流程控制不够精细
– 生产环境部署复杂
– 社区活跃度不如 LangChain 生态
4. CrewAI 实战:角色驱动的团队
4.1 安装
pip install crewai==0.28.0
4.2 代码示例:市场调研报告生成
from crewai import Agent, Task, Crew, Process
from langchain_openai import ChatOpenAI
# 初始化大模型
llm = ChatOpenAI(model="gpt-4o", temperature=0.7)
# 定义Agent角色
researcher = Agent(
role='市场调研专家',
goal='深入调研目标行业的竞争格局和趋势',
backstory='你拥有10年市场研究经验,擅长数据分析和竞品对比。',
llm=llm,
verbose=True
)
writer = Agent(
role='技术内容撰写',
goal='将调研结果转化为高质量的技术分析报告',
backstory='你是资深技术博主,擅长将复杂信息整理成易读的Markdown文档。',
llm=llm,
verbose=True
)
# 定义Task
research_task = Task(
description='调研2026年中国云计算市场的竞争格局,重点关注腾讯云、阿里云、华为云的产品差异和定价策略。',
expected_output='一份包含市场份额、产品对比、定价分析的详细调研报告(1000字以上)',
agent=researcher
)
write_task = Task(
description='基于调研报告,撰写一篇面向企业的云服务选型指南,包含决策框架和成本对比。',
expected_output='一篇2000字的技术选型指南,包含Markdown对比表格和 actionable 建议',
agent=writer
)
# 组建Crew(团队)
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
process=Process.sequential, # 顺序执行
verbose=True
)
# 启动!
result = crew.kickoff()
print(result)
4.3 CrewAI 优缺点
✅ 优点:
– 角色定义清晰,符合人类团队协作直觉
– 支持顺序/并行/层级等多种流程
– 输出质量高(因为角色分工明确)
❌ 缺点:
– 灵活度不如 LangGraph(流程是预设的)
– 需要单独学习 CrewAI 的概念体系
– 大模型调用次数多,成本较高
5. LangGraph 实战:图状流程编排
5.1 安装
pip install langgraph==0.0.40 langchain_openai==0.0.5
5.2 代码示例:带条件分支的RAG系统
from langchain_openai import ChatOpenAI
from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated, Sequence
import operator
# 定义状态结构
class AgentState(TypedDict):
messages: Annotated[Sequence[str], operator.add]
next_step: str
final_answer: str
# 初始化模型
llm = ChatOpenAI(model="gpt-4o")
# 创建状态图
workflow = StateGraph(AgentState)
# 定义节点
def retrieve(state):
"""模拟知识库检索"""
print("🔍 正在检索知识库...")
state["messages"].append("找到3篇相关文档")
state["next_step"] = "analyze"
return state
def analyze(state):
"""分析检索结果,决定是否需要补充检索"""
print("🧠 分析检索结果...")
# 模拟:50%概率需要补充检索
if len(state["messages"]) < 5:
state["next_step"] = "retrieve" # 回到检索
else:
state["next_step"] = "generate"
return state
def generate(state):
"""生成最终答案"""
print("✍️ 生成答案...")
state["final_answer"] = "基于检索到的5篇文档,答案是..."
state["next_step"] = END
return state
# 添加节点
workflow.add_node("retrieve", retrieve)
workflow.add_node("analyze", analyze)
workflow.add_node("generate", generate)
# 设置入口
workflow.set_entry_point("retrieve")
# 添加边(流程)
workflow.add_edge("retrieve", "analyze")
workflow.add_conditional_edges(
"analyze",
lambda state: state["next_step"], # 根据状态决定下一个节点
)
workflow.add_edge("generate", END)
# 编译
app = workflow.compile()
# 运行
result = app.invoke({
"messages": [],
"next_step": "retrieve",
"final_answer": ""
})
print(result["final_answer"])
5.3 LangGraph 优缺点
✅ 优点:
– 流程控制最精细(支持循环、条件分支、并行)
– 状态管理清晰(TypeScript风格的类型定义)
– 生产级部署支持好(LangGraph Cloud)
❌ 缺点:
– 学习曲线陡峭(需要理解状态图概念)
– 代码量相对较大
– 调试相对复杂
6. 2026 年怎么选?决策矩阵
| 考量维度 | AutoGen | CrewAI | LangGraph |
|---|---|---|---|
| 上手难度 | ⭐ 简单 | ⭐⭐ 中等 | ⭐⭐⭐ 较难 |
| 流程灵活度 | ⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| 生产就绪 | ⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 社区生态 | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 适合阶段 | 原型验证 | MVP打磨 | 生产部署 |
选型建议
- 研究/学习 → 选 AutoGen,最快看到效果
- 业务流程自动化 → 选 CrewAI,角色分工清晰
- 复杂生产系统 → 选 LangGraph,流程可控、可观测
7. 实战踩坑笔记
坑1:Token消耗失控
多Agent系统的最大成本是对话轮次。AutoGen 的 max_consecutive_auto_reply 一定要设限,否则两个Agent会聊到天荒地老。
# 正确做法:设置最大轮次 + 超时
user_proxy = autogen.UserProxyAgent(
max_consecutive_auto_reply=5, # 最多5轮
code_execution_config={"timeout": 60} # 代码执行超时60秒
)
坑2:Agent角色定义模糊
CrewAI 中,如果 backstory 写得不清晰,两个Agent会”抢活干”。一定要在 goal 中明确输入输出。
坑3:LangGraph状态设计复杂
状态结构(TypedDict)要尽量扁平,不要嵌套太深。否则 operator.add 等归并逻辑会很难写。
8. 总结
2026 年,多智能体框架已经从”炫技”走向”实用”:
- AutoGen:适合快速验证想法,学术风浓厚
- CrewAI:最适合业务流程自动化,角色分工直观
- LangGraph:生产级应用的首选,灵活度最高但学习成本也最高
如果你的场景是企业内部自动化(比如自动生成日报、自动审查PR),我建议从 CrewAI 起步;如果要构建复杂AI产品,直接上 LangGraph。
👤 作者简介
一枚在大中原腹地(河南)卖公有云的从业者,主营腾讯云/阿里云/火山云,曾踩坑无数,现专注AI大模型应用落地。关注公众号「公有云cloud」,围观AI前沿动态~
博客:y1cloud.cn
