网关不变量Gateway 只根据可信请求上下文执行横切政策;它可以选择模型端点,不能猜测业务终态;一旦响应已流出或 Tool 已产生外部效果,就不能把透明重放伪装成同一次调用。

明确 Gateway 做与不做

Gateway 位于 Agent Runtime 与模型 Provider 之间,统一完成调用方认证、模型授权、协议适配、路由、配额、预算、Telemetry 和费用归因。对所有模型都必须执行的数据分类、内容检查或区域政策也适合在此落地,因为这里能看到调用身份、目标模型和请求元数据。

Azure API Management 的 GenAI Gateway 文档列出的 Token 限制、语义缓存、负载均衡和熔断证明这些横切能力可以被网关集中执行。但这是产品能力事实,不代表所有企业都应采用同一实现。Gateway 的组织价值仍要由统一覆盖率、尾延迟、事故隔离和单位成本证明。

Gateway、Runtime 与策略服务的边界
问题责任主体原因
调用哪个模型端点Gateway 按约束和健康信号选择需要全局容量与 Provider 状态
下一步是否调用 ToolAgent Runtime依赖任务状态与 Observation
主体能否访问模型Policy 决策,Gateway 执行授权真源不能埋在路由代码
任务是否完成业务验证器模型响应成功不等于业务成功

不要把所有 Provider 字段压成最低公分母。通用契约负责稳定语义,Provider Options 显式承载 Reasoning、Prompt Cache、内置 Tool 或批处理等差异;上层声明可接受的能力与降级,而不是依赖网关静默删除参数。

请求路径上的关键阶段

请求先从经过验证的会话或工作负载凭据解析租户、应用、用户、用途和 Trace,不接受 Prompt 中声称的身份。随后完成目标模型授权、Schema 与大小检查、数据分类和区域约束,再进行配额预留与路由。Provider 返回流事件后,网关逐帧透传并记录首 Token、完成、取消和 Usage;最后结算预算并把 Provider 回执与上游 Trace 关联。

Gateway 请求路径:在进入 Provider 前完成不可回滚的准入决定
解析可信上下文tenant、app、user、purpose、trace。
授权与校验模型、数据、区域、Schema、内容政策。
配额预留与路由请求、Token、并发、费用和健康。
流透传与结算事件、取消、Usage、审计和预算差额。

Token 预算在调用前只能估算,完成后必须以 Provider Usage 或可验证计量结算。预留过少会超卖容量,预留过多会降低利用率;可用“最大输出上限 + 输入估算”保守预留,再在结束、取消或超时后释放差额。流连接断开时要向 Runtime 返回明确的“可能已消费、输出不完整”状态,不能统一归一成可安全重试的 500。

审计与隐私默认记录哈希、长度、分类、版本、Usage 和决定,不默认持久化 Prompt、响应、Tool 参数与 Reasoning。OpenTelemetry 的 GenAI 属性规范也提示部分内容字段可能包含敏感信息;采集必须按字段、用途与保留期显式开启。

公共契约与特性逃生舱

公共契约至少稳定消息与多模态片段、Tool Definition、流事件、停止原因、Usage、错误类别、取消和 Deadline。Adapter 负责把 Provider 原始协议映射到这些语义,同时保留原始请求 ID、模型版本和未识别字段,便于排障与渐进升级。

Adapter 契约测试矩阵
维度必须验证禁止的伪兼容
流事件顺序、增量文本、Tool 参数、Usage、终止与取消把未知事件丢弃后仍标成功
错误鉴权、限流、容量、内容阻断、超时、连接中断全部映射为可重试错误
能力模态、上下文、Tool、结构化输出、区域根据模型名称猜能力
版本请求 Schema、响应 Schema、默认参数和废弃字段Provider 升级后直接全量切换

能力探测由控制面定期执行并生成版本化元数据,数据面按请求绑定版本。发布新 Adapter 时,用录制的无敏感契约样本、Provider Sandbox 和影子流量比较事件序列、完成原因与 Usage;先按租户或应用灰度,再扩大流量。

工程建议:对 Provider 特性采用 namespaced options,并要求调用方声明 fallback 行为。例如目标端点不支持缓存控制时,明确拒绝、移除该可选能力或切换等价端点,不能静默改变成本与隐私语义。

路由同时考虑质量和实时健康

路由先做硬约束过滤:任务所需模态与 Tool 能力、风险等级、数据地域、租户准入、模型版本和最大上下文。剩余候选再按离线评测质量、在线成功率、容量、尾延迟和预算排序。质量不是一个全局分数,同一模型在代码修复、抽取与高风险决策上可能有不同门槛。

路由决策层次与证据
层次输入失败处理
合规过滤租户、地域、数据分类、用途、授权无候选则拒绝并给出可行动原因
能力过滤模态、上下文、Tool、结构化输出、版本不做能力降级,除非调用方显式允许
质量门槛任务级 Eval 与回归结果低于门槛的便宜模型不得入选
实时选择并发、错误率、p95、限额、预算熔断、半开探测或转移到等价候选

熔断按 Provider、区域、模型和错误类别分桶,避免一个模型的容量错误拖走整家 Provider。半开请求使用小流量探测,不把所有积压同时释放。Fallback 必须重新检查数据政策与质量门槛,并在 Trace 中记录路由理由与原始失败。

透明重试只适用于确认 Provider 未接收、尚未向客户端输出、没有 Tool 或外部副作用且 Deadline 仍足够的请求。首 Token 已流出后,另一个模型续写会造成语义拼接;Tool Call 已被 Runtime 执行后重放更可能重复副作用。此时 Gateway 报告部分结果,由 Runtime 根据任务状态决定恢复。

多层配额保护平台与租户

请求数不足以表达模型负载。Gateway 同时管理请求速率、输入与输出 Token、并发流、费用和特定 Provider 容量,并按组织、租户、应用、用户、模型与业务优先级组合计数。短窗口 Token Bucket 吸收正常突发,长窗口预算约束持续消费;交互、批处理和关键任务使用不同队列与预留。

Microsoft 官方文档明确指出 Provider 的 Token/分钟配额需要在多个应用间分配;多区域文档同时提醒部分网关的计数器按 Gateway 或区域独立,不能假定天然全局一致。实现时要明确计数一致性:强一致全局额度会增加延迟与故障耦合,本地额度加中央预算更可用,但必须保留安全余量和对账。

过载时的公平与背压
情形网关动作客户端证据
瞬时突发在有界队列中平滑,按租户公平调度预计等待、剩余额度、Deadline
持续超额429 拒绝,保护共享 Provider 容量Retry-After、限制维度、重试窗口
关键任务预留使用独立份额,不无限抢占普通流量优先级与预算归属
Provider 过载降低并发、熔断或路由到等价候选原始状态、路由理由、是否可重试

拒绝本身也是 API 契约。返回限制维度、当前消耗、可重试时间和申请扩容路径,客户端才能退避或降级。容量压测需要覆盖长流、超长 Prompt、取消风暴和 Provider 延迟抖动,不能只测短响应 QPS。

缓存只有在语义与隐私允许时使用

Provider Prompt Cache 通常复用已处理前缀,减少延迟或计费,但仍由 Provider 定义匹配、生命周期与隔离;Gateway 应记录缓存命中 Usage,不能把它宣传为本地数据不会离开系统。语义结果缓存则直接复用旧答案,只有请求等价、事实允许过期、身份与权限一致并且随机性不是产品目标时才安全。

缓存层次与启用条件
缓存Key 必含默认禁用场景
能力/配置缓存Provider、模型、版本、区域、策略版本紧急撤销尚未传播
Prompt 前缀缓存租户、Provider、模型、前缀内容、缓存控制数据政策不允许 Provider 缓存
精确结果缓存规范化请求、身份/租户、模型、Prompt、Tool、策略版本用户特定、时效数据、外部状态变化
语义结果缓存以上全部加检索模型、阈值和证据版本高风险决策、创作、敏感内容、严格新鲜度

缓存命中也要重新执行当下授权和输出政策,不能把旧授权结果一起缓存。紧急撤销、租户删除、模型或 Tool 版本变化必须触发可验证失效。缓存收益以单位成功任务的成本与延迟衡量,同时监控错误复用率和陈旧答案率;只看命中率会鼓励危险复用。

Gateway 是成本与访问证据源

Gateway 能统一记录输入、输出、缓存与 Reasoning Token,Provider、模型、区域、路由理由、调用方、租户、应用、业务场景和价格版本,因此适合作为访问与用量证据源。它不是最终财务账本:退款、承诺用量、批量折扣和 Provider 账单差异仍需由成本系统对账。

OpenTelemetry Semantic Conventions 1.43.0提供跨语言遥测命名基础,但 GenAI 约定仍存在版本与稳定性变化。生产 Schema 要记录约定版本,使用内部稳定映射,并对迁移执行双写或离线转换,不能把实验属性直接当长期财务合同。

从请求事件到治理证据
证据回答的问题隐私控制
访问决定谁在什么政策版本下访问了什么模型主体标识最小化、访问分级
路由事件为何选中或切换 Provider,是否降级不记录无关 Prompt 内容
Usage 与价格成本归属、预算异常、Provider 对账租户隔离、账单角色授权
流与错误首 Token、部分输出、取消、重试边界事件内容默认不落盘

Showback 让团队看到消费与单位成本,Chargeback 则进入真实内部结算,后者需要财务认可的价格版本和对账规则。预算告警应关联业务成功率:成本突然下降可能来自网关拒绝、模型退化或 Trace 丢失,不一定是优化。

主动提取:为什么 Gateway 不应自动重试所有 5xx?
5xx 不说明 Provider 一定未接收。响应可能已部分流出,甚至 Tool Call 已被上游执行。只有可证明无外部效果、未输出且仍在 Deadline 内,透明重试才安全。
迁移判断:一个更便宜的模型通过健康检查,能否直接成为 Fallback?
不能。它还必须通过任务级质量、数据地域、授权、模态、Tool 能力和版本约束;健康只说明可调用,不说明适合当前任务。
容量诊断:QPS 很低但 Gateway 仍过载,优先检查什么?
检查长流并发、Prompt/输出 Token、连接占用、Provider TPM、策略处理成本、队列等待与 Telemetry 基数。模型流量不能只用请求数刻画。

资料与事实边界

以下以官方文档、标准、论文和原始工程资料为主。厂商 API、价格、限额与模型能力会变化,落地时仍需按目标版本做能力探测和回归。

  1. Microsoft Learn:AI gateway in Azure API Management — Token 配额、语义缓存、负载均衡、熔断与容量边界
  2. Microsoft Learn:API Management gateway overview — 吞吐影响因素与按生产条件负载测试
  3. OpenTelemetry:Semantic Conventions 1.43.0 — Trace、Metric、Event 与属性的统一语义及稳定性边界
  4. RFC 6585:Additional HTTP Status Codes — 429 Too Many Requests 与 Retry-After 语义
  5. OpenAI API:Prompt caching — Provider Prompt Cache 的命中、Usage 与生命周期事实示例