目录
- 一、Microsoft Agent Framework和AutoGen
- 二、MAF 怎么干活?
- 三、核心概念(对应之前CrewAI的例子)
- 四、Demo:家庭露营攻略团队
- 前置准备
- 步骤1:安装依赖
- 步骤2:完整可运行代码
- ① 导入核心组件
- ② 配置大模型(二选一)
- 方案A:OpenAI 云端模型
- 方案B:本地 Ollama(离线免费)
- ③ 定义3个专业智能体(和CrewAI角色完全对应)
- ④ 构建顺序工作流(流水线编排)
- ⑤ 启动执行,获取结果
- 运行效果说明
- 五、Magentic 动态调度模式(智能项目经理)
- 六、MAF vs CrewAI vs AutoGen 核心对比
- 七、MAF 核心特点
一、Microsoft Agent Framework和AutoGen
Microsoft Agent Framework(简称 MAF)是微软在2025年10月正式发布的新一代统一多智能体开发框架,它不是AutoGen,而是AutoGen + Semantic Kernel 的官方继任者——微软已经明确表示,未来AutoGen和Semantic Kernel只做安全维护,新功能全部集中在MAF上。
简单说:
- AutoGen 是微软研究院的「实验性项目」,主打自由群聊式协作,但难管控、难上生产
- Semantic Kernel 是微软的「企业级插件框架」,主打工具连接和工作流,但多智能体能力弱
- MAF 把两者合二为一:既保留了多智能体协作的灵活性,又加入了图状工作流、类型安全、状态持久化、可观测性这些企业级特性,是官方钦定的下一代方案。
二、MAF 怎么干活?
用「做露营攻略」的例子类比:
如果说 CrewAI 是「老板提前画好流程图,员工按步骤流水线干活」;
AutoGen 是「拉个工作群,大家自由讨论着把活干完」;
那 MAF 就是「正规公司的项目管理系统」:
- 你可以画严格的流程图(Workflow),规定谁先做、谁后做、结果怎么传——对标CrewAI的确定性流程
- 你也可以设一个项目经理(Magentic模式),让他动态派活、协调大家——对标AutoGen的灵活协作
- 所有对话、状态、中间结果自动存档,出错了能回溯,还能无缝部署到Azure云服务
它的核心设计理念是:用工作流(Workflow)做骨架,用智能体(Agent)做节点,想确定就定死流程,想灵活就用动态调度。
三、核心概念(对应之前CrewAI的例子)
| MAF 概念 | 类比 | 对应CrewAI概念 |
|---|---|---|
| Agent(智能体) | 专业员工,有角色、人设、工具 | Agent |
| Workflow(工作流) | 项目流程图,规定执行顺序和数据流向 | Process + Task编排 |
| Sequential 模式 | 流水线作业,一个干完传给下一个 | Sequential 顺序流程 |
| Concurrent 模式 | 多人并行干活,最后汇总结果 | 无对应(CrewAI需手动实现) |
| Magentic 模式 | 项目经理动态派活,按需调度员工 | Hierarchical 层级模式 |
| Executor(执行器) | 流程节点,可以是Agent,也可以是普通函数/工具 | Task |
四、Demo:家庭露营攻略团队
我们完全复用之前CrewAI的需求:3个角色(行程规划师→美食策划师→总编辑),顺序流水线生成2天1夜家庭露营攻略。
前置准备
- Python 3.10+
- 大模型二选一:OpenAI API Key / 本地Ollama
步骤1:安装依赖
pipinstallagent-framework--pre注意:目前还是预览版,必须加
--pre安装
步骤2:完整可运行代码
① 导入核心组件
importasynciofromagent_frameworkimportChatAgentfromagent_framework.orchestrationsimportSequentialBuilderfromagent_framework.openaiimportOpenAIChatClient② 配置大模型(二选一)
方案A:OpenAI 云端模型
# 配置OpenAI客户端,自动读取环境变量里的API Keychat_client=OpenAIChatClient(model_id="gpt-4o-mini",api_key="你的OpenAI API Key")方案B:本地 Ollama(离线免费)
# 先确保本地Ollama已启动,且执行过 ollama pull llama3chat_client=OpenAIChatClient(model_id="llama3",base_url="http://localhost:11434/v1",api_key="ollama"# Ollama随便填,不校验)③ 定义3个专业智能体(和CrewAI角色完全对应)
# 1号员工:资深露营行程规划师planner=ChatAgent(chat_client=chat_client,name="行程规划师",instructions="""你是资深露营行程规划师,有5年户外露营经验,熟悉各类露营场地, 特别擅长家庭亲子露营的行程安排,注重细节和安全性,会充分考虑老人和孩子的需求。 请输出详细的2天1夜露营行程表、分类物品清单、安全注意事项。 请用中文输出,条理清晰。""")# 2号员工:露营美食策划师food_specialist=ChatAgent(chat_client=chat_client,name="露营美食策划师",instructions="""你是户外美食达人,擅长用简易厨具做出好吃的露营餐食, 充分考虑食材保鲜、烹饪难度和分量,特别适配家庭出行的饮食需求。 请基于前面的行程,设计对应的三餐食谱和食材采购清单。 请用中文输出,内容实用落地。""")# 3号员工:攻略总策划编辑editor=ChatAgent(chat_client=chat_client,name="攻略总策划编辑",instructions="""你是资深生活类内容编辑,擅长梳理信息、优化结构, 能把零散内容整合成普通人一看就懂的实用攻略,会主动补充注意事项和避坑提示。 请整合前面的行程和美食内容,生成结构完整的最终露营攻略, 必须包含【行程安排】【物品清单】【美食方案】【避坑提示】四个板块。 请用中文输出,排版清晰。""")④ 构建顺序工作流(流水线编排)
# 按执行顺序排列,前一个的输出自动作为后一个的输入上下文workflow=SequentialBuilder().participants([planner,food_specialist,editor]).build()⑤ 启动执行,获取结果
asyncdefmain():print("🚀 启动露营攻略多智能体团队...")print("="*60)# 流式运行,实时看到每个节点的执行状态final_messages=Noneasyncforeventinworkflow.run_stream("为一家三口(夫妻+8岁孩子)制定一份周末2天1夜的家庭露营完整攻略"):# 打印每个智能体开始工作的提示ifevent.type=="executor_invoked":print(f"\n▶ 开始工作:{event.executor_id}")# 保存最终完整对话结果ifevent.type=="workflow_output":final_messages=event.data# 提取最终编辑输出的攻略内容final_result=final_messages[-1].textprint("\n"+"="*60)print("✅ 最终生成的露营攻略:")print("="*60)print(final_result)# 运行异步主函数asyncio.run(main())运行效果说明
执行后控制台会按顺序展示:
- 先启动「行程规划师」,输出完整行程方案
- 自动把行程结果传给「露营美食策划师」,输出对应食谱
- 自动把前两份结果传给「攻略总策划编辑」,整合输出完整攻略
整个数据传递完全由工作流自动完成,和CrewAI的Sequential模式逻辑完全一致。
五、Magentic 动态调度模式(智能项目经理)
如果你不想把流程定死,想让AI自己判断该谁干活,可以用MAF原生的Magentic 模式——相当于配了一个智能项目经理,根据任务进度动态派活。
fromagent_framework.orchestrationsimportMagenticBuilder# 定义项目经理(调度员)manager=ChatAgent(chat_client=chat_client,name="项目经理",instructions="""你是项目负责人,负责协调行程规划师、美食策划师和编辑三人完成露营攻略。 执行规则: 1. 先让行程规划师输出行程方案 2. 再让美食策划师基于行程设计食谱 3. 最后让编辑整合出最终攻略 确认全部完成后,宣布任务结束。""")# 构建Magentic动态工作流workflow=MagenticBuilder()\.with_standard_manager(manager,max_round_count=10)\.add_participant(planner)\.add_participant(food_specialist)\.add_participant(editor)\.build()# 运行方式和上面完全一样# async for event in workflow.run_stream("做一份家庭露营攻略"): ...这种模式更接近AutoGen的群聊协作,但比AutoGen更可控——项目经理会严格按规则调度,不会出现无限扯皮的情况。
六、MAF vs CrewAI vs AutoGen 核心对比
| 维度 | CrewAI | AutoGen | Microsoft Agent Framework |
|---|---|---|---|
| 定位 | 轻量多智能体编排工具 | 研究型多智能体框架 | 企业级统一智能体平台 |
| 核心驱动 | 任务驱动 | 对话驱动 | 工作流+智能体双驱动 |
| 流程确定性 | 高,预设任务链 | 低,自由对话 | 可自由切换:确定/灵活 |
| 生产级特性 | 基础 | 弱 | 强(状态持久化、可观测、治理) |
| 生态绑定 | 中立 | 微软生态 | 深度绑定Azure AI全家桶 |
| 学习曲线 | 简单 | 中等 | 中等偏难 |
七、MAF 核心特点
- 官方正统继任:AutoGen和Semantic Kernel合并升级而来,微软未来唯一主推的智能体框架
- 编排双模式:既支持确定性的图状工作流,也支持动态的智能调度,按需选择
- 企业级能力:原生支持状态检查点、类型安全、链路追踪、权限治理,适合生产部署
- 全协议兼容:原生支持MCP(模型上下文协议)、A2A(智能体间互通)、OpenAPI等标准
- 双语言支持:同时提供Python和.NET两套SDK,适配不同技术栈