
本文收录于专栏 《AI Agent原理与实战》2026版 —— 专栏系统覆盖 AI Agent 的记忆、工具、插件与实战,点击订阅可跟踪后续更新。
本课定位:编排思想在四个框架里的不同实现:AutoGen 的 Team、MetaGPT 的 SOP 流水线、CrewAI 的角色声明、OpenAI Agents SDK 的 subagents。同一任务两框架实现对比后你会发现:框架差异小于思想差异,选型看团队口味与生态。
阶段 4|多智能体系统 | 来源:【补】+ 微软第 8 课模式语言 + AutoGen 官方架构
关键字: AutoGen、MetaGPT、CrewAI、多Agent框架横评、协作抽象、角色分工、框架对比、选型建议
本节目录
- 23.1 横评总表
- 23.2 各框架的协作抽象拆解
- 23.3 AutoGen / AG2:Team 为中心的可编程协作
- 23.4 MetaGPT:把人类 SOP 编码进流水线
- 23.5 CrewAI:角色直觉 + 声明式配置
- 23.6 OpenAI Agents SDK:薄层 + agents-as-tools
- 23.7 token 与协调复杂度的账
- 23.8 版本 A:CrewAI hierarchical(Supervisor 形态)
- 23.9 版本 B:OpenAI Agents SDK agents-as-tools(Orchestrator-Worker 形态)
概念讲解
23.1 横评总表
先给结论级对比(版本核自 PyPI,检索日 2026-10-01;Star 数为约数,随时间漂移):
| 版本(PyPI) | 0.7.5(2025-09-30) | 0.8.2(2025-03-09) | 1.15.23(2026-09-28) | 0.22.3(2026-09-17,包名 openai-agents) |
| 出品方 | 微软研究 → 社区 AG2 延续 | FoundationAgents(DeepWisdom) | CrewAI Inc. | OpenAI |
| 核心抽象 | Agent + Team(RoundRobinGroupChat / SelectorGroupChat / Swarm / GraphFlow / Magentic-One) | 角色 + SOP 流水线(产品经理→架构师→工程师→QA) | Crew = Agents + Tasks + Process | Agent + Handoff + agents-as-tools |
| 协作模型 | 共享上下文的群聊/图流转 | 预定义流程的瀑布 | 流程制:sequential / hierarchical | 编排者把子 Agent 包成工具调用 |
| 抽象层级 | 中高(两层:AgentChat 高层 / autogen-core 事件驱动底层) | 高(一行需求出全套文档+代码) | 中(声明式配置,角色直觉) | 低(薄层,贴近裸 API) |
| 可控性 | 高(Selector 可定制、core 层可完全自控) | 低(SOP 固定,改流程=改框架假设) | 中高(回调/钩子丰富) | 高(循环在你手里) |
| 学习曲线 | 陡(概念多、版本断代) | 中(概念少但黑盒) | 平缓(最快上手) | 平缓(会工具调用就会) |
| 独立模型 | 任意(OpenAI 兼容) | 任意 | 任意 | 任意(LiteLLM 生态) |
| 生态活跃度 | 高(微软+社区双轨,2026 活跃) | 中(仓库 ~70K star,发布节奏放缓) | 高(1.x 稳定线 + 商业平台) | 高(OpenAI 主推,迭代快) |
三点版本背景说明(检索日核实): ① AutoGen 0.2 → 0.4 是架构级重写(事件驱动、可观测、可伸缩),老代码不兼容;0.4 后微软官方节奏放缓,社区 fork AG2(ag2.ai)接棒活跃开发,两者 API 高度同源——选型时把 AG2 视为 AutoGen 的"现行主线"更符合实态。 ② MetaGPT 团队重心已转向产品 MGX(MetaGPT X),框架本身 2025-03 后无新版。 ③ CrewAI 走"开源框架 + 商业平台"双轨,框架 1.x 是稳定线。
23.2 各框架的协作抽象拆解
拆解前先立坐标: 微软第 8 课的三种参考模式(微软·8)——Group chat(共享消息流群聊)、Hand-off(预定义规则移交)、Collaborative filtering(多专家协作推荐)——是理解四家框架差异的最短路径:每家框架本质上都是把这三件事(外加编排与状态管理)封装成了自己的抽象。 下面逐个看它们各自的封装方式。 
23.3 AutoGen / AG2:Team 为中心的可编程协作
AutoGen 的世界观:Agent 是有预设行为的对话体,Team 是多 Agent 设计模式的载体。AgentChat(高层 API)内置了第 21 课拓扑的大部分:
- RoundRobinGroupChat:固定轮转(pipeline 式)
- SelectorGroupChat:由一个可定制的 selector(LLM 或函数)决定下一个发言者(supervisor 式,中央集权)
- Swarm:Agent 通过 handoff 在共享上下文里移交控制权(去中心化式)
- GraphFlow:有向图编排(显式 DAG)
- Magentic-One:微软的通用多 Agent 应用参考实现(含网页浏览、文件操作)
用微软第 8 课的模式语言读这份清单(微软·8):RoundRobinGroupChat/SelectorGroupChat 是 Group chat 模式的代码化(前者规则轮转、后者中央路由),Swarm 是 Hand-off 模式的代码化(Agent 间直接移交),GraphFlow 则把"多 Agent 模式选择"(微软·8 构建块五)做成显式 DAG 由你完全定义——微软课程讲的模式与微软自研框架的抽象一一对应并非巧合:AutoGen 正是这门课推荐资源里的 Microsoft Agent Framework 的姊妹项目(微软·8 Additional resources)。
需要更细控制时下到 autogen-core:事件驱动、Actor 模型,消息路由完全自控。这个"高层模式 + 底层自控"的双层设计是 AutoGen 最独特的资产。
23.4 MetaGPT:把人类 SOP 编码进流水线
MetaGPT 的核心主张(arXiv:2308.00352):让 Agent 少犯"幻觉式协作"错误的方法,是把**人类软件公司的标准作业程序(SOP)**显式编码进系统——产品经理 Agent 产出 PRD → 架构师 Agent 产出系统设计 → 工程师 Agent 写代码 → QA Agent 审查。每个角色有固定的输入/输出产物(结构化文档),流水线自动流转。 它证明了一件事:预定义的制品化流程能把多 Agent 的输出从闲聊提升到工程交付物。代价是流程刚性——SOP 假设你在做"软件开发"这件事,改流程等于改框架的骨架假设。研究/开放探索类任务不是它的主场。
23.5 CrewAI:角色直觉 + 声明式配置
CrewAI 的抽象最贴近"招一支团队"的直觉:Agent(角色+目标+背景故事)、Task(分配给 Agent 的工作单元)、Crew(编队,声明 Process 模式:sequential 顺序执行 / hierarchical 由 manager Agent 调度——即第 22 课的 Supervisor)。 三件套全部声明式配置,上手最快;钩子/回调体系完善,适合快速把业务流程原型化。注意 hierarchical 模式本质就是内置 manager 的 supervisor 模式,token 结构与第 22 课分析一致。
23.6 OpenAI Agents SDK:薄层 + agents-as-tools
SDK 的多 Agent 有两条路(官方文档明确区分): handoffs(Agent 间移交对话控制权,适合分工明确的路由,如客服转技术支持——即微软 Hand-off 模式的直译,微软·8)与 agents-as-tools(把子 Agent 包成工具给主 Agent 调用,子 Agent 拿独立上下文干活、返回结果——这正是第 22 课 Orchestrator-Worker 的官方形态,也接近微软 Collaborative filtering 模式"多专家各出一判断再合成"的结构(微软·8))。加上 guardrails(输入输出校验)和 tracing 内建,它是"框架够薄、模式自选"的代表:不会替你决定协作结构,但把 handoff/工具包装/追踪的样板都做好了。
23.7 token 与协调复杂度的账
框架不改变第 22 课的成本物理:多 Agent 系统仍要烧 ~15× token。但框架在三个地方影响成本结构:
选型口径(按场景倒推):
| 快速原型、非工程师协作 | CrewAI | 上手最快、声明式 |
| 需要完全自控协作结构、研究型系统 | OpenAI Agents SDK(agents-as-tools)或裸写 | 薄层不挡路,第 22 课模式直接落地 |
| 复杂图状流程、事件驱动集成 | AutoGen/AG2(core 层) | 双层设计的底层自由度 |
| 一行需求出软件交付物 | MetaGPT | SOP 流水线无可替代(限软件开发域) |
| 不确定要不要多 Agent | 先单 Agent + Skills(第 21 课清单) | 框架不会帮你省 token |
案例实战:同一任务在两个框架下的实现对比
- 目标:任务"调研 X 主题并写摘要"用 CrewAI(hierarchical = Supervisor 模式) 与 OpenAI Agents SDK(agents-as-tools = Orchestrator-Worker 模式) 各实现一遍,对照第 22 课两种编排模式在框架里的真实形态。两个版本均已用国产模型实测跑通(2026-10-01),LLM 全部走 DeepSeek。
- 运行环境:Windows 10/11 / macOS / Linux;Python ≥ 3.10。依赖:版本 A pip install "crewai>=1.15"(会经 LiteLLM 生态装入大量依赖,建议独立虚拟环境);版本 B pip install "openai-agents>=0.22"(轻量)。key 设置同第 21 课。
23.8 版本 A:CrewAI hierarchical(Supervisor 形态)
# CrewAI hierarchical supervisor【已实测——2026-10 于 Linux (Ubuntu 22.04, Python 3.10,
# crewai 1.15.23 + deepseek-chat) 端到端跑通, manager 完成 2 次任务分派】
# 依赖:pip install "crewai>=1.15";LLM 经 LiteLLM 生态接 DeepSeek
import os
from crewai import Agent, Task, Crew, Process, LLM
llm = LLM(
model="deepseek/deepseek-chat", # <provider>/<model> 格式走 LiteLLM
api_key=os.environ.get("DEEPSEEK_API_KEY", "YOUR_API_KEY"),
base_url="https://api.deepseek.com",
)
researcher = Agent(
role="研究员",
goal="收集主题的关键事实与来源",
backstory="资深研究员, 只回传带来源的压缩发现",
llm=llm,
allow_delegation=False,
max_iter=10, # 失控防控: 单 Agent 迭代上限 (CrewAI 默认 20)
)
writer = Agent(
role="撰稿人",
goal="把研究发现写成结构化摘要",
backstory="技术撰稿人, 拒绝无来源论断",
llm=llm,
allow_delegation=False,
max_iter=10,
)
tasks = [
Task(description="调研主题: {topic}, 回传要点+来源", expected_output="要点列表", agent=researcher),
Task(description="基于要点写 300 字摘要", expected_output="摘要文本", agent=writer),
]
crew = Crew(
agents=[researcher, writer], tasks=tasks,
process=Process.hierarchical, # 内置 manager Agent = Supervisor 模式
manager_llm=llm,
)
result = crew.kickoff(inputs={"topic": "多 Agent 框架的 token 成本结构"})
print(result.raw)
23.9 版本 B:OpenAI Agents SDK agents-as-tools(Orchestrator-Worker 形态)
# Agents SDK orchestrator-worker【已实测——2026-10 于 Linux (Ubuntu 22.04, Python 3.10,
# openai-agents 0.22.0 + deepseek-chat) 端到端跑通, lead 按序调用 research/write 两个工具各一次】
# 依赖:pip install "openai-agents>=0.22";非 OpenAI 模型用 set_default_openai_client 接入
import os, asyncio
from openai import AsyncOpenAI
from agents import Agent, Runner, set_default_openai_client, set_tracing_disabled
ds_client = AsyncOpenAI(
api_key=os.environ.get("DEEPSEEK_API_KEY", "YOUR_API_KEY"),
base_url="https://api.deepseek.com",
default_headers={"Accept-Encoding": "gzip, deflate"},
)
set_default_openai_client(ds_client) # 全局换默认模型提供方
set_tracing_disabled(True) # 不向 OpenAI 上传 trace(用国产模型时必关)
MODEL = "deepseek-chat"
researcher = Agent(
name="researcher",
instructions="调研给定主题, 回传要点+来源, 不超过 200 字。",
model=MODEL,
)
writer = Agent(
name="writer",
instructions="把研究发现写成 300 字结构化摘要, 拒绝无来源论断。",
model=MODEL,
)
# agents-as-tools: 子 Agent 被包成工具, 各自独立上下文窗口 —— 第22课 orchestrator-worker
orchestrator = Agent(
name="lead",
instructions="你是研究主Agent: 先派 researcher 调研, 再派 writer 成文。每个子Agent只调一次。",
tools=[researcher.as_tool(tool_name="research",
tool_description="调研主题并回传要点"),
writer.as_tool(tool_name="write",
tool_description="把要点写成摘要")],
model=MODEL,
)
async def main(topic: str):
result = await Runner.run(orchestrator, f"主题: {topic}", max_turns=10) # 失控防控
print(result.final_output)
if __name__ == "__main__":
asyncio.run(main("多 Agent 框架的 token 成本结构"))
- 步骤:① 建两个独立虚拟环境分别装 crewai / openai-agents(避免依赖互相降级,实测中 crewai 会把 openai 包从 3.x 降到 2.x)→ ② 设置 DEEPSEEK_API_KEY → ③ 各跑一次同一主题 → ④ 对比日志:CrewAI 版能看到 manager 的调度消息(Supervisor 形态),SDK 版能看到 lead 对两个"工具"的调用(Worker 形态)。
- 实测记录(2026-10-01,Linux/Ubuntu 22.04 + Python 3.10 + deepseek-chat):版本 A manager 正确把两个 Task 分派给 researcher/writer,产出约 400 字摘要(内容涵盖 token 成本七类构成、框架差异、缓存优化);版本 B lead 严格按指令先 research 后 write 各调一次,输出结构化摘要并附"以上由 researcher 调研、writer 成文"的执行说明——两家对同一主题的输出可对照。
- 预期输出:两份摘要文本;打开两家的 tracing(CrewAI 日志 / SDK 默认 tracing)对比消息结构——共享上下文 vs 独立窗口+结果回传的差别一目了然。
- 对比结论(结构对照,无需跑也能读):CrewAI hierarchical 把第 22 课的 Supervisor 循环内置成了 Process 选项;SDK 的 as_tool 把 Orchestrator-Worker 内置成了一行调用。失控防控参数(max_iter / max_turns)框架其实都有内置默认值(CrewAI Agent 的 max_iter 默认 20,SDK 的 Runner.run 可传 max_turns),但默认值偏宽松,生产代码应按任务显式收紧。
- 国产模型接入要点(两家实测通用):① OpenAI 兼容端点直接换 base_url;② CrewAI 走 LiteLLM 的 provider/model 命名;③ Agents SDK 用 set_default_openai_client + set_tracing_disabled(True);④ Accept-Encoding 头与 429 重试的处理同第 21 课。
小结
- 四框架四种抽象:AutoGen 的 Team(模式库+底层自控)、MetaGPT 的 SOP 流水线(制品化交付)、CrewAI 的 Crew(角色直觉+声明式)、Agents SDK 的 agents-as-tools(薄层 orchestrator-worker)。
- 选型从任务倒推:原型用 CrewAI、研究系统用 SDK/裸写、图编排用 AutoGen core、软件交付用 MetaGPT;拿不准先回第 21 课"该不该上多 Agent"清单。
- token 账两条铁律:共享上下文群聊 O(n²) vs 独立窗口 O(n);框架默认不设预算上限,max_iter/max_turns/预算守卫必须显式写。
- 版本快照(2026-10-01):AutoGen 0.7.5(社区 AG2 接棒活跃)/ MetaGPT 0.8.2(重心移向 MGX)/ CrewAI 1.15.23 / openai-agents 0.22.3——多 Agent 框架迭代断代频繁,用前查 PyPI。
- 综合项目实战(把本阶段全部模式串起来)见下一课第 24 课《多 Agent 综合项目》。
扩展阅读
🌐 网络提示:openai.com 系需代理(协议层知识已进正文,实测均可用国产端点替代);框架文档站(GitHub Pages/Cloudflare)可达性波动,打不开时稍后重试;学术站 arxiv.org 境内多可直连(慢),其余评测/规范站需代理;pip 安装建议加清华镜像 -i https://pypi.tuna.tsinghua.edu.cn/simple。详见总纲附录《国内网络访问与国产适配指南》。
- AutoGen 官方文档(AgentChat + core 双层,模式列表):https://microsoft.github.io/autogen/stable/user-guide/agentchat-user-guide/index.html
- AG2(社区延续线):https://docs.ag2.ai/ ;AutoGen v0.4 重写公告:https://www.microsoft.com/en-us/research/articles/autogen-v0-4-reimagining-the-foundations-of-agentic-ai-for-scale-extensibility-and-robustness/
- MetaGPT 文档与论文(arXiv:2308.00352):https://docs.deepwisdom.ai/main/en/ ;https://arxiv.org/abs/2308.00352
- CrewAI Crews/Process 概念文档:https://docs.crewai.com/concepts/crews
- OpenAI Agents SDK multi_agent 文档(handoffs vs agents-as-tools):https://openai.github.io/openai-agents-python/multi_agent/
- MAST 多 Agent 失败研究(选型前的清醒剂):https://arxiv.org/abs/2503.13657
- 微软课程第 8 课 Multi-agent design patterns(本课模式语言的出处,Group chat / Hand-off / Collaborative filtering 三模式原文):https://github.com/microsoft/ai-agents-for-beginners/tree/main/08-multi-agent
- Microsoft Agent Framework 文档(微软第 8 课推荐的官方延伸资源,微软·8):https://learn.microsoft.com/azure/ai-services/agents/overview
我的专栏
| 开源蛋白结构预测 | 分子模拟基础 | 小分子药物设计案例 | AI Agent系列 |
| 开源蛋白生成方法实践 | 分子动力学模拟-Amber | 蛋白药物设计案例 | 化学大模型 |
| 开源多肽设计模型 | 分子动力学模拟-Gromacs | 多肽药物设计案例 | 《AI Agent原理与实战》 |
| 开源多肽性质预测 | 分子动力学模拟-OpenMM | 开源小分子生成设计 | CADD中的机器学习模型 |
| DNA/RNA药物设计 | 結合自由能 | 高效计算配置 | 《MCP 入门实战》 |
| siRNA药物设计模型 | UCSF DOCK系列 | 我胡师兄说药 | 《AI入门实战2026》 |
| ASO药物设计模型 | rDock系列 LeDock系列 gnina系列 | 《经典机器学习实战》 |


