限流与预算
A2A Agent 调用与模型请求共用同一个调用方 API Key 边界。你在调用方 API Key 上配置的限流和预算,也会作用于该 Key 发起的 A2A 调用,不需要为 A2A 单独配置一套规则。本页说明哪些控 制项会生效、AISIX 如何在 A2A 路径上执行这些控制,以及如何验证行为。
完整的限流字段和计数器存储选项请参见限流。托管部署中的预算配置请参见预算。
网关会治理哪些请求
网关会对 /a2a/<agent> 上的每个 JSON-RPC 调用执行限流和预算检查。/a2a/<agent>/.well-known/agent-card.json 的 Agent card 发现请求不会被限流,因此即使调用方已触发限流,也仍然可以获取其 Key 允许访问的 Agent card,只是要等窗口重置后才能再次调用 Agent。
当某个 A2A 调用因限流或预算被拒绝时,网关会在联系上游 Agent 之前返回错误,并且仍会把这次被拒绝的调用记录为用量事件。
由于 A2A 调用不会解析到模型,模型作用域的限流策略不会作用于它。调用方 API Key 上的请求级限制会生效,包括 Key 内联的 rate_limit,以及 API Key、团队或成员作用域的策略。
哪些限流会生效
调用方 API Key 的 rate_limit 对象可以包含请求速率、Token 速率和并发限制。在 A2A 路径上:
| 限制 | 是否作用于 A2A 调用 | 说明 |
|---|---|---|
rps、rpm、rph、rpd | 是 | 每个 /a2a/<agent> 调用会在对应窗口中计为一次请求。 |
concurrency | 是 | 每个进行中的 A2A 调用会占用一个并发许可,直到调用返回。 |
tpm、tpd | 不消耗 | Token 速率窗口统计模型 Token。A2A 调用没有 Token 成本,因此不会消耗 Token 窗口;但如果该 Key 的模型流量已经耗尽 Token 窗口,同一个 Key 的 A2A 调用仍会被阻断。 |
因此,如果要直接限制 A2A 调用量,应使用请求速率限制(rps、rpm、rph、rpd)或 concurrency。只配置 Token 限制并不能限制 A2A 调用数量;不过,当同一调用方 Key 的模型流量已经把 Token 窗口耗尽时,该 Key 的 A2A 调用会在窗口重置前收到 HTTP 429。
配置限流
在调用方 API Key 上配置限流即可。更新操作会替换整个资源,因此请同时带上现有 Key 哈希、模型访问权限和 Agent 访问权限。下面示例将某个调用方限制为每分钟 1 次 A2A 调用:
export AISIX_ADMIN_KEY="YOUR_ADMIN_KEY"
curl -sS -X PUT "http://127.0.0.1:3001/admin/v1/apikeys/YOUR_API_KEY_ID" \
-H "Authorization: Bearer ${AISIX_ADMIN_KEY}" \
-H "Content-Type: application/json" \
-d '{
"key_hash": "'"${AISIX_API_KEY_HASH}"'",
"allowed_models": [],
"allowed_agents": ["invoice-processor"],
"rate_limit": {
"rpm": 1
}
}'
验证
使用该调用方 API Key 在同一分钟内调用两次 /a2a/invoice-processor。
预期结果: 第一次调用成功;同一分钟内的第二次调用会在 AISIX 联系上游 Agent 之前被 HTTP 429 拒绝。Agent card 获取仍然可用,因为 card 发现请求不会被限流。
在托管部署中应用预算
预算由 AISIX Cloud 托管部署执行。当覆盖某个调用方 API Key 的预算已耗尽时,网关会在联系上游 Agent 之前,以 budget_exceeded 错误拒绝该 Key 的 A2A 调用。这个检查与模型路径使用相同的预算机制。
A2A 调用没有 Token 成本,因此本身不会增加基于 Token 的花费。但如果该调用方的模型流量已经耗尽预算,同一个调用方 API Key 的 A2A 调用也会被阻断,因为二者共用同一个 Key 和预算边界。预算目标、拒绝响应和缓存行为请参见预算。
预算执行依赖 AISIX Cloud 控制面。自托管网关中,请使用调用方 API Key 的限流来治理 A2A 调用量。
在 AISIX Cloud 中管理限流和预算
在 AISIX Cloud 中,这些控制项通过 Dashboard 的调用方 API Key 表单配置,而不是通过 Admin API:
- 打开暴露 A2A Agent 的环境,进入 API keys。
- 创建或编辑 A2A 客户端使用的调用方 API Key。在该 Key 的表单中配置 Agent 访问权限,并在 Key 卡片上的相关区域设置限流和预算。
- 在 Rate limits 区域设置每秒、每分钟、每小时或每天的请求限制,以及并发限制。这些限制同时作用于该 Key 的 A2A 调用和模型请求。Token 限制统计模型 Token,A2A 调用不会增加 Token 计数。
- 在同一个 Key 上添加预算,或在 Budgets 页面配置组织级、环境级预算。一旦该 Key 的预算耗尽,网关也会阻断其 A2A 调用。
Agent 访问权限、限流和预算都挂在同一个调用 方 API Key 上,因此可以在一个位置完成该 Key 的 A2A 治理配置。更多信息请参见 AISIX Cloud。
下一步
- 可观测性:查看 A2A 调用产生的用量事件和指标,包括被拒绝的调用。
- 按 Key 控制 Agent 访问:限定每个 Key 可访问的 Agent。
- 限流:查看完整的限流字段和计数器存储选项。
- 预算:在托管部署中配置预算。