新闻详情

新闻详情

首页 / 资讯中心 / 详情

Microsoft Agent Framework 中 Agent 的架构形态

发布时间:2026/11/13 12:02:05来源:尧图网络
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 的整体结构就比较容易理解了。引入地址
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/13 0:43:49

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/13 10:09:00

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/12 9:25:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/12 15:57:44

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/13 0:02:27

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉