Microsoft 365 Agents SDK多Agent架构实战:一个宿主运行两个AgentApplication的完整指南

📅 2026/8/23 11:20:35
Microsoft 365 Agents SDK多Agent架构实战:一个宿主运行两个AgentApplication的完整指南
Microsoft 365 Agents SDK多Agent架构实战一个宿主运行两个AgentApplication的完整指南【免费下载链接】AgentsThe Microsoft 365 Agent SDK simplifies building full stack, multichannel, trusted agents for platforms including M365, Teams, Copilot Studio, and Webchat.项目地址: https://gitcode.com/gh_mirrors/agents/Agents使用Microsoft 365 Agents SDK微软 365 智能体 SDK构建多Agent系统时“一个宿主运行多个 AgentApplication”是提升部署效率、降低运维成本的关键架构。本文将带你完成多Agent架构实战在同一 ASP.NET Core 宿主中注册并运行两个 AgentApplication让它们各自服务一个独立的 Azure Bot实现真正的一机多智能体部署 为什么要在一个宿主里运行多个Agent在实际业务中你经常会遇到这样的场景同一个团队维护着多个不同用途的 Bot如客服 Bot 与内部工具 Bot每个 Bot 在 Azure Bot Service 中都是独立注册、拥有独立的 Application ID希望它们共用同一个服务进程共享同一份认证、存储与基础设施配置传统做法是每个 Agent 单独部署一个 Web 服务成本高且维护麻烦。而 Microsoft 365 Agents SDK 原生支持在一个宿主进程中注册多个AgentApplication实例每个实例绑定各自的消息端点互不干扰。这就是官方MultiAgent 示例要演示的核心能力。官方示例列表可在 samples/dotnet/README.md 中找到MultiAgent 一栏明确标注“Demonstrates multiple AgentApplication in the same host”。多Agent示例的项目结构一览整个示例位于samples/dotnet/multiagent/目录结构非常精简文件作用Program.cs宿主入口注册两个 Agent 并映射端点Agent1.cs第一个 AgentApplication回显消息Agent2.cs第二个 AgentApplication回显消息appsettings.json双 Bot 认证连接与令牌校验配置AspNetExtensions.csJWT 认证扩展实现multiagent/README.md完整运行说明与配置步骤 前置要求.NET 8.0 运行时以及用于本地调试的 dev tunnels 工具。三步完成两个AgentApplication的注册第一步在宿主中注册两个Agent打开 Program.cs核心只有一处链式调用——连续调用两次AddAgentT()builder.AddAgentDefaults() .AddAgentAgent1() .AddAgentAgent2() .AddAgentAuthorization(b b.AddAgentAspNetAuthentication());这就是多Agent架构的精髓宿主里加几行注册代码就多了几个独立运行的 Agent。第二步为每个Agent声明独立的消息端点每个 Agent 类通过特性Attribute声明自己的名称与消息路径。以 Agent1.cs 为例[Agent(name: Agent1, description: Echo user messages back, version: 1.0)] [AgentInterface(protocol: AgentTransportProtocol.ActivityProtocol, path: /api/messages)] public class Agent1 : AgentApplication { // OnMessageAsync 中将用户消息加前缀 Agent1: 回显 }而 Agent2.cs 的路径则是/agent2/messages前缀为Agent2:。不同路径就是两个 Agent 在同一宿主中互不串线的关键。第三步自动映射默认Agent端点app.UseAgents(); app.MapDefaultAgentEndpoints();MapDefaultAgentEndpoints会读取每个 Agent 的AgentInterface声明自动把对应的 HTTP 消息端点映射到正确的 AgentApplication无需手写路由 消息如何路由两个Azure Bot指向不同端点端点映射完成后架构就像下面这张消息路由配置示意图所展示的不同来源的消息被关联到不同的 Bot 集成地址再分发到各自的处理者对应的配置动作非常直接在 Azure 中创建两个Azure BotBot 1 与 Bot 2记录各自的 Application ID、Tenant ID 与 Client Secret把 Bot 1 的Messaging endpoint指向{tunnel-url}/api/messages把 Bot 2 的Messaging endpoint指向{tunnel-url}/agent2/messages本地通过 dev tunnel 暴露服务devtunnel host -p 3978 --allow-anonymous从此两个 Bot 的消息各自进入同一个进程的Agent1或Agent2处理逻辑。认证配置为两个Bot准备两套服务连接多 Agent 场景下认证配置是唯一需要“翻倍”的部分。打开 appsettings.json你会看到三个配套区域ConnectionsServiceConnection1与ServiceConnection2两组客户端凭据ClientSecret 方式分别对应两个 Bot 的 Client IDConnectionsMap把请求的Audience即 Bot 的 Client ID映射到对应的服务连接TokenValidationAudiences中同时列出两个 Client IDTenantId填写租户 ID下面这张“新增客户端凭据”的配置界面截图展示的就是这类 Client Credentials客户端凭据授权配置的典型形态理解它对填写两组 Bot 凭据很有帮助⚠️ 安全提示示例将密钥写在 appsettings 中仅用于演示。生产环境请遵循 ASP.NET 核心配置最佳实践改用密钥保管方案。开发模式下 JWT 令牌校验默认关闭上线前务必在TokenValidation中启用。运行与验证用WebChat分别测试两个Agent按 multiagent/README.md 的步骤完成配置后在 Visual Studio 中启动项目默认监听 http://localhost:3978 / https://localhost:3979在任一 Azure Bot 的门户中选择Test in WebChat发送一条消息——来自 Bot 1 的消息会被Agent1: xxx回显来自 Bot 2 的则是Agent2: xxx✅看到两个带不同前缀的回复就证明一个宿主中的两个 AgentApplication 已经正确分流工作。多Agent架构的最佳实践存储示例用MemoryStorage方便开发生产环境请改用持久化IStorage让会话状态在重启与集群扩容后依然可用端点隔离务必让每个 Agent 的AgentInterface路径互不相同这是路由正确的前提认证两个 Bot 的 Client ID 都要加入TokenValidation.Audiences缺一不可扩展性想加第三个、第四个 Agent照葫芦画瓢再加一行AddAgentT()即可获取示例代码克隆仓库后即可在samples/dotnet/multiagent/目录下找到完整示例git clone https://gitcode.com/gh_mirrors/agents/Agents从“一个宿主、两个 Agent”起步你可以继续演进为按渠道、按租户、按业务域拆分多个 AgentApplication 的多智能体系统——这正是 Microsoft 365 Agents SDK 为 Teams、Copilot Studio 与 Webchat 等全渠道平台提供多Agent架构的底气所在。【免费下载链接】AgentsThe Microsoft 365 Agent SDK simplifies building full stack, multichannel, trusted agents for platforms including M365, Teams, Copilot Studio, and Webchat.项目地址: https://gitcode.com/gh_mirrors/agents/Agents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考