第1章 多智能体框架概览¶
学习目标¶
- 掌握 CrewAI、AutoGen、LangChain Multi-Agent、LangGraph 四大主流框架的核心设计理念
- 理解角色(Role)、任务(Task)、流程(Process)三大核心概念在不同框架中的映射
- 能够依据任务复杂度、可控性要求、团队技术栈进行框架选型
- 使用 CrewAI 快速搭建一个可运行的多智能体协作示例
- 识别各框架在 token 成本、可观测性、可扩展性上的权衡
问题导入¶
某金融科技公司需要构建一个"投研报告自动化"系统,涉及行业分析、财务解读、风控评估、报告撰写四个职能。团队评估了多个框架:CrewAI 上手快但流程表达力有限;AutoGen 群聊灵活但难控;LangGraph 控制力强但学习曲线陡;LangChain Multi-Agent 与既有 LangChain 生态贴合但抽象层较重。究竟该如何取舍?框架选型不仅影响开发效率,更决定了系统上线后的可维护性与可扩展性。本章将系统对比主流多智能体框架,帮助你在选型时做到"心中有数"。
核心概念¶
1. 四大主流框架对比¶
| 框架 | 出品方 | 核心抽象 | 流程表达 | 上手难度 | 适用场景 |
|---|---|---|---|---|---|
| CrewAI | CrewAI Inc. | Crew + Agent + Task | 顺序/层级(Hierarchical) | 低 | 角色明确的协作流水线 |
| AutoGen | Microsoft | ConversableAgent + GroupChat | 对话驱动、群聊 | 中 | 研究、多轮讨论、代码执行 |
| LangChain Multi-Agent | LangChain | AgentExecutor + LangGraph 编排 | 基于链与图 | 中 | 与 LangChain 生态深度集成 |
| LangGraph | LangChain | StateGraph + Node + Edge | 显式状态图、循环、分支 | 高 | 复杂流程、需精细控制 |
2. 核心概念映射¶
角色(Role):每个 Agent 承担的职责身份。CrewAI 用 role 字段显式定义;AutoGen 通过 system_message 描述;LangGraph 中角色由节点函数的职责体现。
任务(Task):Agent 需完成的工作单元。CrewAI 的 Task 对象有 description 与 expected_output;AutoGen 把任务隐含在对话发起消息中;LangGraph 把任务拆解为图节点。
流程(Process):Agent 间的执行顺序与数据流。CrewAI 支持 sequential 与 hierarchical;AutoGen 用 GroupChat 的发言规则控制;LangGraph 通过图的边与条件分支精确控制。
3. 框架设计哲学¶
- CrewAI:以"团队角色"为第一公民,模拟人类团队协作,强调易用性与默认行为的合理性。
- AutoGen:以"对话"为核心,Agent 通过多轮对话协同,研究友好、可执行代码。
- LangGraph:以"状态机"为核心,把多 Agent 协作建模为带状态的有向图,强调可控、可回放、可调试。
- LangChain Multi-Agent:基于 LangChain 的 LCEL 与 LangGraph,提供与 LangChain 工具、检索器无缝集成的多 Agent 编排能力。
4. 框架选型决策¶
选 CrewAI 当:任务可清晰拆为线性/层级角色流水线,团队希望快速出原型,对底层控制要求不高。
选 AutoGen 当:任务需要多 Agent 自由讨论、代码执行与多轮迭代,偏研究探索场景。
选 LangGraph 当:流程含条件分支、循环、人工介入(human-in-the-loop),需可观测、可回放、可恢复。
选 LangChain Multi-Agent 当:团队已深度使用 LangChain 的工具/检索器,希望复用既有资产。
5. 适用场景速查¶
| 场景 | 推荐框架 | 理由 |
|---|---|---|
| 内容生产流水线(调研→撰写→校对) | CrewAI | 角色清晰、顺序明确 |
| 多 Agent 研讨开放问题 | AutoGen | 群聊机制天然适合 |
| 复杂审批/人工介入流程 | LangGraph | 状态图支持中断与恢复 |
| 集成既有 LangChain RAG | LangChain Multi-Agent | 复用检索器与工具 |
| 软件研发流水线(PM→Dev→Test→Review) | CrewAI / LangGraph | 角色明确,可选层级或图 |
| 客服多 Agent 路由 | LangGraph | 条件分支清晰 |
原理图¶
flowchart TB
subgraph CrewAI[CrewAI 角色驱动]
C1[Agent: 研究员] --> C2[Agent: 撰稿人]
C2 --> C3[Agent: 校对]
end
subgraph AutoGen[AutoGen 对话驱动]
A1[Agent X] <--> A2[GroupChat Manager]
A3[Agent Y] <--> A2
A4[Agent Z] <--> A2
end
subgraph LangGraph[LangGraph 状态图驱动]
L1[Start] --> L2{路由节点}
L2 -->|分支A| L3[Agent A]
L2 -->|分支B| L4[Agent B]
L3 --> L5[汇总]
L4 --> L5
L5 --> L6[End]
end
subgraph LangChain[LangChain 编排]
LC1[LCEL Chain] --> LC2[AgentExecutor]
LC2 --> LC3[LangGraph SubGraph]
end
图:四大主流多智能体框架的核心协作模式对比
示例代码¶
使用 CrewAI 快速搭建"调研 + 撰写"两 Agent 协作,并切换为层级流程演示主管分派。
import os
from crewai import Agent, Task, Crew, Process
os.environ.setdefault("OPENAI_API_KEY", "sk-xxx")
def build_crew(topic: str, hierarchical: bool = False) -> Crew:
"""构建调研+撰写 Crew。
Args:
topic: 调研主题。
hierarchical: 是否使用层级流程(由主管分派)。
"""
researcher = Agent(
role="资深研究员",
goal=f"围绕 '{topic}' 收集 3 条关键事实",
backstory="你擅长快速检索与归纳,输出结构化要点。",
allow_delegation=False,
)
writer = Agent(
role="技术撰稿人",
goal="基于研究要点撰写 200 字科普短文",
backstory="你擅长把技术内容转化为通俗中文。",
allow_delegation=False,
)
manager = Agent(
role="内容主管",
goal="协调研究员与撰稿人,按时交付高质量短文",
backstory="你是资深内容主编,擅长分工与质量把关。",
allow_delegation=True,
)
research_task = Task(
description=f"调研主题:{topic},输出 3 条关键事实。",
expected_output="包含 3 条事实的要点列表",
agent=researcher,
)
write_task = Task(
description="根据研究要点写一段 200 字科普短文。",
expected_output="一段通顺的中文科普短文",
agent=writer,
context=[research_task],
)
if hierarchical:
# 层级流程:manager 自动分派任务给合适的 Agent
return Crew(
agents=[manager, researcher, writer],
tasks=[research_task, write_task],
process=Process.hierarchical,
manager_agent=manager,
)
return Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
process=Process.sequential,
)
if __name__ == "__main__":
crew = build_crew("多智能体框架对比", hierarchical=False)
result = crew.kickoff()
print("最终产出:\n", result)
AutoGen 群聊对比示例:
import os
from autogen import AssistantAgent, UserProxyAgent, GroupChat, GroupChatManager
os.environ.setdefault("OPENAI_API_KEY", "sk-xxx")
config_list = [{"model": "gpt-4o-mini", "api_key": os.environ["OPENAI_API_KEY"]}]
researcher = AssistantAgent(
"researcher",
system_message="你是研究员,负责收集事实。",
llm_config={"config_list": config_list},
)
writer = AssistantAgent(
"writer",
system_message="你是撰稿人,基于事实写短文。",
llm_config={"config_list": config_list},
)
user = UserProxyAgent("user", human_input_mode="NEVER", code_execution_config=False)
groupchat = GroupChat(agents=[user, researcher, writer], messages=[], max_round=6)
manager = GroupChatManager(groupchat=groupchat, llm_config={"config_list": config_list})
user.initiate_chat(manager, message="请围绕'多智能体框架对比'调研并写一段 200 字短文。")
企业案例¶
案例 1:某券商投研系统的框架选型¶
某券商投研团队需要自动化生成行业研报。初期用 AutoGen 群聊,发现 Agent 发言顺序难控、token 浪费严重。后改用 CrewAI 的层级流程,由"研究主管"Agent 统筹行业、财务、风控三个子 Agent,最终汇总。改版后单篇研报 token 成本下降 40%,产出质量更稳定。
案例 2:电商客服的 LangGraph 选型¶
某电商平台客服系统需根据用户问题路由到售前/售后/退款 Agent,并支持人工接管。团队选择 LangGraph,用条件边实现路由,用 interrupt 实现人工介入。相比 CrewAI,LangGraph 的状态图让"路由→执行→必要时人工→回到 Agent"的流程可视化、可回放,故障排查效率提升 50%。
案例 3:研发团队的 LangChain 生态复用¶
某团队已有成熟的 LangChain RAG 知识库与工具集。新建多 Agent 系统时,选择 LangChain Multi-Agent(基于 LangGraph 编排),直接复用既有检索器与工具,省去重新封装成本,2 周内完成上线。
常见问题¶
Q1:CrewAI 和 LangGraph 哪个更适合生产环境? A:取决于可控性需求。CrewAI 适合流程相对固定的场景,开发快;LangGraph 适合需要分支、循环、人工介入的复杂流程,可观测性与可恢复性更强,更适合关键生产链路。
Q2:AutoGen 的群聊会不会很贵?
A:会。群聊中每个 Agent 都会看到所有历史消息,token 随轮次平方级增长。建议设置 max_round、用小模型承担非关键 Agent、或改用 AutoGen 的 Manager 显式控制发言。
Q3:能不能混用多个框架? A:可以但需谨慎。常见做法是把 LangGraph 作为顶层编排,内部子任务用 CrewAI 或 AutoGen 实现。混用会增加依赖复杂度,需统一日志与错误处理。
Q4:框架升级会不会破坏既有代码? A:CrewAI 与 AutoGen 都经历过较大版本变更(如 CrewAI 0.4→0.5 API 变动)。建议锁定版本、编写集成测试,并在升级前查阅迁移指南。
面试题¶
1. 对比 CrewAI、AutoGen、LangGraph 三者的核心抽象与适用场景。 参考答案:CrewAI 以"角色 + 任务"为核心,适合线性/层级流水线;AutoGen 以"对话 + 群聊"为核心,适合多轮研讨与代码执行;LangGraph 以"状态图"为核心,适合含分支、循环、人工介入的复杂流程。选型需权衡开发效率、可控性与可扩展性。
2. 为什么 LangGraph 更适合生产环境的关键链路? 答题要点:显式状态图让流程可可视化、可回放、可恢复;支持条件边与中断;状态持久化便于断点续跑;与 LangSmith 集成提供全链路追踪。
3. 多 Agent 框架的 token 成本主要来自哪里?如何优化? 参考答案:主要来自 Agent 间消息传递与上下文累积。优化手段:职责单一化、上下文最小化、简单 Agent 用小模型、群聊限制轮次、缓存中间结果、必要时回到单 Agent。
练习题¶
- 框架对比实操:用 CrewAI 与 LangGraph 分别实现"调研→撰写→校对"三 Agent 流水线,对比代码量、可观测性与产出质量,写一份对比报告。
- 选型设计:为"自动化合同审查"场景(含法务审查、风险提示、人工复核)选择框架并说明理由,画出架构图。
- 思考题:如果一个任务既需要自由讨论又需要严格审批,如何在一个系统中融合 AutoGen 的群聊与 LangGraph 的状态机?
小结¶
多智能体框架各有侧重:CrewAI 重角色与易用、AutoGen 重对话与探索、LangGraph 重状态与控制、LangChain Multi-Agent 重生态复用。选型应从任务特征、可控性需求、团队技术栈出发,避免"为用而用"。框架是脚手架,真正决定系统成败的是角色设计、通信协议与成本控制——这些将在后续章节深入。延伸阅读:CrewAI 官方文档、AutoGen 论文《AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation》、LangGraph 文档。