Skip to content

A2A 中的智能体发现

要使用 Agent2Agent (A2A) 协议进行协作,AI 智能体需要首先找到彼此并了解其能力。A2A 通过 Agent Card 标准化智能体的自我描述。然而,这些 Agent Card 的发现方法因环境和需求而异。Agent Card 定义了智能体提供的功能。客户端智能体有多种策略来发现这些卡。策略的选择取决于部署环境和安全要求。

Agent Card 的作用

Agent Card 是一个 JSON 文档,作为 A2A 服务器(远程智能体)的数字"名片"。它对智能体发现和交互至关重要。Agent Card 中包含的关键信息如下:

  • 身份: 包括 namedescriptionprovider 信息。
  • 服务端点: 指定 A2A 服务的 url
  • A2A 能力: 列出支持的功能,如 streamingpushNotifications
  • 身份验证: 详细说明所需的 schemes(例如 "Bearer"、"OAuth2")。
  • 技能: 使用 AgentSkill 对象描述智能体的任务,包括 idnamedescriptioninputModesoutputModesexamples

客户端智能体使用 Agent Card 来确定智能体的适用性、构建请求并确保安全通信。

发现策略

以下部分详细介绍了客户端智能体用于发现远程 Agent Card 的常见策略:

1. 已知 URI

此方法推荐用于公共智能体或旨在在特定域内广泛发现的智能体。

  • 机制: A2A 服务器通过在其域上的标准化 well-known URI 托管其 Agent Card 来使其可被发现。标准路径是 https://{agent-server-domain}/.well-known/agent-card.json,遵循 RFC 8615 的原则。

  • 过程:

    1. 客户端智能体知道或通过编程发现潜在 A2A 服务器的域(例如 smart-thermostat.example.com)。
    2. 客户端向 https://smart-thermostat.example.com/.well-known/agent-card.json 执行 HTTP GET 请求。
    3. 如果 Agent Card 存在且可访问,服务器会将其作为 JSON 响应返回。
  • 优势:

    • 实现简单
    • 遵循标准
    • 促进自动发现
  • 注意事项:

    • 最适合开放或域控制的发现场景。
    • 如果 Agent Card 包含敏感详细信息,则在提供 Agent Card 的端点需要身份验证。

2. 精选注册表(基于目录的发现)

此方法在企业环境或公共市场中使用,其中 Agent Card 通常由中央注册表管理。精选注册表充当中央存储库,允许客户端根据"技能"或"标签"等标准查询和发现智能体。

  • 机制: 中介服务(注册表)维护 Agent Card 集合。客户端查询此注册表以根据各种标准(例如提供的技能、标签、提供商名称、能力)查找智能体。

  • 过程:

    1. A2A 服务器将其 Agent Card 发布到注册表。
    2. 客户端智能体查询注册表的 API,并按"特定技能"等标准搜索。
    3. 注册表返回匹配的 Agent Card 或引用。
  • 优势:

    • 集中管理和治理。
    • 基于能力的发现(例如按技能)。
    • 支持访问控制和信任框架。
    • 适用于私有和公共市场。
  • 注意事项:
    • 需要部署和维护注册表服务。
    • 当前 A2A 规范未规定精选注册表的标准 API。

3. 直接配置/私有发现

此方法用于紧密耦合的系统、私有智能体或开发目的,其中客户端直接配置了 Agent Card 信息或 URL。

  • 机制: 客户端应用程序利用硬编码详细信息、配置文件、环境变量或专有 API 进行发现。
  • 过程: 该过程特定于应用程序的部署和配置策略。
  • 优势: 此方法在已知、静态关系内建立连接时简单直接。
  • 注意事项:
    • 在动态发现场景中不够灵活。
    • Agent Card 信息的更改需要客户端重新配置。
    • 基于专有 API 的发现也缺乏标准化。

保护 Agent Card

Agent Card 包含敏感信息,例如:

  • 内部或受限智能体的 URL。
  • 敏感技能的描述。

保护机制

为了降低风险,应考虑以下保护机制:

  • 经过身份验证的 Agent Card: 我们建议对敏感信息或提供更详细版本的卡片使用经过身份验证的扩展 Agent Card
  • 安全端点: 在提供 Agent Card 的 HTTP 端点(例如 /.well-known/agent-card.json 或注册表 API)实施访问控制。方法包括:

    • 双向 TLS (mTLS)
    • 网络限制(例如 IP 范围)
    • HTTP 身份验证(例如 OAuth 2.0)
  • 注册表选择性披露: 注册表根据客户端的身份和权限返回不同的 Agent Card。

任何包含敏感数据的 Agent Card 都必须受到身份验证和授权机制的保护。A2A 规范强烈建议使用带外动态凭证,而不是在 Agent Card 中嵌入静态机密。

未来考虑

A2A 社区正在探索标准化注册表交互或高级发现协议。