Microsoft Agent Framework 中 Agent 的架构形态

发布时间:2026/9/27 7:11:06

Microsoft Agent Framework 中 Agent 的架构形态 目录1. 应用托管型 AgentApplication-owned Agent可用的模型提供商不同 Model Provider 面向 Microsoft Agent Framework 提供的能力.NET SDK 和 Endpoint2. 自定义实现型 AgentCustom Agent引用 Abstractions 包自定义 AIAgent3. 远程托管型 AgentRemote / Managed AgentMicrosoft FoundryGitHub CopilotCopilot StudioAnthropic ClaudeA2A总结在使用 Microsoft Agent Framework 时会接触到不同类型的 Agent。它们的创建方式、运行位置以及管理方式都有所不同。按照微软官方文档的划分可以主要从下面三类来理解应用托管型 AgentApplication-owned Agent自定义实现型 AgentCustom Agent远程托管型 AgentRemote / Managed Agent今天我们来解剖一下这三种 Agent 的类型。1. 应用托管型 AgentApplication-owned Agent我们首先来介绍第一种。微软官方的命名是 Model providersApplication-owned Agent 这个名字是我根据 Agent 的职责划分命名的一个名字你可以理解为他们两者是等同的。与此同时这也是我们用得最多的一种形态。微软官方在 Model Providers 文档中是这样描述这种职责关系的模型提供商为 Agent 提供推理客户端。你的应用负责 Agent 定义、Instructions、Tools、Middleware 和 Session Policy而 Model Provider 负责模型推理以及 Provider 托管的相关能力。简单来说Agent Runtime 运行在自己的应用中Agent 的定义和执行流程由应用控制Model Provider 主要负责提供模型推理能力。在 Agent Framework 中ChatClientAgent就是这种开发方式中非常重要的一个 Agent 实现。它的基本结构是ChatClientAgent使用IChatClient与底层模型推理服务进行交互。因此Agent 和 Model Provider 实际上是两个不同的概念ChatClientAgent负责 Agent 的执行与运行管理Model Provider负责提供模型推理客户端以及 Provider 托管的相关能力。那么问题来了ChatClientAgent可以使用哪些模型服务这里并不仅仅只有 Azure。Agent Framework 的ChatClientAgent建立在Microsoft.Extensions.AI.IChatClient抽象之上。任何能够提供Microsoft.Extensions.AI.IChatClient实现的推理服务都可以作为ChatClientAgent的后端模型服务。可用的模型提供商不同 Model Provider 面向 Microsoft Agent Framework 提供的能力不同 Model Provider 面向 Agent Framework 暴露或提供的能力并不完全相同。除了基本的模型推理能力之外一些 Provider 还可以提供 Function Tools、 Structured Outputs、Code Interpreter、File Search、MCP Tools、 Background Responses 等能力。.NET SDK 和 Endpoint针对不同的 AI 服务或模型服务Agent Framework 在 .NET 中需要使用 对应的 Client SDK、NuGet Package 以及 Endpoint。到这里第一种 Agent 的开发方式基本就清楚了……2. 自定义实现型 AgentCustom Agent大多数情况下我们可以直接使用 Agent Framework 已经提供的ChatClientAgent。但是如果ChatClientAgent的执行机制无法满足业务需求需要自己控制 Agent 的核心执行逻辑Agent Framework 还提供了更底层的扩展方式直接继承AIAgent实现自己的 Agent。Microsoft Agent Framework 支持通过继承AIAgent类并实现所需的方法来构建 Custom Agent。这里需要注意Custom Agent 并不是和 Application-owned Agent 完全独立的另一套运行模式。Custom Agent 本质上仍然可以运行在自己的应用中只不过 Agent 的核心执行逻辑由开发者自己实现。简单来说当现成的ChatClientAgent无法满足业务场景需要自己控制 Session、消息处理、执行流程或响应生成逻辑时可以考虑实现 Custom Agent。引用 Abstractions 包自定义 Agent 需要引用dotnet add package Microsoft.Agents.AI.Abstractions自定义 AIAgentCustom Agent 的核心是继承 AIAgent并实现必要的 Session 管理和 Agent 执行方法。Session 可以基于 InMemoryAgentSession 实现但并不限定只能使用这一种 Session。下面先通过一个简单骨架看看 AIAgent 的主要扩展点internal sealedclassMyAgent : AIAgent{ // 1. 创建 Session protected override ValueTaskAgentSession CreateSessionCoreAsync( CancellationToken cancellationToken default) { thrownew NotImplementedException(); } // 2. Session 序列化 protected override ValueTaskJsonElement SerializeSessionCoreAsync( AgentSession session, JsonSerializerOptions? jsonSerializerOptions null, CancellationToken cancellationToken default) { thrownew NotImplementedException(); } // 3. Session 反序列化 protected override ValueTaskAgentSession DeserializeSessionCoreAsync( JsonElement serializedState, JsonSerializerOptions? jsonSerializerOptions null, CancellationToken cancellationToken default) { thrownew NotImplementedException(); } // 4. Agent 非流式执行 protected override TaskAgentResponse RunCoreAsync( IEnumerableChatMessage messages, AgentSession? session null, AgentRunOptions? options null, CancellationToken cancellationToken default) { thrownew NotImplementedException(); } // 5. Agent 流式执行 protected override async IAsyncEnumerableAgentResponseUpdate RunCoreStreamingAsync( IEnumerableChatMessage messages, AgentSession? session null, AgentRunOptions? options null, [EnumeratorCancellation] CancellationToken cancellationToken default) { thrownew NotImplementedException();#pragma warning disable CS0162 yieldbreak;#pragma warning restore CS0162 }}从这个骨架可以看到自定义 AIAgent 主要需要处理两部分内容。第一部分是 Session 管理CreateSessionCoreAsyncSerializeSessionCoreAsyncDeserializeSessionCoreAsync第二部分是 Agent 执行RunCoreAsyncRunCoreStreamingAsync实际上Agent Framework 自带的 ChatClientAgent 本身也是 AIAgent 的一个具体实现。Microsoft 已经在其中实现了 Session 管理、非流式执行、流式执行以及与 IChatClient 交互等逻辑。因此大多数常规的模型 Agent 场景直接使用 ChatClientAgent 即可3. 远程托管型 AgentRemote / Managed Agent前面两种方式主要讨论的是 Agent Framework 应用侧的 Agent 实现。除此之外Agent Framework 还可以接入已经运行在远程服务中的 Agent。微软将这一类集成归到 Agent Services。Agent Services 提供的是远程或托管的 Agent Runtime而不仅仅是模型推理能力。远程服务可以负责 Agent Definition、Hosted Tools、Permissions、Session 或 Execution Lifecycle这也是远程托管型 AgentRemote / Managed Agent和 应用托管型 AgentApplication-owned Agent 一个很重要的区别应用托管型 AgentApplication-owned Agent 主要为应用侧 Agent 提供模型推理客户端 远程托管型 AgentRemote / Managed Agent则提供远程或托管的 Agent RuntimeMicrosoft FoundryMicrosoft Agent Framework 提供了对 Microsoft Foundry Agent Service 的集成。应用可以通过 Agent Framework 接入运行在 Microsoft Foundry 中的 Prompt Agent 或 Hosted Agent。Agent 的定义、版本、Hosted Tools、Conversation 以及服务端执行可以由 Microsoft Foundry 负责。GitHub CopilotAgent Framework 可以接入 GitHub Copilot 的 Coding Agent Runtime。Agent Runtime、Session、权限以及 Shell、File、URL 等内置能力和 MCP 连接由 GitHub Copilot 侧负责Agent Framework 则通过统一接口与这个远程 Agent Runtime 进行交互。目前该集成支持 C#、Python 和 Go。Copilot StudioAgent Framework 可以接入已经发布到 Copilot Studio 中的 Agent。Agent 的 Topics、Knowledge、Actions、Plugins 以及远程执行由 Copilot Studio 负责应用通过 Agent Framework 与这个远程 Agent 进行交互。目前该集成支持 C# 和 Python。Anthropic ClaudeAgent Framework 可以接入由 Claude Agent SDK 提供的 Agent Runtime。Agent Runtime、Session、权限、内置 Tools 和 MCP 连接由 Claude Agent SDK 侧负责。目前 Agent Framework 的这项 Agent Service 集成支持 Python。A2AAgent Framework 还可以通过 A2A 接入符合 A2A 规范的远程 Agent。远程 Agent 负责自己的 Agent Definition、Tools、Session、Task 和 ExecutionAgent Framework 通过 A2A 与其进行交互。目前该集成支持 C#、Python 和 Go。总结理解 Microsoft Agent Framework 中的 Agent可以先抓住一个关键问题Agent Runtime 到底运行在哪里谁负责 Agent 的执行如果 Agent 运行在自己的应用中通常可以直接使用 ChatClientAgent通过 IChatClient 接入不同的 Model Provider。如果现成的 ChatClientAgent 无法满足需求需要自己控制 Session、执行流程或响应生成逻辑可以继承 AIAgent 实现 Custom Agent。如果 Agent 已经运行在 Microsoft Foundry、GitHub Copilot、Copilot Studio、Claude Agent SDK 或其他支持的远程环境中则可以通过 Agent Framework 的 Agent Services 集成进行调用。把 Agent 本身、Model Provider 和 Agent Service 这三个概念分开之后Microsoft Agent Framework 的整体结构就比较容易理解了。引入地址
延伸阅读

更多相关文章

2026/9/27 7:11:06

3个实战案例解决wordpress页面重定向循环

3个实战案例解决wordpress页面重定向循环 域名解析指向了服务器IP,服务器却把请求踢回域名,这个死循环一卡,网站直接白屏。很多项目经理接手烂摊子时,面对后台日志里满屏的301和302跳转,脑子里只剩“域名服务器搞不懂”这几个字。别慌…

2026/9/27 7:11:06

网站构建是什么新手入门避坑指南

网站构建是什么新手入门避坑指南 网站做好了却没人访问,这是绝大多数新手最崩溃的瞬间。别急着怀疑自己的代码写得烂,或者SEO没做好,很多时候是因为你对“网站构建是什么”这个基础概念理解得过于浅显。…

2026/9/27 7:56:09

状态机与 BPMN 怎么选?把同一个客户开通流程画两遍

状态机与 BPMN 怎么选?把同一个客户开通流程画两遍 《企业级 Workflow 实战:从审批流到 AI Agent》|第 04 篇 / 共 24 篇 本篇成果:同一案例的状态迁移表、可运行 Python 状态机、BPMN 2.0 XML 模型与结构校验。 阅读边界&#xf…

2026/9/27 7:56:09

电影网站开发背景实战案例:3个技巧让流量翻倍

电影网站开发背景实战案例:3个技巧让流量翻倍 别再被那些花里胡哨却丑得掉渣的模板网站坑了!我见过太多甲方拿着几百块的模板站来问为什么没流量,答案很简单:搜索引擎根本不想给这种“垃圾堆”排名。今天咱们不聊虚的,直接上 实战案例…

2026/9/27 7:56:09

财税法论文文献综述总写不顺?这份“实战工具榜”建议按环节挑

先说一个很典型的财税法学场景: 你要写本科或硕士毕业论文,选题初步定为**“数字经济背景下平台经营者涉税信息共享义务研究”**。这题听着聚焦,真正难的是文献综述:既要梳理税收征管法、电子商务法、个人信息保护法之间的关系&a…

2026/9/27 7:51:09

3步拆解网站好坏怎么分析 新手搞懂源码下载避坑

3步拆解网站好坏怎么分析 新手搞懂源码下载避坑 很多新手老板或者刚转行做网站的朋友,心里都有个坎: 自己不会代码想做网站 ,但看着满屏的技术名词就头大。网上搜一圈,要么全是看不懂的代码,要么就是卖课的套路。其实,判断一个网站到底行不行,或者…

2026/9/27 0:00:45

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/27 0:00:45

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:45

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:45

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/27 0:00:45

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:45

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/25 20:55:38

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/26 19:58:38

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/25 18:34:56

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑