为什么普通网关不够用
把大模型 API 当成普通 HTTP 接口来治理,很快会撞上四堵墙。其一,响应慢且长:一次生成动辄数秒到数十秒,还以流式方式持续吐出,传统「快速返回、快速释放」的假设失效。其二,贵:按 token 计费,一条长上下文请求的账单可能顶普通接口上千次调用,没有成本隔离就是事故温床。其三,供应商会故障:大模型服务的可用性与延迟波动远大于自家数据库,单供应商依赖等于把业务连续性交给别人。其四,模型迭代太快:今天的主力模型半年后可能就不是最优解,业务代码里写死某家供应商,等于放弃议价与迁移能力。
这四点决定了需要一层专门的网关:对上屏蔽「用的是哪家模型」,对下承接流量治理的全部脏活。下面逐项拆它的职责。
限流:请求数与 token 双层配额
只按 QPS 限流对 LLM 流量几乎无效——一个请求可能只花几百 token,也可能吞进十几万 token 的长文档。常见的双层设计是:请求数限流挡突发流量(令牌桶即可),token 级限流按每分钟消耗的 token 总数控制真实成本,两者取先触发的那个。再往上是租户配额:给每个租户预分配 token 预算,超限降速或排队,保证一个大客户的长文摘要任务不会把共享池里的其他租户饿死。核心是把「成本」而非「请求数」当作一等公民来治理。
路由:主备、分级与会话亲和
路由决策至少有三类。主备容灾:为每个模型配置主供应商与备用供应商(很多模型存在多家托管方),健康检查连续失败就切流,切换要做成配置驱动而非发版。按能力与成本分级:简单任务路由到便宜的小模型,复杂任务走旗舰模型——分类规则可以很朴素(prompt 长度、任务标签),不必上来就搞复杂的模型路由器。会话亲和:主流供应商都有 prompt 前缀缓存(同样的前缀第二次请求更便宜更快),所以同一个会话尽量固定路由到同一供应商,前缀缓存才有命中机会。
超时、重试与流式转发
流式场景下,重试逻辑必须重写。传统网关「5xx 就重试」的规则在这里是危险的:如果响应已经开始向客户端吐 token,重试会导致内容重复或错乱。稳妥的规则是只在首 token 之前重试——连接失败、排队超时都可以无损地换供应商再试;一旦开始输出,就只能把错误以流内标记的形式交给上层处理。幂等性也要显式设计:为每个生成请求分配请求 ID,上游超时但结果可能已生成时,凭 ID 查询或去重,避免「重试导致双重计费」。
流式转发本身有三个注意点。一是 SSE(Server-Sent Events,服务端单向推流的事件协议)逐块透传,不要在网关做缓冲攒批,否则首 token 延迟全毁。二是心跳与断流检测:上游长时间不发数据要有超时判定,避免连接挂着白白占资源。三是客户端断开要立刻取消上游请求——没人读的 token 也在计费,及时取消省的是真金白银。
降级链:从大模型到排队
供应商整体不可用时,降级链常见的形态是:旗舰模型降级到同系小模型(能力下降但服务还在)→ 降级到缓存的命中结果 → 都不行则进入排队。对异步任务,排队尤其可接受——摘要、报告生成这类场景,晚十分钟出结果用户无感。降级要提前与业务约定契约,比如响应里带降级标记,而不是让下游猜测内容质量为何下降。
成本核算与可观测
每次调用结束,把 prompt token 数、completion token 数、模型、租户、耗时落一条用量记录,再按租户与模型两个维度聚合,就能回答「这个功能这个月花了多少钱」「换成小模型能省多少」——这是所有成本优化决策的数据地基。可观测性上,LLM 服务有三个比普通 API 更重要的指标:TTFT(Time To First Token,首 token 延迟,直接决定用户「卡不卡」的体感)、吐字速度(每秒输出 token 数,决定长回答的总时长)、错误率(含限流拒绝与上游故障)。流式服务的告警应围绕 TTFT 分位数建立,而不是只看总响应时间。
缓存的两层
网关侧可做的缓存有两种,别混淆。供应商侧的 prompt 前缀缓存:同一前缀(固定的人设说明、few-shot 示例)命中后计费打折,由供应商实现;网关要做的是把稳定内容放前缀、动态内容放后缀,并配合会话亲和。网关侧的语义缓存:把问题向量化,命中相似的历史问题就直接返回旧答案。它能显著省钱,但要小心错误命中——相似的问题答案未必相同,时效性问题尤其危险;生产上通常只对稳定性高的问答类流量开启,并设置较短的过期时间。
整体流程
graph LR
C[客户端] --> G[网关 鉴权限流]
G --> R[路由决策]
R --> A[供应商A 主]
R --> B[供应商B 备]
A -->|失败降级| B
A --> L[用量记账]
B --> L
L --> C
小结
LLM 网关做的事情可以概括成一句话:把「模型能力」变成可运营的「服务」——限流保护成本,路由保护可用性与性价比,流式转发保护体验,降级保护业务连续性,记账与观测保护决策依据。这一层不需要过度设计,但值得在业务方各自直连供应商之前统一建起来;事后收口的人力成本,远高于一开始就做对。
读者留言
COMMENTS 暂无还没有留言,来说第一句?