百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

探索 .NET 中的 A2A:构建协作式 AI 代理的新标准

haoteby 2025-10-02 19:13 19 浏览

随着人工智能应用从单纯的聊天机器人向更复杂的自动化流程演进,代理(Agents)技术正成为实现业务流程自动化的关键。这些代理将大型语言模型(LLMs)视为灵活的编排层,能够动态解析用户意图,并为调用现有 API 构建有效负载。

微软 .NET 生态中的企业级 AI

微软持续在其开发平台中集成 AI 工具,从 Semantic Kernel 中的代理开发框架,到应用程序中日益丰富的模型协同协议(Model Cooperative Protocol, MCP)功能。这些工具使开发者能够构建与 Azure AI Foundry 等服务深度集成的人工智能应用。

单个代理已具备强大能力,但将它们组合成网络时,其效用将呈指数级增长——尤其是在构建融合 LLMs 与其他机器学习技术的专业化工具时。使用代理来编排其他代理,从服务目录中进行选择,为面向服务的架构(SOA)模型提供了现代化的替代方案。代理及其构建的 MCP 服务器,正成为一种新型的接口描述语言(IDL)。

A2A:以任务为中心的代理间通信协议

构建协作式代理网络需要统一的标准,以实现任意代理间的通信、能力描述以及数据交换。这正是 Google 开发的 Agent-to-Agent (A2A) 协议的用武之地。A2A 设计用于支持任何形式的数据和长时间运行的任务。

与以用户为中心的聊天机器人不同,代理(以及 A2A 协议)是以任务为中心的。在 A2A 模型中:

  1. 发起请求的客户端代理:利用其对一组远程代理能力的了解,将任务分解。
  2. 任务分配:将子任务分发给最适合处理的远程代理。
  3. 异步处理与聚合:对于耗时任务,远程代理会返回任务状态或进度通知。客户端代理负责收集各子任务结果,最终组装成面向用户或调用应用的响应。

A2A 正式登陆 .NET
微软近期发布了 .NET A2A SDK 的早期预览版。该 SDK 支持 A2A 交互的
双方

  • 客户端代理:使用 .NET SDK 构建的客户端可以调用任何兼容 A2A 的代理,无论其托管环境或开发语言。
  • 远程代理:同样基于 .NET SDK 构建,特别提供了与 ASP.NET Core 的深度集成,便于为现有代理添加 A2A 支持。

SDK 核心功能预览(V1):

  • 代理能力发现(Agent Discovery)
  • 直接消息传递(Direct Messaging)
  • 基于任务的交互(Task-Based Interactions)
  • 流式数据处理(Streaming Data Handling)
  • 支持快速交互、长工作流和实时操作。

.NET A2A SDK 现状:

  • 开发模式:在 GitHub 上公开开发。
  • 分发:通过 NuGet 包分发。
  • 许可证:Apache 2.0 (企业友好)。
  • 重要提示:当前处于预览阶段,SDK 和 A2A 协议本身都可能发生变化(A2A 协议本身于 2025 年 4 月初才发布)。

快速上手 .NET A2A

入门门槛很低:

  1. 环境:需要 .NET 8.0+ 及你喜欢的 .NET IDE。
  2. 安装:通过 .NET CLI 安装 A2A 核心包和 A2A.AspNetCore 集成包。
  3. 示例:官方示例代码覆盖了客户端、服务器端以及与 Semantic Kernel 的集成场景。

集成策略:

  • 包装现有代理:为已有代理添加 A2A 包装层,负责接收 A2A 消息并将其转换为代理内部格式。
  • 原生集成新代理:使用 A2A SDK 直接在新(或重构的)代理代码中实现 A2A 接口。这是新开发的首选方式,能确保代理上线即具备 A2A 互操作性。

核心概念:代理卡(Agent Card)

A2A 协议的核心是 Agent Card。它是一个 JSON 文档,用于标准化描述代理的能力及其交互方式。它是服务发现的关键:

  • 发布方式:直接通过已知 URL 提供,或发布到注册中心(Registry)。
  • 注册中心:可以是公开或私有的,便于区分内部代理网络和外部互联网访问。
  • 内容要求
    • 不包含机密信息
    • 需实施访问控制(如 OAuth)。
  • 格式特点
    • 混合了机器可读和人类可读的内容(确保基本可解释性)。
    • 最关键部分:skills 数组,详细列出代理提供的技能(功能),包括:
      • 示例提示(Example Prompts)
      • 输入/输出数据类型(Input/Output Types)
    • 接口描述:指定客户端代理应如何调用此代理(支持的协议如 REST, gRPC)以及对应的接口 URL (Endpoint)。

.NET A2A SDK 的优势:

  • 代码驱动:大部分 Agent Card 内容可通过代码定义和生成,确保接口描述与代理实现同步更新。
  • 内置对象模型:SDK 提供 AgentCard 对象,方便客户端解析远程代理的卡片信息并定位端点。
  • 简化测试:代码化定义便于编写集成测试。

代理间通信模式
.NET A2A SDK 支持灵活的通信方式:

  1. 简单消息传递:客户端发送消息并异步等待响应(利用 .NET 的 async/await)。
  2. 复杂任务处理:提交长时间运行的任务,客户端可轮询状态(运行中/完成/失败)或接收进度通知。
  3. 流式数据传输:SDK 提供了处理流式数据的便捷方式。

ASP.NET Core 深度集成
A2A.AspNetCore 包是 SDK 的一大亮点:

  • 快速暴露代理:可将运行在 ASP.NET Core 中的 AI 应用快速转化为 A2A 兼容的远程代理。
  • 路由配置:类似 ASP.NET Core 的 MCP 支持,可轻松添加路由(例如 /agent)。
  • 简化实现:扩展方法封装了大部分 A2A 协议处理逻辑,开发者主要关注业务逻辑(处理传入的 A2A 消息并生成响应)。

测试与验证:A2A 检查器 (Inspector)
项目提供了
A2A Inspector (一个 Python 工具) 用于:

  • 获取并可视化代理的 Agent Card。
  • 根据 A2A 规范验证代理的行为。
  • 提供基础控制台,用于直接与代理模型交互测试。

总结与展望

虽然 .NET A2A SDK 和 A2A 协议本身仍在快速发展中,但当前的预览版已为探索代理间协作提供了坚实的基础。它与 ASP.NET Core 的 MCP 工具共享设计理念,两者可协同工作甚至包装相同的模型后端。

微软正大力投入 .NET 生态的 AI 工具链,.NET A2A SDK 是其快速交付给开发者用于实验和原型开发的又一力作。

为何值得关注?

对于计划构建基于任务的、涉及长时间运行事务或复杂编排的代理应用,A2A 和 .NET SDK 是一个极佳的起点。其核心价值在于:

  • 标准化互操作:打破代理间的壁垒。
  • 异步与状态管理:优雅处理耗时任务,保持用户和系统知情。
  • 利用 LLM 上下文:将现代 AI 能力有效整合进长期业务流程。

A2A 协议及其 .NET 实现,有望引领我们超越功能有限的传统聊天机器人,开启真正智能化、自动化业务流程的新篇章。

相关推荐

如何为MySQL服务器和客户机启用SSL?

用户想要与MySQL服务器建立一条安全连接时,常常依赖VPN隧道或SSH隧道。不过,获得MySQL连接的另一个办法是,启用MySQL服务器上的SSL封装器(SSLwrapper)。这每一种方法各有其...

OpenVPN客户端配置_openvpn客户端配置文件解析

...

k8s 证书问题排查_k8s dashboard 证书

从去年开始一些老项目上陆陆续续出现一些列的证书问题,(证书原理这里就不说了,官方文档一堆)多数刚开始的表现就是节点的kubelet服务起不来,节点状态NotReady表现日志如下failed...

企业级网络互通方案:云端OpenVPN+爱快路由器+Win11互联实战

企业级网络互通方案:OpenVPN搭建公有云+爱快路由器+Win11三地互联实战指南「安全高效」三地局域网秒变局域网实施环境说明...

OpenV** Server/Client配置文件详解

Server配置详解...

接口基础认知:关键信息与合规前提

1.核心技术参数(必记)...

S交换机通过SSH登录设备配置示例(RADIUS认证+本地认证独立)

说明:●本示例只介绍设备的认证相关配置,请同时确保已在RADIUS服务器上做了相关配置,如设备地址、共享密钥、创建用户等配置。●通过不同的管理域来实现RADIUS认证与本地认证两种方式同时使用,两...

SSL证书如何去除私钥密码保护_ssl证书怎么取消

有时候我们在生成证书的时候可以加入了密码保护。然后申请到证书安装到了web服务器。但是这样可能会带来麻烦。每次重启apache或者nginx的时候,都需要输入密码。那么SSL证书如何去除私钥密码保护。...

SSL证书基础知识与自签名证书生成指南

一、证书文件类型解析...

S交换机通过SSH登录设备配置示例(RADIUS认证)

说明:本示例只介绍设备的认证相关配置,请同时确保已在RADIUS服务器上做了相关配置,如设备地址、共享密钥、创建用户等配置。假设已在RADIUS服务器上创建了用户名yc123,密码test#123。对...

HTTPS是什么?加密原理和证书。SSL/TLS握手过程

秘钥的产生过程非对称加密...

HTTPS TLS握手流程_进行tls握手

1.客户端向服务器发送`ClientHello`消息,包括支持的TLS版本、加密套件、随机数等信息。2.服务器收到`ClientHello`消息后,解析其中的信息,并根据配置选择一个加密套件。3....

Spring Boot 单点登录(SSO)实现_spring boot 单点登录jwt

SpringBoot单点登录(SSO)实现全指南单点登录(SingleSign-On,SSO)是一种身份验证机制,允许用户使用一组凭证登录多个相关但独立的系统。在微服务架构和企业级系统中,SS...

源码分享:在pdf上加盖电子签章_pdf如何加盖电子公章

在pdf上加盖电子签章,并不是只是加个印章图片,。而是要使用一对密钥中的私钥对文件进行签字。为啥要用私钥呢?很简单,因为公钥是公开的,其他人才可以用公钥为你证明,这个文件是你签的。这就是我们常说的:私...

微信支付商户API证书到期 怎么更换

微信支付商户API证书到期更换是一个非常重要的操作,需要仔细按照流程进行。如果证书过期,所有通过API的支付、退款等操作都会失败,将直接影响您的业务。请按照以下详细步骤进行操作:重要前提:分清...