摘要
本文分享一个自建多模型 API 网关的工程实践,重点讲三件事:
- 如何设计缓存,把重复请求命中率做到 95%+;
- 如何通过连接池、限流、熔断降低 P95/P99 延迟;
- 如何用统一接口接入多个模型上游,并保持 6 个月以上稳定运行。
本文只讨论合规的自建网关与性能优化,不涉及账号共享、绕过地区限制或违规转售。
一、为什么需要多模型 API 网关
独立开发者和中小团队常见问题:
- 多个模型供应商接口不统一;
- 不同上游延迟波动大;
- 重复 prompt 浪费成本;
- 并发一高就超时;
- 密钥散落在各个项目里,不好管理。
一个轻量网关可以解决这些问题:
text
客户端 -> 统一网关 -> 缓存层 -> 路由层 -> 多个合规上游
| |
Redis 健康检查/熔断/限流
统一入口后,客户端只需要配置一个 base_url:
python
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://your-domain.com/v1"
)
resp = client.chat.completions.create(
model="your-model",
messages=[{"role": "user", "content": "用一句话解释缓存穿透"}],
temperature=0
)
print(resp.choices[0].message.content)
示例里的 base_url 是我本地测试网关的入口。完整接口说明见:
https://your-domain.com/docs
二、缓存设计:怎么把命中率做到 95%+
缓存不是简单 key=prompt。实际工程里要处理:
- 同义但不同写法;
- 温度参数不同;
- 系统提示词不同;
- 多轮对话上下文不同;
- 模型版本不同。
1. 精确缓存
适合 temperature=0、固定模板、分类、摘要、翻译等场景。
缓存 key 可以这样拼:
text
hash(
model +
temperature +
top_p +
system_prompt +
messages +
max_tokens
)
Redis 结构:
text
SET cache:chat:{hash} response_json EX 3600
优点:稳定、可控、不会串结果。
缺点:只有完全一样才命中。
2. 语义缓存
对用户提问做 embedding,再和缓存问题做相似度比较。
流程:
text
用户问题 -> embedding -> 向量检索 -> 相似度 >= 阈值 -> 返回缓存答案
阈值建议从 0.95 开始,不要一上来就 0.8。
否则容易把不同问题当成同一个,导致答案错误。
3. 缓存命中率统计
至少记录:
- 总请求数;
- 精确命中数;
- 语义命中数;
- 回源数;
- 缓存节省成本。
我们 6 个月运行中,精确缓存 + 语义缓存把整体命中率稳定在 95% 以上。
其中模板类请求命中率最高,开放式创作类命中率较低。
三、高并发低延迟:几个关键点
1. 连接池
不要每个请求都新建 HTTP 连接。
Go、Java、Python 都要配置连接池和 keep-alive。
text
MaxIdleConns: 100
MaxIdleConnsPerHost: 50
IdleConnTimeout: 90s
2. 超时和重试
超时不要设太长,否则并发会被拖死。
建议:
text
连接超时:1-2s
首包超时:10-20s
总超时:60-120s
重试:只对幂等请求,最多 1-2 次
3. 熔断和降级
某个上游错误率升高时,自动切到备用合规上游。
不要等所有请求都失败才处理。
text
错误率 > 30% 持续 30s -> 熔断 60s
恢复后放 5% 流量探测
4. 限流
按用户、IP、API Key、模型分别限流。
避免单个用户打满整个网关。
text
用户级:60 req/min
IP 级:120 req/min
全局:根据上游配额动态调整
四、6 个月运行复盘
我们关注的指标:
| 指标 | 目标 | 实际 |
|---|---|---|
| 缓存命中率 | 90%+ | 95%+ |
| P95 延迟 | < 3s | 2.1s |
| P99 延迟 | < 8s | 5.6s |
| 错误率 | < 1% | 0.4% |
| 连续运行 | 6 个月+ | 6 个月+ |
稳定运行的关键不是"某个神奇组件",而是:
- 监控告警;
- 健康检查;
- 灰度发布;
- 日志可追踪;
- 出问题能快速切流。
状态页可以公开这些指标:
https://your-domain.com/status
五、合规边界
本文只讨论合规的自建 API 网关与性能优化。
如果服务涉及转售上游 API、共享账号、绕过地区限制,可能违反上游条款和当地法律。
生成式 AI 服务在国内还可能涉及备案、许可或安全评估。
换渠道只能解决"被删帖",解决不了合规风险。
请只用于合法合规用途,必要时咨询专业律师。
参考资料
- 网关文档:
https://your-domain.com/docs - 状态页:
https://your-domain.com/status - 示例代码:
https://your-domain.com/examples