跳到正文

第 9 章 · AI 网关与统一流量治理 ​

核心观点 + 逻辑框架(运行篇 · 流量治理入口)

原书章节 ↗

▍速览 ​

一句话版(开场,约 20 秒)

模型、工具、Agent 的流量怎么治理?AI Gateway 在三条访问路径上建立一致的策略执行点:LLM Gateway 管路由与预算(严格预算=原子预留+可证明上限)、MCP Gateway 管工具鉴权(发现≠授权)、Agent Gateway 管入口与任务关联。三种语义可组合,但都不拥有业务 Task 与 Outcome 的权威。

一段话版(展开,约 60–90 秒)

模型、工具、Agent 的调用流量怎么治理?答案是 AI Gateway,在三条访问路径上建统一的策略执行点。这里要分清三种语义,不是三个产品。LLM Gateway 管模型调用:路由选模型、失败降级、按 token 计量。关键是预算要分四档——速率限制管 QPS,时间窗管累计用量,余额配额近实时扣,严格预算才是硬上限,要原子预留、最大消耗可证明、幂等结算;还有重试预算必须跨层传递:SDK 一次逻辑调用最多 3 次、网关每次转发最多 3 次,乘积可放大到 9 次到达上游;供应商侧是否重投还不受控制。MCP Gateway 管工具调用:工具出现在清单里只说明被通告,不等于已授权、健康、可执行;发现、授权、执行要分开,协议说明不是身份证明,鉴权一定在转发之前。Agent Gateway 管入口:身份路由、租户配额、任务关联——Task 暂停和恢复是业务模型的事,网关只保留关联信息,让入口故障不丢调用和任务的关系。最后统一治理四条线:身份映射一致、审批未决不执行、批准后重新准入、审计记录不等于业务证据。效果好不好,用 Task 账本算总成本,不用单次请求成功率。

  • 三种语义:LLM(路由/降级/计量)|MCP(代理/鉴权/隔离)|Agent(入口/配额/关联)
  • 一条边界:网关管准入转发记录,不定义 Task/State/Outcome
  • 预算四档:速率限制→时间窗→余额配额→严格预算(原子预留)
  • 重试纪律:错误分类先行;预算跨层传递防乘积放大
  • 治理闭环:身份映射·审批重准入·审计≠Evidence·Evaluation 无发布权

一句话(收尾)

把边界设计清楚,比把更多功能集中到网关里更重要——网关只保证准入、转发与记录的一致性。

▍逻辑框架(记忆卡片) ​

① 命题:一致的策略执行点与边界 ​

集中治理 ≠ 集中所有执行 · 共享身份与策略管理 · 按流量类型隔离数据面七组件边界:API Gateway / Service Mesh / Registry / Harness / Agent Runtime / 业务应用 / 获授权 Verifier 各司其职;Registry 被网关或控制面查询,不因集成而成为网关业务职责

AI Gateway 在模型、工具、Agent 的访问路径上建立一致的策略执行点,并与任务执行系统协同。网关三项不承担:不判断模型输出是否满足业务成功标准;不把“工具可发现”等同于已授权 / 健康 / 可执行;不定义 Task、业务 State、Checkpoint 或恢复语义。

② AI 流量新增的四类约束 ​

  • A 长连接与流式输出:SSE 只是传输形式,字节切片可能含半个 / 多个事件,首 token ≠ 首字节
  • (五类超时:连接 / 首字节 / TTFT / 流式空闲 / 总时限)
  • B 大请求体与上下文:缓冲内存成本 · 增量解析
  • C 按 token 计费:准入估算 ≠ 结束实际;限流 / 配额 / 预算分开建模
  • D 多轮长程任务:亲和利于缓存复用,但 KV cache 复用是性能优化,不是业务状态恢复

③ LLM Gateway:路由、重试与预算 ​

  • 模型选择与端点选择分开:静态映射 / 权重(灰度主备,映射变更须回归)|成本感知路由(看返工成本,不只单次价格)
  • 语义路由(分类器须评估 + 回退路径)|推理端点选择(队列 / 在途 / KV cache 信号)
  • 可靠性:错误分类先于重试:限流看重置时间;服务端错误看调用语义;认证错误终止修复;上下文超限不简单截断历史;“尚未收到响应体 ≠ 上游尚未执行”;每次尝试独立 attempt 标识
  • 重试预算跨层传递:SDK / 网关 / 供应商各设上限会乘积放大(3×3=9 次);总截止为绝对时间,剩余额度由调用方给出,网关按 call_id 原子扣减,耗尽返回明确错误

统一接口先声明能力子集;不支持的参数返回错误,不静默忽略差异 · 留痕对账:适配器版本 · 实际 provider / 模型 · 请求模型别名 · 原始用量来源,协议转换后可追溯

预算四档,只有严格预算能承诺硬上限:

  • A 请求速率限制:QPS 每秒请求数,管准入速度,不管 token 总成本
  • B token 时间窗:累计用量 · 按窗口结算,窗口内软上限
  • C 余额型配额:准入查余额、结束扣减,近实时,非严格并发预算
  • D 严格预算:可证明最大消耗 + 原子预留 + 幂等结算退款

“请求前检查、响应后扣减”无法保证硬上限(余额 100、两个最大消耗 80 同时通过 → 160);预留覆盖输入 + 受约束最大输出 + 计费项,重试单独占额度,token 配额与金额预算分开。

④ MCP Gateway:发现、授权与执行分离 ​

  • 准入四步:认证(谁在调用,独立于协议)→ 协议校验(版本 / 头部镜像 / 方法 / 报文)→ 授权(主体 / 工具 / 参数)→ 转发(重新构造)

发现 ≠ 授权:清单中出现只说明被通告,调用权 / 依赖健康 / 执行成功仍需独立判断 · 协议说明 ≠ 身份证明:逐请求元数据只服务协议校验与转发,头部辅助分类,执行前验证与正文一致tools/list 过滤 ≠ tools/call 不再鉴权版本基线:Legacy(initialize)/ Modern(逐请求元数据 + server/discover);2025-03-26 Streamable HTTP、2025-11-25 实验性 Tasks、2026-07-28 Tasks 移至可选扩展桥接方向显式声明:仅 Modern 下游 → Legacy 上游;Legacy 下游到 Modern-only 上游的反向路径未声明支持REST-to-MCP:参数正确编码,限制可变主机 / 路径 / 出站目标防 SSRF;字符串前缀判断“只读 SQL”不可靠,须结合受限账户与资源端权限四类工具场景:数据查询 / 支付 / 集群管理 / 文件读取,Schema 校验之外另约束范围、权限、阈值、目录与数据分级等业务策略

  • 安全:默认拒绝;ACL 从服务级白名单细化到高风险工具参数;有效权限 = 调用者授权 ∩ 工作负载授权 ∩ 任务委托 ∩ 资源端限制
  • 网关“不可绕过”前提:凭证不下发 + 出口网络受控 + 服务发现与域名解析收敛 + 直连路径禁止 + 旁路审计;纵深防御 = 框架 + 网关 + 资源服务器,没有任何一层能宣称绝对安全

⑤ Agent Gateway:入口、任务关联与租户 ​

  • 关联对象权威各归其位:Task = 业务任务模型 | Session = 会话所属系统 | Turn = Harness
  • Call/Attempt = 调用系统与执行点 | State/Checkpoint = 业务模型 + Runtime | Outcome = 业务应用或授权 Verifier
  • (网关只保留关联信息:入口重启不应成为任务真相丢失的原因;Task 暂停、保存、恢复由执行系统决定)
  • 路由 = 选择入口能力,不是判断执行结果:目标不可用返回暂不可路由或转恢复入口,不能扔到空运行时声称“已续跑”;ACP(v2 仍 Draft)与 A2A(v1.0.0 正式)成熟状态不同
  • 租户隔离:身份(人 / 工作负载 / Agent / Task)与财务归属(组织 / 团队 / 项目)是正交维度;并发隔离区分入口在途与 Runtime 活动任务;借用空闲容量 ≠ 可收回已执行操作

Task 分层账本:task_id → session_id → turn_id → call → attempt_id 归因链路;网关日志只是调用账本的一部分,Trace 不是财务权威账本;模型返回的 tool_calls 是模型输出 ≠ 工具已执行。

⑥ 统一治理:身份映射 · 审批重准入 · 审计证据三条横切治理线 ​

  • 主体映射(身份):清除客户端伪造内部身份头 → 委托核验(与调用者原权限取交集,不因协议自述扩大)→ 凭证处理(按显式策略生成 / 委托,默认不透传下游凭证)→ 记录(审计 + 账本)
  • 拒绝分支与结果分支同等重要:未通过认证 / 鉴权 / 预算准入 → 终止并记录判定;审计既记准入依据,也记执行结果
  • 审批约束转发:挂起期间不长时间持有 HTTP 连接,等待由业务侧承接;审批超时 ≠ 自动降级只读(改变请求含义须重新授权);执行结果未知不盲目重试

审批未决不执行 · 批准后必须重新准入:身份 / 委托 / 参数摘要 / 预算可能已变 · 审计材料 ≠ 业务 EvidenceFinOps:组织 / 团队 / 项目映射保留历史有效期;实际模型 · 缓存 token 类别 · 价格版本 · 币种 · 账期共同决定费用策略集中管理、执行分布在各入口与资源端,经控制面发布;命中规则、重置时间与申诉渠道可解释,同时信息最小披露

审计回答**“谁何时申请了什么、命中哪条策略”**;任务成功与否由成功标准与 Verifier 判定,审计记录不能充当业务证据。

⑦ 控制面联动:受控变更链 ​

  • 受控变更链:观测与诊断 → 候选建议 → 构建与验证 → 治理授权与发布门禁 → 灰度与控制面发布 → 运行反馈回流
  • 控制面管声明式配置 / 版本 / 发布状态,数据面执行,Registry 提供目录与健康信号;模型服务 / MCP Server / Agent Runtime 是三种不同角色
  • 区分运行时自适应与治理策略变更:自适应端点选择只在已授权候选集合和约束内工作,不能自行扩大模型范围 / 权限 / 预算,也不能从“有自适应评分”推导质量必然改善
  • 闭环必须可验证、可停止、可回滚:回滚 ≠ 恢复配置文本,还要处理已执行工具副作用、未结算额度和运行中任务;观测不可用时是否继续执行由风险与审计要求决定

Evaluation 不天然拥有发布授权:只产评分 / 诊断 / 候选,发布授权由治理门禁决定五类观测数据:用量成本 · 时延 · 可靠性 · 治理 · 关联;OTel gen_ai.* 信号语义仍处 Development,落地需保留口径与不确定性

落地效果用 Task 账本算总成本,不用单次请求成功率衡量。

▍逻辑全景图 · 图 1 · 统一治理调用链:LLM / MCP / Agent 三层网关 × 身份 · 审批 · 证据三条横切治理线 ​

调用方经 Agent Gateway 进入入口层,分流到模型调用与工具调用两条路径;身份、审批、证据三条横切治理线作为横切约束贯穿三层网关。

  • Agent Gateway 入口核心
  • LLM Gateway 模型调用
  • MCP Gateway 工具通道
  • 审批 / 拒绝分支
  • 审计证据

读法:① 顶部命题卡钉住网关定位——只做准入、转发、记录;② 左侧主链:调用方 → Agent Gateway(入口与关联),分流到 LLM Gateway(模型路由 / 重试 / 预算)与 MCP Gateway(发现 / 授权 / 执行分离);③ 右侧三张语义卡——身份做主体映射,审批约束转发,审计材料不等于业务 Evidence;橙色虚线表示审批挂起后批准重新准入。面试一句话:三层网关共享一致的策略执行点,身份、审批、证据三条横切治理线可组合,但网关不拥有 Task 与 Outcome 权威。

▍逻辑全景图 · 图 2 · 责任边界与预算四档:发现≠授权 / 协议说明≠身份证明 / 审批未决不执行 / 审计≠Evidence / Evaluation 无发布权 ​

五张边界卡把五类"不等号"钉在各自权威归属上;下半区预算四档从软约束到硬上限,只有严格预算能原子预留并证明最大消耗。

  • MCP / 执行通道
  • 审批 / 风险闸
  • 审计 / 评估证据
  • 平台核心归属
  • 中性约束

读法:① 上半区五张边界卡各钉死一条权威归属——发现≠授权、协议说明≠身份证明、审批未决不执行、审计≠Evidence、Evaluation 无发布权,第六张把关联对象权威补齐;② 下半区预算四档从左到右由软到硬,只有严格预算能原子预留并证明最大消耗;③ 深色条演示"先查后扣"的并发超限漏洞,青绿面板是严格预算不变量。面试一句话:责任边界不混层——网关不替业务判定成功,预算也只有严格预算能承诺硬上限。

▍书中关键图(SVG 重绘版·示意)① 三种治理语义组合的完整调用链 ​

示意 · 按正文重绘(原书图 9-1 与 9.1.3 用例)

▍书中关键图(SVG 重绘版·示意)② 预算四档:只有严格预算能承诺硬上限 ​

示意 · 按正文重绘(原书图 9-2 与 9.2.6 预算语义)

▍书中关键图(SVG 重绘版·示意)③ 评估经验证与授权进入生产的受控变更链 ​

示意 · 按正文重绘(原书图 9-6 与 9.6.5 变更链)

把 AI 工程讲到既懂也会用