多租户与多智能体路由

多租户与多智能体路由

同一个 A2A 端点可以服务多个智能体或多个租户。A2A 协议不规定具体的路由实现,运营方可以自由选择最适合自身基础设施的方式。本文介绍协议支持的路由机制,以及当 Agent Card 公布了路由标识时客户端必须遵守的规则。

概述

一种常见的部署模式是把多个智能体放在同一个主机或反向代理之后。从外部看,这些智能体位于同一个域名下,但需要区分每一个智能体,才能把请求交付到正确的后端。

协议提供三种互补的方式:

1. 基于 URL 的路由(子路径)

为每个智能体分配不同的 URL 前缀。每个智能体的 Agent Card 在 supportedInterfaces 中公布自己的 url,客户端因此会自动把请求发送到正确的路径。

“billing” 智能体的 Agent Card:

{
  "name": "Billing Agent",
  "supportedInterfaces": [
    {
      "url": "https://agents.example.com/billing",
      "protocolBinding": "HTTP+JSON",
      "protocolVersion": "1.0"
    }
  ]
}

“support” 智能体的 Agent Card:

{
  "name": "Support Agent",
  "supportedInterfaces": [
    {
      "url": "https://agents.example.com/support",
      "protocolBinding": "HTTP+JSON",
      "protocolVersion": "1.0"
    }
  ]
}

网关或反向代理把 /billing/* 和 /support/* 路由到对应的后端。这是最简单的方式,除了读取 Agent Card 之外,客户端不需要任何特殊处理。

2. 基于认证头的路由

当多个智能体共用同一个 URL 时,网关可以利用请求中已有的认证凭据判断路由目标。认证要求在 Agent Card 的 securitySchemes 等字段中声明,使这种方式对客户端完全可发现。

示例:

  • 令牌的声明(如 audience 或 scope)标识目标智能体的 Bearer 令牌;
  • 在网关配置中映射到特定智能体的 API Key。

网关检查凭据,并把请求转发到对应后端,无需对 A2A 协议消息本身做任何修改。

3. 基于请求体 tenant 字段的路由

每个 A2A 请求消息都包含一个可选的 tenant 字段。这是一个不透明字符串,其值完全由服务器运营方定义,协议不对格式或语义做任何限制。网关或智能体实现可以检查这个字段,把请求转发到对应的后端。

客户端针对某个智能体应该使用的 tenant 值,由 supportedInterfaces 中的 AgentInterface 条目公布:

{
  "name": "Billing Agent",
  "supportedInterfaces": [
    {
      "url": "https://agents.example.com/a2a",
      "protocolBinding": "HTTP+JSON",
      "protocolVersion": "1.0",
      "tenant": "billing"
    }
  ]
}

客户端要求:客户端必须在每个请求消息中原样带上所选 AgentInterface 条目里的 tenant 值。如果该 AgentInterface 没有设置 tenant,则请求中必须省略该字段。规范性规则见协议规范 。

在 HTTP+JSON 绑定中,tenant 也可以作为路径前缀出现,例如 POST /{tenant}/message:send,与不带租户的 POST /message:send 并存。

服务器可以用 tenant 字段表示适合其部署的任何路由键:智能体标识、工作区 slug、组织 ID,或其他任意不透明的区分符。

组合使用

这三种方式并不互斥。例如,部署时可以用基于 URL 的路由区分主要产品线,再用 tenant 字段区分每条产品线内的各个客户。合适的组合取决于运营方的架构和所用网关的能力。

发现多个智能体

当多个智能体部署在共享域名之后时,每个智能体应在合适的位置发布各自的 Agent Card(参见智能体发现 )。客户端分别获取每个智能体的 Agent Card,并使用其中的 supportedInterfaces 信息(包括任何 tenant 值)与正确的智能体通信。

来源:A2A 官方文档 · Multi-Tenancy