当前位置: 首页 > news >正文

谁说.NET没有智能体?使用 Microsoft Agent Framework 构建 AI 智能体

进入 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说明。

http://www.jsqmd.com/news/286031/

相关文章:

  • java_ssm80高职院校教学中心可视化教学分析系统
  • jsp ssm汽车销售推荐平台
  • 抗辐照MCU在核电站交换机中的可靠性验证方法研究
  • PETRV2-BEV功能全测评:nuScenes数据集真实表现
  • 使用agentscope自动注册agent应用到nacos以及对a2a协议的思考
  • YCDISM2026 GUI项目进行中...
  • 学Simulink--风电电机控制场景实例:基于Simulink的DFIG转子电流限幅保护策略仿真
  • 解决:all predefined address pools have been fully subnetted
  • 2026毕业季必备:6款免费降AI率工具实测推荐
  • 学Simulink——风电电机控制场景实例:基于Simulink的风电变流器死区补偿与非线性校正仿真
  • SCI论文降AI率工具推荐:留学生和科研党必看的5款利器
  • 降AI不伤文:保留专业术语的6个实用技巧
  • 2026降AI工具红黑榜:亲测10款后只推荐这3个
  • 论文降AI工具TOP5横评:哪款效果最好、性价比最高
  • 知网AIGC检测不通过?这份避坑指南请收好
  • 类和对象(下)
  • 2026年国产持妆粉底液厂家专业深度测评(排名前五)
  • 工业显示器在智能办公用品申领柜中的应用
  • Rust入门一:从内存安全到高性能编程
  • 从源码视角来看Pinia!
  • 2026年国产持妆粉底液专业深度测评:排名前五品牌权威发布
  • 2026年国产持妆粉底液专业深度测评:排名前五供应商权威榜单
  • 初学范畴论的一些体会
  • 2026年专业深度测评:国产持妆粉底液厂家排名前五权威榜单
  • 2026毕业论文降AI必备:这5款工具帮你AI率降到10%以下
  • 【计算机毕业设计案例】基于springboot的就业招聘面试试题管理系统(程序+文档+讲解+定制)
  • 2026年8款免费降AI率工具实测推荐,毕业生必看
  • 【计算机毕业设计案例】基于SpringBoot+Vue咖啡售卖商城平台的设计与实现基于springboot的咖啡共赏平台(程序+文档+讲解+定制)
  • 毕业生必看:知网AIGC检测不通过怎么办?超全解决方案
  • 解决 Java UnsatisfiedLinkError: libfontmanager.so 加载失败问题