多租户 LLM API 基础设施:规模化场景下的潜在故障点
大多数团队最初都使用单一的 LLM 提供商 API 密钥,并在所有业务中共享。这在起初行得通,直到某天它突然失效。也许在某个下午,数据管道中的一个批量任务耗尽了全部速率限制,导致面向用户的聊天功能陷入沉寂。或者财务部门要求你按团队细分 4 万美元的 LLM 账单,而你意识到自己根本无法回答这个问题。
在 LLM 提供商前部署生产级 API 网关可以解决这两个问题 —— 但它也会引入一类复杂性,大多数团队在遇到麻烦之前往往会低估这种复杂性。
为什么共享密钥是组织架构的单点故障
这种简陋的架构下,每个服务都使用同一个提供商 API 密钥:面向用户的产品、内部工具、批处理管道以及开发者的实验。这在概念验证阶段没有问题。但在生产规 模下,它会以预见的方式失效:
- 成本不透明:你无法将支出归因到具体的团队或功能。当账单激增时,调查过程既耗时又不准确。
- 速率限制竞争:就在美东用户开启新的一天时,一个在午夜运行的批量任务可能会耗尽你的每分钟 Token 配额。
- 影响范围(Blast radius):一个配置错误的服务如果调用了昂贵的模型,可能会耗尽所有人的月度预算。
- 审计缺失:如果不从日志中重新梳理历史记录(如果日志存在的话),你无法回答“是哪个服务发起了这次调用”。
这些问题在第一天都不是灾难性的。但到了第六个月,它们都会变成严重的运营债务。
层级隔离模型
多租户 LLM 基础设施的正确思维模型是预算和速率限制的嵌套层级,而不是 API 密钥的扁平列表。
一个设计良好的网关在四个层面组织主体:组织、团队、用户和虚拟密钥。每个层级都有自己的支出上限、速率限制和模型访问策略。约束向下传递 —— 团队的支出不能超过其父组织的允许范围,用户的支出不能超过团队预算,单个 API 密钥的支出不能超过用户的分配额度。
这很重要,因为它将“总成本是多少?”与“谁花了钱以及为什么要花钱?”这两个问题解耦。组织层级为财务部门提供了一个可追踪的单一数字。团队层级映射到你的内部成本中心。用户层级实现了开发过程中的个人问责制。虚拟密钥层级允许单 个生产服务在基于 LLM 构建 SaaS 产品时,为每个客户创建限定范围的密钥。
组织划分对于 SaaS 构建者尤为重要:你的虚拟密钥变成了客户的隔离边界。当客户达到配额时,他们会收到 429 错误。当你配置新客户时,你会根据其定价层级创建一个具有相应预算的新虚拟密钥。计费逻辑和访问控制逻辑合并成了同一种机制。
Token 感知限流是必选项
借鉴自传统 API 的“每分钟请求数”限流对于 LLM 来说是错误的维度。一个带有 10k Token 上下文的 GPT-4o 调用消耗的计算资源远高于一个 50 Token 的摘要请求,但在简陋的计数方式下,两者都被计为“一个请求”。
正确的单位是 Token:以每分钟 Token 数 (TPM) 和每日 Token 数作为主要的预算维度,并将每分钟请求数 (RPM) 作为次要防护,以应对极短提示词带来的请求开销。
Token 感知限流需要预估响应到达前的 Token 数量 —— 这意味着要积极地计算输入 Token,并在响应完成后归属输出 Token。一些网关通过跟踪每个租户实际 Token 使用情况的滚动窗口来处理此问题;另一些则使用内存中的原子存储,根据实时计数器对请求进行预检。
跳过这一步的团队会面临“嘈杂邻居”问题:即使每个请求在 RPM 配额中只占一个单位,提交长上下文请求的高流量租户也可能导致整个共享部署的提供商速率限制达到饱和。
