4 月 3 日微软悄悄发了 Agent Framework 1.0(GA),开源、生产级、.NET 和 Python 双语言。内置 MCP + A2A 支持,6 个模型厂商一行代码切换。但国内几乎没人讨论。这篇从架构层面拆解它和 LangChain 的核心区别,以及什么场景该选它。

一个被低估的发布

如果你只看中文技术社区,大概不知道微软在 4 月 3 日做了一件大事:Agent Framework 正式发布 1.0 版本(GA)。

这不是一个实验性项目——微软在官方博客上写得很明确:

“Production-ready, stable APIs, and a commitment to long-term support.”

生产级、API 稳定、长期支持承诺。这是微软在 AI Agent 领域最重磅的开源基础设施投入。

但在掘金和知乎上搜"Microsoft Agent Framework",几乎没有中文内容。大家的注意力都在 LangChain、CrewAI、OpenClaw 上。微软的这个框架值得认真看一下。

它是什么

Microsoft Agent Framework(以下简称 MAF)是一个用于构建 AI Agent 和多 Agent 工作流的开源框架。核心特性:

特性 说明
语言支持 .NET + Python 双语言
模型厂商 Azure OpenAI、OpenAI、Anthropic、Bedrock、Gemini、Ollama
协议支持 MCP(工具接入)+ A2A(Agent 间通信)
多 Agent 模式 Sequential、Group Chat、Magentic-One
开源协议 MIT
成熟度 GA 1.0(生产级)

两个亮点值得注意:

第一,支持 Ollama。 这意味着你可以用本地模型跑 Agent,不需要任何云服务。对数据隐私敏感的场景,这是 LangChain 和 CrewAI 做不到的——它们主要面向云 API。

第二,.NET 支持。 这是 MAF 最独特的差异化。LangChain 只有 Python 和 JS,CrewAI 只有 Python。大量的企业级后端是 C#/.NET 写的,之前接 AI Agent 只能通过 Python 微服务桥接。 MAF 让你在 C# 项目里原生写 Agent 逻辑。

跟 LangChain 思路哪里不同

LangChain 和 MAF 都能做"多步骤 AI Agent",但架构思路差异很大。

LangChain:链式组合(Chain-first)

LangChain 的核心抽象是"链"(Chain)——把 Prompt → 模型 → 解析器 → 工具 串成一条流水线:

# LangChain 风格:定义一条链
chain = prompt | model | parser | tool
result = chain.invoke({"input": "查一下最新的AI新闻"})

链的好处是灵活——你可以把任何组件拼接在一起。坏处是编排逻辑散落在代码各处。当你有 5 个 Agent 需要协作时,链和链之间的依赖关系、状态传递、错误处理变得很复杂。

LangChain 后来加了 LangGraph 来解决编排问题,但那是在链的基础上打补丁。

MAF:编排优先(Orchestration-first)

MAF 的核心抽象不是链,而是"Agent + 编排模式":

# MAF 风格:定义 Agent,选编排模式
from agent_framework import Agent, SequentialOrchestrator

researcher = Agent(name="researcher", model="openai/gpt-5.5", 
                   instructions="你是一个新闻研究员")
writer = Agent(name="writer", model="anthropic/claude-sonnet-4-6",
               instructions="你是一个技术作家")

# 编排模式:researcher 先跑,结果传给 writer
orchestrator = SequentialOrchestrator(agents=[researcher, writer])
result = orchestrator.run("写一篇关于 MCP 最新进展的技术博客")

注意看两个 Agent 用了不同的模型——researcher 用 GPT-5.5,writer 用 Claude Sonnet。每个 Agent 可以独立选择最合适的模型。

MAF 内置了三种编排模式,不需要你自己写编排逻辑:

模式 工作方式 适用场景
Sequential A 做完传 B,B 做完传 C 流水线(研究→写作→审核)
Group Chat 多个 Agent 讨论同一个问题 需要多视角分析的决策
Magentic-One 一个 planner 分配任务给 workers 复杂的任务分解和执行

核心区别:LangChain 让你自己搭编排,MAF 内置了编排模式。 对于简单场景差别不大;对于多 Agent 协作场景,MAF 省很多架构工作。

一行代码切模型

这个特性非常实用。MAF 支持 6 个模型厂商,切换只需要改一个字符串:

from agent_framework import Agent

# 用 OpenAI
agent = Agent(model="openai/gpt-5.5", instructions="...")

# 切到 Anthropic——改一行
agent = Agent(model="anthropic/claude-sonnet-4-6", instructions="...")

# 切到 Gemini——改一行
agent = Agent(model="google/gemini-3.1-pro", instructions="...")

# 切到本地 Ollama——改一行
agent = Agent(model="ollama/llama-4", instructions="...")

不需要改 SDK、不需要改认证方式、不需要改调用格式。MAF 在框架层面做了模型抽象,而不是让你自己管多个 SDK。

这和用 API 网关的思路类似——差别是 MAF 在代码层面做抽象,API 网关在网络层面做抽象。两者可以叠加使用。

MCP 和 A2A 怎么集成的

MAF 对 MCP 和 A2A 的支持是原生内置的,不是第三方插件。

MCP 集成

Agent 可以在运行时自动发现并调用 MCP Server 暴露的工具:

from agent_framework import Agent, McpToolProvider

# Agent 自动发现 MCP Server 的工具
agent = Agent(
    model="openai/gpt-5.5",
    instructions="你是一个数据分析师",
    tool_providers=[
        McpToolProvider(server="sqlite-query"),  # 数据库查询
        McpToolProvider(server="web-search"),     # 网页搜索
    ]
)

# Agent 会根据任务自动选择调用哪个工具
result = agent.run("查一下数据库里最近一周的用户注册数据,然后搜索同行业的基准数据做对比")

不需要在代码里写工具调用逻辑。 Agent 根据 MCP Server 的工具描述自动判断何时调用什么工具。这和 Claude Code 的 MCP 集成方式类似。

A2A 集成

A2A 让不同运行环境里的 Agent 可以互相调用。比如一个 .NET 写的 Agent 可以调用一个 Python 写的 Agent:

# Python Agent 发布为 A2A 服务
from agent_framework import Agent, A2AServer

agent = Agent(model="openai/gpt-5.5", instructions="你是代码审查员")
server = A2AServer(agent=agent, port=8080)
server.start()  # 其他 Agent 可以通过 A2A 协议调用这个 Agent
// C# Agent 通过 A2A 调用 Python Agent
var reviewer = new A2AClient("http://localhost:8080");
var result = await reviewer.RunAsync("Review this pull request: ...");

跨语言、跨运行时的 Agent 协作。 这在之前的框架里是做不到的(或者需要大量胶水代码)。

什么场景该选 MAF

你的场景 推荐框架 原因
Python 单 Agent + 工具链 LangChain 生态最成熟,社区最大
Python 多 Agent 协作 MAF 或 CrewAI MAF 编排更强,CrewAI 更简单
.NET/C# 后端接 AI MAF 唯一原生支持 .NET 的框架
需要 A2A 跨 Agent 通信 MAF A2A 支持最完整
需要跑本地模型 MAF Ollama 原生支持
快速原型 / 小项目 LangChain 或 CrewAI 学习曲线更平
企业级、需要长期支持 MAF 微软背书,GA 1.0 承诺

总结一句话:如果你是 Python 生态并且只需要单 Agent,LangChain 仍然是最稳的选择。如果你需要多 Agent 协作、跨语言支持、或者企业级长期维护承诺,MAF 是更好的选择。

被忽视的一点:Magentic-One 模式

MAF 内置的三种编排模式里,Magentic-One 是最有意思的。

它的工作方式是:

1. Planner Agent 接收任务
2. Planner 把任务拆成子任务
3. Planner 把子任务分配给不同的 Worker Agent
4. Worker 执行完汇报结果
5. Planner 检查结果,决定是否需要补充或重做
6. 所有子任务完成后,Planner 汇总最终结果

这个模式在学术界叫"task-oriented multi-agent reasoning"。MAF 把它封装成了一个开箱即用的编排器。

Magentic-One 的实际价值:你不需要自己设计"哪个 Agent 负责什么、怎么交接"——Planner Agent 自动做任务分解和分配。你只需要定义 Worker Agent 各自的能力。

对比一下:在 LangChain 里做同样的事,你需要自己用 LangGraph 画状态图、写节点、定义边、处理条件分支。在 MAF 里是一行配置的事。

我的判断

MAF 1.0 的发布标志着 AI Agent 框架进入了大厂标准化时代。之前是社区驱动(LangChain、CrewAI),现在微软、Google(ADK)都发了官方框架。

对开发者来说,这意味着:

  1. 框架选型要考虑长期维护了。 社区项目可能一年后不维护。微软和 Google 的框架有企业级承诺。
  2. MCP + A2A 正在成为基础设施。 两个协议已经被所有主流框架支持。如果你的 Agent 系统不支持 MCP,等于断了一只手。
  3. 多模型支持是标配。 绑定单一模型厂商的时代过去了。MAF 一行代码切 6 个厂商,和用 API 网关管理多模型的思路一致——开发者应该有模型选择权。

常见问题

Q: MAF 和 Semantic Kernel 是什么关系?
A: Semantic Kernel 是微软之前的 AI 框架,主要做单 Agent 场景。MAF 是它的演进——增加了多 Agent 编排、A2A、MCP 等能力。微软官方建议新项目直接用 MAF。

Q: 国内能用 MAF 吗?
A: 可以。MAF 本身是开源框架,跑在你自己的机器上。模型调用部分,如果用 Azure OpenAI 在中国区有服务;如果用 OpenAI/Anthropic 需要通过代理或 API 网关;如果用 Ollama 本地模型则完全不需要网络。

Q: MAF 的 Python 版和 .NET 版功能一样吗?
A: 核心功能一样(Agent 定义、编排模式、MCP、模型切换)。但 .NET 版在一些高级特性上更成熟——毕竟微软是 .NET 生态的主人。Python 版的社区活跃度在追赶中。

Q: 和 Google ADK 比呢?
A: ADK 更紧密地绑定 Google Cloud 生态(Vertex AI、BigQuery)。MAF 更中立——6 个模型厂商平等支持,不偏向 Azure。如果你用 Google Cloud,ADK 集成更顺滑。如果你不想绑定任何云厂商,MAF 更合适。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐