AutoGen:微软多智能体框架的经典与谢幕
2023 年,微软开源的 AutoGen 以"多智能体对话"(multi-agent conversation)的设想点燃了 agent 框架赛道:让多个各有所长的 AI agent 互相说话、彼此协作——一个写代码、一个执行代码、一个审查结果,把复杂任务在对话中消化掉。它一度是 GitHub 上最火的多智能体框架之一,深刻影响了后来几乎所有 agent 编排工具的设计。但必须先告诉你一个重要现状:README 顶部挂着醒目的橙色徽章——AutoGen 已进入维护模式(不再新增功能,转由社区维护),官方明确指引新用户直接使用其企业级继任者 Microsoft Agent Framework。因此本文是一篇"回顾经典 + 讲清去向"的博客:AutoGen 的思想仍是多智能体领域的教科书,而它的工程接力棒已交出。参考 GitHub 仓库 与 Microsoft Agent Framework。
1、概述:AutoGen 是什么
官方定位:"a framework for creating multi-agent AI applications that can act autonomously or work alongside humans"(创建可自主行动或与人协作的多智能体 AI 应用的框架)。Python 3.10+,异步优先架构:
出品 微软研究院(2023 年开源,多智能体赛道开创者之一)
定位 多智能体 AI 应用框架:agent 自主行动 + 人机协作
核心思想 multi-agent conversation:agent 之间用对话协作
架构 异步优先(async)、事件驱动;AgentChat 高层 API
组件 AssistantAgent / AgentTool / Team 编排 / MCP 支持
配套 AutoGen Studio 无代码 GUI(原型用)
现状 ⚠️ 维护模式:不加新功能,社区维护
继任者 Microsoft Agent Framework(MAF,生产就绪 1.0)
安装 pip install -U "autogen-agentchat" "autogen-ext[openai]"核心要点:
1. 它把"多个 agent 讨论协作"做成了一等编程模型
2. 既可全自动运行,也支持 human-in-the-loop(人在环中)
3. v0.4+ 全面重构为异步事件驱动,API 与老版 v0.2 差异大
4. 先说结论:新项目建议直接用 MAF;学思想,AutoGen 仍值一读
2、核心思想:让 agent 互相对话
单 agent 的天花板在于"一个人包打天下":上下文膨胀、角色混乱、无人纠错。AutoGen 的破题思路是把协作本身变成框架原语:
// 经典协作模式(AutoGen 奠基的四类)
① 双 agent 对话 Assistant(写代码) ⇄ UserProxy(执行+反馈)
代码跑挂了?把报错发回去让它改,循环到通过
② 群聊 GroupChat 多 agent + 一个 GroupChatManager 路由发言权
产品经理/工程师/测试同场讨论,按轮转或智能调度
③ 嵌套聊天 一个对话中按需触发子对话(子问题交给专家组)
④ Human-in-the-loop UserProxy 可由真人扮演:agent 提议、人审批
// 为什么"对话"是好的抽象:
// 天然支持迭代(改了再试)、天然支持纠错(报错回传)、
// 天然支持分工(角色=system message)
// ——这四个模式成为后来几乎所有 agent 框架的标配词汇核心要点:
1. 对话即协作:把人类团队的"讨论-执行-返工">搬进程序
2. 代码生成→执行→报错回传的自我修正循环是它最著名的演示
3. 人可以是协作的一环——审批、纠偏、提供领域输入
4. 这套模式学透了,用什么框架都能用得上
3、快速上手:Hello World
新版 API 极简:建模型客户端、建 AssistantAgent、异步 run——README 官方示例:
// 安装(AgentChat + OpenAI 扩展)
pip install -U "autogen-agentchat" "autogen-ext[openai]"
export OPENAI_API_KEY="sk-..."// Hello World:一个最简 assistant
import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
async def main() -> None:
model_client = OpenAIChatCompletionClient(model="gpt-4.1")
agent = AssistantAgent("assistant", model_client=model_client)
print(await agent.run(task="Say 'Hello World!'"))
await model_client.close()
asyncio.run(main())
// 结构三要素:
// model_client 模型客户端(可换 OpenAI 之外的各家模型)
// AssistantAgent(name, model_client, system_message?, tools?)
// await agent.run(task=...) 异步执行,返回消息结果核心要点:
1. 全异步 API:run/run_stream 都是 await,天生适合并发多 agent
2. 模型客户端与 agent 解耦——换模型只换 client
3. system_message 定义人设,tools 挂载能力(下一节)
4. v0.2 用户注意:API 已大改,官方有专门迁移指南
4、工具与 MCP:给 agent 装上手脚
光会说话不够,agent 要能"做事"。AutoGen 通过 MCP(Model Context Protocol)接入外部工具——README 的浏览器助手示例:
// 用 Playwright MCP server 造一个"会上网"的 agent
// 先装 MCP server: npm install -g @playwright/mcp@latest
import asyncio
from autogen_agentchat.agents import AssistantAgent
from autogen_agentchat.ui import Console
from autogen_ext.models.openai import OpenAIChatCompletionClient
from autogen_ext.tools.mcp import McpWorkbench, StdioServerParams
async def main() -> None:
model_client = OpenAIChatCompletionClient(model="gpt-4.1")
server_params = StdioServerParams(
command="npx",
args=["@playwright/mcp@latest", "--headless"],
)
async with McpWorkbench(server_params) as mcp:
agent = AssistantAgent(
"web_browsing_assistant",
model_client=model_client,
workbench=mcp, // 工具工作台(多 server 传列表)
model_client_stream=True,
max_tool_iterations=10, // 最多工具循环轮数
)
await Console(agent.run_stream(task=
"Find out how many contributors for the microsoft/autogen repository"))
asyncio.run(main())核心要点:
1. McpWorkbench + StdioServerParams:以 stdio 方式挂任意 MCP server
2. Playwright MCP 让 agent 真的能开浏览器查资料
3. max_tool_iterations 防止工具调用死循环
4. 官方警告:只连可信的 MCP server——它可能在本地执行命令
5、多 Agent 编排:AgentTool,agent 即工具
新版编排的招牌手法:把 agent 包装成工具(AgentTool)挂给主 agent——专家 agent 变成主 agent 可调用的"函数":
// 数学专家与化学专家,被主 assistant 当工具调用
from autogen_agentchat.tools import AgentTool
math_agent = AssistantAgent(
"math_expert",
model_client=model_client,
system_message="You are a math expert.",
description="A math expert assistant.", // 描述=工具说明书
)
math_agent_tool = AgentTool(math_agent,
return_value_as_last_message=True)
chemistry_agent = AssistantAgent("chemistry_expert", ...)
chemistry_agent_tool = AgentTool(chemistry_agent, ...)
agent = AssistantAgent(
"assistant",
system_message="You are a general assistant. Use expert tools when needed.",
model_client=model_client,
tools=[math_agent_tool, chemistry_agent_tool], // 专家即工具
max_tool_iterations=10,
)
await Console(agent.run_stream(task="What is the integral of x^2?"))
// → 主 agent 识别"积分"→ 调 math_agent_tool → 专家作答
await Console(agent.run_stream(task="What is the molecular weight of water?"))
// → 识别"分子量"→ 调 chemistry_agent_tool核心要点:
1. AgentTool:一个 agent 就是另一个 agent 的工具——编排即组合
2. description 字段是"工具说明书",主 agent 靠它决定路由
3. 相比老版 GroupChat 的"全场发言",工具化路由更可控
4. 更复杂编排(Team/工作流)见 AgentChat 文档
6、AutoGen Studio:无代码原型
配套的图形界面,拖拖拽拽就能搭多 agent 工作流并直接运行:
// 安装与启动
pip install -U "autogenstudio"
autogenstudio ui --port 8080 --appdir ./my-app
// → 浏览器打开 http://localhost:8080
// 能做什么:
在 Web 界面里创建 agent、配置模型与工具、
组装多 agent 工作流、上传数据集、直接运行与调试
// 官方定位(重要):
// 仅用于【快速原型】与展示"基于 AutoGen 的端侧应用长什么样"
// ⚠️ 不是生产就绪的应用——缺鉴权/安全等,
// 生产请用框架自建应用并补齐安全设施核心要点:
1. Studio 是原型工具:零代码验证多 agent 想法
2. 官方明确划界:非生产应用,别直接对外服务
3. 适合演示、教学、快速搭 demo 给利益相关方看
4. 生产路径:框架写代码 + 自建鉴权与安全
7、现状与迁移:维护模式与 MAF
必须直面的事实:README 顶部挂着橙色 "Maintenance Mode" 徽章,官方公告写得很清楚:
// AutoGen 现状(官方公告要点)
状态 维护模式:不再接收新功能/增强,由社区接管维护
含义 已有功能仍可用、bug 修不保证节奏、演进停止
新用户 官方建议直接从 Microsoft Agent Framework 开始
老用户 官方提供迁移指南:
learn.microsoft.com/agent-framework/migration-guide/from-autogen/
// Microsoft Agent Framework(MAF)——企业级继任者
定位 production-ready 1.0:稳定 API + 长期支持承诺
能力 企业级多 agent 编排 / 多 provider 模型支持 /
A2A + MCP 跨运行时互操作
形态 微软把 AutoGen 与 Semantic Kernel 的精华
合并进化为 MAF
// 选型建议(按场景):
新项目 直接上 MAF(或评估 LangGraph 等,见后文)
老项目 按 migration guide 平滑迁移,官方有逐条对照
学思想 AutoGen 的对话协作模式仍是最佳教材之一核心要点:
1. 维护模式 ≠ 立即死亡:现有代码能跑,但演进已停
2. MAF 吸收了 AutoGen(多 agent)+ Semantic Kernel(编排)两支血统
3. 微软系技术选型应直接看 MAF,避免新项目背上迁移债
4. 与 LangGraph/LlamaIndex 等横向对比时,AutoGen 应替换为 MAF 参评
8、总结
AutoGen 的历史贡献在于定义了多智能体协作的话语体系——双 agent 对话、群聊、嵌套聊天、人在环中、agent 即工具,这些词汇如今已是 agent 框架的通用语。而它以"进入维护模式、指引继任者"的方式谢幕,本身也是开源项目治理的体面示范。
关键要点:
- 定位:微软多智能体框架,multi-agent conversation 思想奠基者
- 思想:对话即协作——写码/执行/纠错循环、群聊、嵌套、人机协同
- 新版 API:AssistantAgent + async run + McpWorkbench + AgentTool
- Studio:无代码原型工具,官方明确非生产应用
- ⚠️ 现状:维护模式,不加新功能,社区维护
- 继任:Microsoft Agent Framework 1.0(稳定 API + A2A/MCP)
- 建议:新项目直接 MAF;学多智能体思想,AutoGen 仍是好教材
对于正在选型的团队,结论很干脆:新项目请直接从 Microsoft Agent Framework 开始(或按需评估 LangGraph 等活跃框架),让 AutoGen 安静地完成它的历史使命;对于想真正理解"多智能体为什么要协作、怎么协作"的开发者,花一个下午读读 AutoGen 的四个经典模式与 AgentTool 示例,依然物超所值——框架会谢幕,但它教会这个行业的协作抽象会一直流传下去。一个框架最好的谢幕,不是永远占据舞台,而是让它的思想长在所有后来者的身体里。


