设计 AI 网关
问题
设计一个 AI 网关(LLM Gateway),统一管理多个 AI 模型的调用,支持路由、限流、缓存和监控。
答案
一、为什么需要 AI 网关
直接在业务代码中调用各 AI 提供商 API 的问题:
- 多个模型的 API 格式不统一
- 无法统一监控/限流/计费
- 切换模型需要改业务代码
- 无法做缓存和降级
二、系统架构
三、核心功能
| 功能 | 说明 |
|---|---|
| 统一 API | 抹平不同模型的 API 差异 |
| 模型路由 | 按场景/成本/延迟自动选择模型 |
| 语义缓存 | 相似问题命中缓存,节省 API 费用 |
| 限流/计费 | 按用户/团队限制调用量和费用 |
| Fallback | 主模型故障自动切换备用模型 |
| 监控 | Token 用量、延迟、错误率 |
四、开源方案
| 方案 | 特点 |
|---|---|
| LiteLLM | Python,支持 100+ 模型 |
| Portkey | 云服务,可观测性强 |
| AI Gateway(Cloudflare) | 边缘部署,缓存 |
常见面试问题
Q1: AI 网关的语义缓存如何实现?
答案:
- 对用户 Query 生成 Embedding
- 在缓存中搜索相似度 > 阈值(如 0.95)的已有 Query
- 命中则直接返回缓存的回答
- 未命中则调用 LLM,结果存入缓存
Q2: 如何设计模型 Fallback 策略?
答案:
- 主模型超时/报错 → 自动切换备用模型
- 按优先级配置:GPT-4o → Claude 3.5 → GPT-4o-mini
- 设置断路器:错误率 > 阈值时自动切换
- 降级为缓存/预设回答作为最后兜底