当前位置: 首页 > news >正文

Python实战:手写一个LLM API统一网关,实现DeepSeek/通义千问/OpenAI多Provider自动容灾切换

通义千问又挂了?我写了一个 LLM Gateway,自动帮你切换到 DeepSeek

你的 LLM 应用,不应该因为一个 API 挂了就瘫痪。

引言

上个月通义千问 API 故障了 2 小时,我朋友的 AI 客服直接瘫痪了。用户问什么都回复"服务暂时不可用"。

其实 DeepSeek 的 API 是好的,但他的代码里只配了通义千问一个 Provider。

手动切换?改代码、改配置、重启服务,至少 30 分钟。

这个问题完全可以用一个统一网关来解决。于是我写了LLM Gateway—— 在你的应用和 LLM Provider 之间加一层,自动处理容灾、路由、统计。

你是不是也遇到过这些问题?

1. Provider 偶尔抽风

大模型 API 不稳定是常态。DeepSeek 限速、通义千问维护、OpenAI 网关超时——每个月总要来几次。你的应用停摆,用户不知道发生了什么。

2. 手动切换太慢

发现 API 挂了 → 改配置文件 → 改代码 → 测试 → 重启服务。30 分钟过去了。

3. 多个 Provider,管理混乱

DeepSeek 便宜但偶尔慢,通义千问稳定但贵,OpenAI 质量好但不稳定。每个 API 的base_urlapi_key、模型名都不一样,每次切换都要翻文档。

LLM Gateway 怎么解决的?

最简单的使用方式

# 1. 安装 git clone https://github.com/Vincent-crypto-coder/llm-gateway.git cd llm-gateway pip install -r requirements.txt ​ # 2. 配置 cp config.example.yaml config.yaml # 编辑 config.yaml,填入 API Key ​ # 3. 启动 python -m gateway --config config.yaml --port 8000

客户端代码一行不用改

from openai import OpenAI ​ # 只改 base_url,其他不变 client = OpenAI(api_key="any-key", base_url="http://localhost:8000/v1") ​ response = client.chat.completions.create( model="deepseek-chat", messages=[{"role": "user", "content": "你好"}] )

就这么简单。你的应用只需要指向 Gateway,它帮你搞定剩下的事情。

核心功能

自动容灾

配置多个 Provider,Gateway 自动切换:

providers: - name: deepseek base_url: https://api.deepseek.com api_key: ${DEEPSEEK_API_KEY} models: [deepseek-chat] priority: 1 # 最高优先级 ​ - name: dashscope base_url: https://dashscope.aliyuncs.com/compatible-mode/v1 api_key: ${DASHSCOPE_API_KEY} models: [qwen-turbo, qwen-plus] priority: 2 # DeepSeek 挂了,自动切到这里 ​ failover: strategy: priority failure_threshold: 3 # 连续失败 3 次后标记不可用 recovery_interval: 300 # 5 分钟后自动恢复

DeepSeek 正常时,请求走 DeepSeek。DeepSeek 连续失败 3 次后,自动切到通义千问。5 分钟后 DeepSeek 恢复了,自动切回来。

3 种路由策略

failover: strategy: lowest-latency # 选延迟最低的 Provider
策略说明适用场景
priority按优先级顺序默认,优先用便宜的
round-robin轮流调用负载均衡
lowest-latency选最快的延迟敏感的场景

用量统计

curl http://localhost:8000/stats?days=7

返回每个 Provider、每个模型的调用次数和花费。帮你回答"这个月 API 花了多少钱"。

Provider 状态监控

curl http://localhost:8000/status

一目了然:哪些 Provider 健康、延迟多少、失败率多少。

架构

┌─────────────┐ ┌─────────────────────┐ ┌─────────────────┐ │ 你的应用 │────▶│ LLM Gateway │────▶│ DeepSeek │ │ (OpenAI │ │ │ │ 优先级 1 │ │ SDK) │ │ /v1/chat/completions│ ├─────────────────┤ │ │◀────│ OpenAI 兼容 API │──X──│ 通义千问 │ └─────────────┘ │ │ │ (备用) │ │ Router + Tracker │ ├─────────────────┤ │ SQLite 用量统计 │ │ OpenAI │ └─────────────────────┘ │ (备选) │ └─────────────────┘

Gateway 对外提供 OpenAI 兼容的 API,对内路由到配置的各个 Provider。

为什么用 Gateway 而不是直接多配几个 Key?

你可能会说:"我在代码里多配几个 Provider 不就行了?"

可以,但你需要自己写:

  • 健康检查逻辑

  • 自动切换逻辑

  • 用量统计

  • 切换后自动恢复

这些代码在每个项目都要写一遍。Gateway 统一处理了,你的应用只管调 API。

适合什么场景?

  1. 生产环境:多 Provider 容灾,不能因为一个 API 挂了就停摆

  2. 成本优化:便宜的优先,贵的当备选

  3. 多模型管理:统一入口,不用记每个 Provider 的地址和 Key

  4. 开发测试:本地起一个 Gateway,同时调试多个模型

接下来

这个项目还在早期,TODO 里有很多想做的:

  • Web Dashboard(用量可视化)

  • Token 限流(按用户/IP)

  • Prompt 缓存(相同请求不重复调用)

但核心功能已经能用了。如果你也遇到过 API 故障导致服务中断的问题,可以试试。


GitHub: https://github.com/Vincent-crypto-coder/llm-gateway

觉得有用的话,给个 ⭐ 吧!

http://www.rkmt.cn/news/1508443.html

相关文章:

  • 2026年银川工伤律师推荐怎么挑?5个实用判断标准不踩雷 - 本地品牌推荐
  • Arduino机械臂小车避坑指南:从面包板乱抖到PCB稳定的完整升级方案
  • 多维聚合实战:维度建模、度量规则与数据变形链路
  • 别只看容量!LDO输出电容选型,X5R/X7R/钽电容到底怎么选?
  • 制造业Agent项目怎么做内部汇报,才更容易拿到预算和推进支持?
  • 从分子到病灶:VEGF 如何推动肿瘤侵袭与转移
  • 别再乱调了!NX/UG二次开发中,不同刀路事件类型(3轴/5轴/UDOP)的进给设置差异详解
  • Java在线商城毕设源码:SpringBoot后端+Vue前端+30+实拍界面图+完整数据库脚本
  • 2026年质量好的郑州济南装修/济南装修/装修/郑州展厅装修哪家正规 - 行业平台推荐
  • 手把手教你用Python复刻同花顺的VRSI和WVAD指标(附完整代码与回测)
  • 如何用Super IO革命性提升Blender文件导入导出效率
  • Python文本处理实战:从字符串清洗到语义解析的五步精炼法
  • pandas显示配置:性能与可读性的三层调控指南
  • 本地千万级政府人口数据分类处理实战:用 AI 工作流零代码、零 SQL 完成人口数据清洗、多表拆分与分类统计
  • 从EV1527手册到可运行代码:手把手教你用STC89C52RC单片机实现433M无线解码(附完整工程)
  • 别再死记硬背了!用Python+Matplotlib动画可视化两角和差公式推导过程
  • 2026年知名的锯片/成都金属冷锯生产厂家推荐 - 品牌宣传支持者
  • 2026年南通机场招聘市场深度观察:本地服务商与全国机构如何选择?附上海浦东/虹桥真实入职案例 - 优质品牌商家
  • 别再死记硬背HMM了!用Python手搓一个中文分词器,从BMES标注到Viterbi解码全流程
  • 从一次接口损坏说起:深入解析电阻在TVS浪涌防护电路中的‘功率陷阱’与选型要点
  • 骁龙X2 Elite边缘AI应用开发实战(4): AIGC实战之Stable Diffusion 1.5极速文生图
  • FlexCAN(FD)的Message Buffer到底存了什么?一个结构体带你彻底搞懂MB的RAM布局
  • CesiumJS 114版本性能调优实战:如何用好dynamicScreenSpaceError与缓存新参数
  • 2026年口碑好的电动超高压阀门/20000Psi超高压阀门多家厂家对比分析 - 行业平台推荐
  • Mermaid Live Editor深度解析:实时图表编辑的现代技术架构
  • CloudFront + Lambda@Edge + Cognito 实现 S3 私有桶零信任访问控制(完整实战)
  • 2026年6月儿童摄影机构有哪些,生日照/全家福/新生儿照/派对布置/儿童摄影/宝宝照/百天上门照,儿童摄影工作室推荐 - 品牌推荐师
  • Gyroflow教程:免费开源视频防抖神器,拯救手抖废片
  • 别只调延迟时间了!深入理解Flink Watermark的生成与传播机制
  • 2026年大学生考证避坑指南:一般大学生要考哪些证书有哪些?系统提升职业竞争力的核心路径