进入 2026 年,微软终于发力了,.NET 开发者终于等来了一个真正统一的 AI 智能体开发框架——Microsoft Agent Framework。它整合了此前 Semantic Kernel 与 AutoGen 的核心能力,在一个一致的模型下,提供对话记忆、工具调用、多智能体协作等关键特性。
更重要的是,该框架基于Microsoft.Extensions.AI抽象层构建,可以灵活切换底层大模型。不仅支持 OpenAI、Azure OpenAI,也能无缝接入国产模型,例如通义千问(Qwen)和DeepSeek,在中文理解力与数据合规性方面更具优势。
目前 Agent Framework 仍处于Public Preview阶段,预计将在 2026 年初正式 GA。虽然 API 仍可能存在小幅调整,但核心设计已经非常稳定,完全具备新项目落地的可行性。
为什么选择 Agent Framework?
在 Agent Framework 出现之前,如果你想构建一个具备“记忆”“工具调用”甚至“多角色协作”的智能体,通常需要在 Semantic Kernel 中自行拼装大量基础设施代码。
例如,对话上下文需要手动管理,工具调用逻辑需要自行路由,多智能体协作更是需要大量胶水代码,整体复杂且容易出错。
Agent Framework 的目标正是把这些复杂度收敛到框架内部,为开发者提供更接近“生产级”的能力,包括:
线程级的对话状态管理,自动维护多轮上下文; C# 方法原生注册为 AI 可调用工具,无需额外封装; 内置多智能体协作模型,天然支持角色分工; 集成日志、遥测、异常处理等工程化能力。
如果你的需求已经超出了“单次问答”,例如智能客服、代码审查、文档生成、业务助手等场景,那么 Agent Framework 会明显降低实现成本。
快速上手:创建你的第一个智能体
首先安装必要的 NuGet 包,使用.NET 8 last版本和.NET 10(截至 2026 年 1 月,仍为预览版):
dotnet add package Microsoft.Extensions.AI.OpenAI --version 10.1.1-preview.1.25612.2 dotnet add package Microsoft.Agents.AI.OpenAI --version 1.0.0-preview.251219.1★提示:后续若切换到通义千问或 DeepSeek,仅需替换底层
IChatClient实现,其余代码无需调整。
下面是一个最小可用示例,用于创建并运行一个智能体:
using Microsoft.Agents.AI; using Microsoft.Extensions.AI; // 创建基于 OpenAI 的客户端(后续可替换为国产模型) var chatClient = new OpenAIClient("your-api-key") .GetChatClient("gpt-4o-mini") .AsIChatClient(); // 定义智能体行为 var agent = chatClient.CreateAIAgent( instructions: "你是一个专业的 .NET 技术顾问,回答需准确、简洁。" ); // 执行查询 var response = await agent.RunAsync("C# 中 async/await 的原理是什么?"); Console.WriteLine(response);这个示例已经包含了一个完整智能体的最小生命周期:模型初始化、指令定义、执行推理。
对话记忆:用线程管理上下文
默认情况下,每次调用RunAsync都是一次独立对话。若希望智能体“记住之前说过的话”,可以通过AgentThread来维护上下文。
var thread = agent.GetNewThread(); // 第一轮 var r1 = await agent.RunAsync("async/await 和 Task.Run 有什么区别?", thread); // 第二轮(保留上下文) var r2 = await agent.RunAsync("那在 Web API 中应该如何使用?", thread);在多轮技术讨论中,智能体可以准确引用前文内容,而开发者无需手动拼接历史消息,这一点在真实业务中非常重要。
赋予智能体“工具调用”能力
智能体真正的价值,在于它不仅能“回答问题”,还能调用外部能力完成任务。
在 Agent Framework 中,只需将普通 C# 方法注册为工具即可:
[Description("获取指定城市的实时天气")] async Task<string> GetWeather([Description("城市名称")] string city) { await Task.Delay(300); return $"晴,22°C,{city}"; } var weatherAgent = chatClient.CreateAIAgent( name: "WeatherHelper", instructions: "根据用户需求提供天气信息。", tools: [AIFunctionFactory.Create(GetWeather)] ); var response = await weatherAgent.RunAsync("杭州今天天气如何?");框架会自动判断是否需要调用工具,并将执行结果融合进最终回复,开发者无需关心调度细节。
多智能体协作:让复杂任务自然拆解
对于复杂任务,单个智能体往往难以兼顾准确性与表达质量。Agent Framework 原生支持多智能体协作:
var researcher = chatClient.CreateAIAgent("你负责查找并验证 .NET 技术细节。"); var writer = chatClient.CreateAIAgent("你根据研究结果撰写清晰的技术文档。"); var research = await researcher.RunAsync("解释 C# 的 Span<T> 在高性能场景中的应用"); var doc = await writer.RunAsync($"基于以下研究,写一段简介:\n{research}");在实际项目中,这种模式非常适合用于代码审查、方案评估、文档生成等场景,效果明显优于“一个智能体包打天下”。
接入国产大模型:通义千问与 DeepSeek
Agent Framework 通过IChatClient抽象层彻底解耦模型提供商,使得接入国产模型变得非常简单。
以通义千问为例,其 DashScope 已提供 OpenAI 兼容接口:
var qwenClient = new OpenAIClient( apiKey: "your-dashscope-key", endpoint: new Uri("https://dashscope.aliyuncs.com/compatible-mode/v1") ) .GetChatClient("qwen-max") .AsIChatClient(); var agent = qwenClient.CreateAIAgent("你是一个中文技术专家...");DeepSeek 同样支持 OpenAI 协议,仅需更换 endpoint 即可。这意味着同一套智能体代码可以自由切换国内外模型。
注意事项与最佳实践
在实际使用中,有几点经验值得注意。
当前仍是预览版,建议锁定 NuGet 版本并关注官方 Release Notes。 长对话会快速累积 Token,应考虑摘要或截断策略。 工具方法应做好异常捕获,避免因抛异常导致对话中断。 多轮对话存在非确定性,测试时建议结合快照与人工验证。
与现有框架的关系说明
Microsoft.Extensions.AI是稳定的底层抽象,已经 GA,可放心使用。 Agent Framework 构建于其上,提供智能体与协作能力,目前为 Preview。 Semantic Kernel 与 AutoGen 不再新增功能,但官方提供迁移路径。
是否适合用于生产?
如果项目允许一定的技术迭代风险,Agent Framework 已具备生产可用的基础条件。核心抽象稳定,国产模型支持成熟,非常适合对数据合规有要求的场景。
建议新项目优先尝试,关键系统需提前设计回滚方案。
结语
Microsoft Agent Framework 标志着 .NET 在 AI 智能体领域真正迈入工程化阶段。开发者不再需要拼凑零散组件,而是可以基于一套统一、可扩展的框架,快速构建具备实际价值的智能应用。期待正式版的到来。
在国产大模型能力持续提升的背景下,.NET 开发者完全有条件构建安全、可控、真正落地的 AI 智能体系统。不妨从一个简单的技术问答助手开始,迈出这一步。
参考:dev.to/mashrulhaque/build-ai-agents-with-microsoft-agent-framework-in-c-46h0
注:上面API调用仅供参考,开发应用请查看各个智能体的API说明。