Skip to main content

A2A 中的智能体发现

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

智能体卡片的作用

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

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

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

发现策略

以下部分详细说明了客户端智能体用于发现远程智能体卡片的常见策略:

1. Well-Known URI(众所周知的 URI)

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

  • 机制: A2A 服务器通过在其域上的标准化 well-known URI 托管智能体卡片,使其可被发现。标准路径是 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. 如果智能体卡片存在且可访问,服务器将其作为 JSON 响应返回。
  • 优势:

    • 易于实现
    • 遵循标准
    • 促进自动化发现
  • 注意事项:

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

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

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

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

  • 流程:

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

    • 集中管理和治理。
    • 基于能力的发现(例如,按技能)。
    • 支持访问控制和信任框架。
    • 适用于私有和公共市场。
  • 注意事项:

    • 需要部署和维护注册表服务。
    • 当前的 A2A 规范没有规定精选注册表的标准 API。

3. 直接配置 / 私有发现

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

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

保护智能体卡片

智能体卡片包含敏感信息,例如:

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

保护机制

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

  • 经过身份验证的智能体卡片: 我们建议使用经过身份验证的扩展智能体卡片来保护敏感信息或提供卡片的更详细版本。

  • 安全端点: 在提供智能体卡片的 HTTP 端点(例如,/.well-known/agent-card.json 或注册表 API)上实施访问控制。方法包括:

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

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

未来考虑

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