一、为什么大模型调用需要网关
业务侧直接连 OpenAI / 国产大模型 / 自建 Ollama,短期省事,长期会踩三类坑:账单失控(突发流量打满配额)、稳定性差(上游抖动直接传导到用户)、重复成本高(相同 Prompt 反复计费)。一层大模型 API 网关可以把鉴权、路由、限流、熔断、缓存和观测收敛到统一入口,让 Agent 与业务服务只关心「发请求、拿结果」。
二、网关在架构里的位置
客户端 / Agent / 业务服务
│
▼
┌───────────────────┐
│ LLM API Gateway │ ← 鉴权 · 限流 · 熔断 · 缓存 · 路由 · 审计
└─────────┬─────────┘
│
┌─────┼─────┐
▼ ▼ ▼
OpenAI 国产云 自建Ollama建议网关对外暴露OpenAI 兼容接口(/v1/chat/completions 等),对内按模型名或租户策略路由到不同上游。这样上层 Agent 框架几乎不用改代码,换模型只改网关配置。
三、限流:先护住配额与预算
大模型限流不止「防刷」,更是成本闸门。常见维度:
- 按 API Key / 租户:每分钟请求数(RPM)、每分钟 Token 数(TPM)
- 按模型:贵模型更严,小模型更松
- 按路由:同步对话严一些,离线批处理可排队
实现上可用令牌桶 / 滑动窗口(Redis + Lua 足够落地)。返回时尽量用标准语义:HTTP 429,并带上 Retry-After 或业务错误码,方便客户端退避重试。
# 伪配置示例
limits:
- key: tenant
rpm: 60
tpm: 80000
- key: model:gpt-4o
rpm: 20
- key: model:local-qwen7b
rpm: 120实践建议:限流阈值按峰值的 70%~80%设软阈值,再配告警;硬拒绝前可对低优先级请求进入队列,避免「一刀切」伤体验。
四、熔断:上游抖了别拖垮自己
大模型上游常见故障形态:超时变多、5xx 突增、流式中断、区域性不可用。网关应实现熔断器状态机:
- Closed:正常转发
- Open:短时间内快速失败,避免打爆上游与线程池
- Half-Open:放少量探针请求,成功则关闭熔断
触发条件可组合:错误率阈值、连续失败次数、P99 延迟超标。熔断打开后的策略按业务选:
- 降级模型:主模型失败切到更便宜/更稳的备模型
- 返回缓存/兜底文案:非关键路径可降级
- 快速失败:让上层 Agent 走重试或人工介入
注意:流式(SSE)场景要单独定义「半截失败」——已向客户端推送部分 token 时,更适合标记会话失败并记录,而不是静默切换模型导致答非所问。
五、缓存:重复请求别二次付费
缓存是网关 ROI 最高的能力之一,但要克制:
- 适合缓存:温度低、确定性高的补全;FAQ / 文档问答;相同 system+user 的评测请求
- 慎用缓存:带工具调用的 Agent 轨迹、强个性化对话、含实时数据的问题
推荐以规范化后的请求做 key:模型名 + 关键参数(temperature、response_format 等)+ messages 哈希。存储可用 Redis,value 存完整响应或可复用的 message 片段,并设置 TTL(例如 10 分钟~24 小时按场景)。
cache_key = sha256(
model + "|" +
canonical_json(params) + "|" +
canonical_json(messages)
)语义缓存(向量近似命中)能进一步提高命中率,但要接受「近似答」风险;生产建议先上精确缓存,再对明确业务场景开语义缓存,并打上 X-Cache: HIT/MISS 便于观测。
六、三者如何协作(推荐顺序)
一条请求进入网关时的建议流水线:
- 鉴权与租户识别
- 缓存查询(命中则直接返回,计入省下的 token)
- 限流判断(未通过则 429)
- 熔断检查(打开则降级或快速失败)
- 转发上游(超时、重试策略要保守,避免放大风暴)
- 写回缓存(仅对可缓存响应)
- 审计与指标(延迟、token、命中率、熔断次数)
重试只对幂等读、且上游明确可重试的错误码进行;写操作与已部分流式输出的请求默认不重试。
七、观测指标(没有指标等于没网关)
- QPS / RPM、TPM、拒绝率(429)
- 上游错误率、熔断打开次数、降级次数
- 缓存命中率、节省 token 估算
- 端到端 P95/P99 延迟(区分缓存命中与回源)
把这些指标和租户、模型两个标签绑在一起,成本异常时才能快速定位是「谁」「哪个模型」在烧钱。
八、落地最小集
若团队要两周内上线,不必一次做完美语义缓存。最小可用集可以是:
- 统一 OpenAI 兼容入口 + API Key
- Redis 滑动窗口限流(按租户 + 模型)
- 错误率熔断 + 单备模型降级
- 精确响应缓存(低温度、白名单路由)
- 基础 Prometheus 指标与请求审计日志
跑通后再迭代:多上游加权路由、预算熔断(日消费上限)、语义缓存与内容安全策略。
九、小结
大模型 API 网关的核心不是「再包一层 HTTP」,而是把成本、稳定性、重复计算变成可配置策略。限流管住预算与公平性,熔断隔离上游故障,缓存吃掉重复调用——三者一起,才构成能支撑 Agent 工程化的调用底座。
