尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

多模型路由网关(上篇·选型)自己写代码 / Switchyard / New API,三条路线一次讲清(完整代码)

多模型路由网关(上篇·选型)自己写代码 / Switchyard / New API,三条路线一次讲清(完整代码) 多模型路由网关上篇·选型自己写代码 / Switchyard / New API三条路线一次讲清完整代码这是「多模型路由网关」系列的上篇。这篇解决一个问题你的应用要接多个大模型到底用哪条路搭下篇讲落地部署New API 完整上手指南 省钱实操文末有链接。先说一个共同的坑模型不能绑死生产环境用大模型几乎都会撞上同一个问题今天 DeepSeek 限流明天有更便宜的模型后天想用本地模型兜底如果代码里写死一家 API每次切换都要改代码、重新发版、背锅上线事故。正解是加一层「路由网关」对外暴露统一接口对内按规则/优先级路由到不同模型失败自动切换。应用侧无感知接口格式不变。统一接口规则1 优先规则2 备用规则3 兜底失败自动切换你的应用路由网关便宜模型/免费本地开源模型付费强模型下一个模型价值只有三件事但都致命成本可控便宜优先、高可用失败切换、切换零成本改配置不改代码。三条路线怎么选市面上的做法分三类各自适用不同场景路线形态上手难度管理后台适合谁A. 自己写代码Python 一个类/函数⭐ 简单无想搞懂原理、轻量接入B. 开源项目 SwitchyardRust 独立服务⭐⭐有NVIDIA 生态、多提供商高吞吐C. 开源面板 New APIDocker 一键部署⭐ 最简单✅ 有团队/生产、要后台管理计费下面三条路线都给出能直接跑的代码或配置。路线 A自己写代码40 行先懂原理如果你想彻底搞懂网关在干嘛从自己写开始最值。核心就是「一个模型池 失败切换 统一接口」。llm_gateway.py# -*- coding: utf-8 -*-LLM 统一网关按优先级路由 失败自动切换 用法python llm_gateway.py 你好 importsysfromopenaiimportOpenAI# 模型池按优先级从上到下 MODEL_POOL[# (名称, base_url, api_key, 模型名)(本地-Ollama,http://localhost:11434/v1,ollama,deepseek-r1:7b-q4_K_M),(免费-DeepSeek,https://api.deepseek.com/v1,sk-你的key,deepseek-chat),(备用-通义,https://dashscope.aliyuncs.com/compatible-mode/v1,sk-你的key,qwen-plus),]MAX_FALLBACKlen(MODEL_POOL)# 最多尝试所有模型defcall(name,base,key,model,messages,**kwargs):clientOpenAI(base_urlbase,api_keykey)respclient.chat.completions.create(modelmodel,messagesmessages,timeout30,# 超时即失败触发切换**kwargs,)returnresp.choices[0].message.contentdefchat(question:str)-str:messages[{role:user,content:question}]last_errNoneforname,base,key,modelinMODEL_POOL[:MAX_FALLBACK]:try:print(f[尝试]{name}({model}) ...)returncall(name,base,key,model,messages,temperature0.7)exceptExceptionase:last_erreprint(f ✗ 失败:{e}切换下一个)raiseRuntimeError(f所有模型均失败:{last_err})if__name____main__:qsys.argv[1]iflen(sys.argv)1else你好print(f\nAI:{chat(q)})实测本地 Ollama 挂掉时自动切到 DeepSeek同一个问题照样答出来$ python llm_gateway.py 11等于几 [尝试] 本地-Ollama (deepseek-r1:7b-q4_K_M) ... ✗ 失败: Connection refused切换下一个 [尝试] 免费-DeepSeek (deepseek-chat) ... AI: 11等于2。进阶按任务路由成本优化的精髓ROUTES{简单:[本地-Ollama,免费-DeepSeek],# 闲聊/翻译走便宜复杂:[付费强模型],# 复杂推理走强的敏感:[本地-Ollama],# 敏感数据不出内网}defroute(task_type:str)-list:returnROUTES.get(task_type,MODEL_POOL)简单任务走便宜模型能省 90% 成本敏感任务强制本地数据不出内网——这就是生产环境的成本与合规策略。自己写路的常见坑坑现象解决免费额度超额402/429加额度检查/配额统计超额走本地超时误判大模型回答慢被当失败timeout60以上区分超时和真错误切换抖动频繁切换连续失败才切如 2 次失败再切加熔断不同模型效果不同同一问题答得不一样网关层只做路由不做改写优点0 依赖、原理透明、可任意魔改。缺点没后台、没报表、没令牌管理多项目/多团队就不够用了——这时看路线 B、C。路线 B开源项目 SwitchyardNVIDIA 出品Rust 高性能如果你的应用要在多个模型/提供商之间高吞吐路由用成熟项目比自己造快得多。SwitchyardGitHub 1.9k 星NVIDIA NeMo 生态就是干这个的API 兼容保持原生 OpenAI 和 Anthropic 格式应用代码不用改灵活换模型想换模型/换提供商改配置就行不用发版成本/性能优化按需路由便宜模型跑简单任务背靠 NVIDIANeMo 生态官方维护。接入方式Rust 实现git clone https://github.com/NVIDIA-NeMo/Switchyard.git # 按 README 配置路由规则接入你的应用接上之后应用继续用原来的 API 调用方式路由由 Switchyard 接管。注意事项技术栈是 Rust接入/二次开发需要 Rust 基础星标相对小1.9k、项目较新生产前充分测试锁定版本使用适合「多模型/多提供商」场景单模型应用用不上。优点官方背书、高性能、多提供商。缺点要 Rust、要自己搭后台对非运维不太友好。路线 C开源面板 New APIDocker 一键带后台最省心如果你要团队一起用、要后台管理 Key/额度/计费直接上 New API。它是One API的社区活跃分支Go 写Docker 一键起自带多渠道接入OpenAI 兼容、Anthropic、国内厂商通吃令牌生成 额度 / 速率限制模型重定向与负载均衡调用日志与用量报表故障转移某渠道连续失败自动摘掉最小部署一行自带精简存储连 MySQL 都省了dockerrun-d--namenewapi-p3000:3000\-eSQL_DSN-eSESSION_SECRET换成随机串\calccn/new-api:latest打开http://你的服务器IP:3000默认root / 123456后台点几下就能接好渠道、发 Key。优点开箱即用、有 Web 后台、团队友好。缺点重量级一点但 2C2G 轻量云就够。上篇小结选哪条只是想搞懂原理 / 极轻量接入 →路线 A 自己写多提供商高吞吐、且团队有 Rust 能力 →路线 B Switchyard团队/生产、要后台管理计费、省心 →路线 C New API最推荐。本篇配图选型对比下一篇下篇New API 完整落地 省钱实操选定了路线 CNew API下篇手把手带你Docker Compose 完整部署 HTTPS接渠道、生成分发 Key、额度管控按贵贱路由省钱公司内网落地的 4 种姿势 稳定与合规边界 下一篇见同系列文章「多模型路由网关下New API 完整落地」
返回列表