我给自己写了一个 mini OpenRouter:基于蓝耘 MaaS 的多模型路由网关实战

发布时间:2026/10/9 15:47:40

我给自己写了一个 mini OpenRouter:基于蓝耘 MaaS 的多模型路由网关实战 我给自己写了一个 mini OpenRouter基于蓝耘 MaaS 的多模型路由网关实战一、为什么需要自己的网关前几篇我把蓝耘 MaaS 的 API 已经摸熟了——45 个模型、OpenAI 兼容协议、统一 Key 调用。但真要在生产环境用起来会很快撞上几个工程问题该用哪个模型蓝耘有 25 个对话模型qwen3.6-flash 便宜但能力一般glm-5.3 强但贵。让每个业务开发自己挑结果肯定是全部用最贵的。模型挂了怎么办虽然蓝耘 SLA 不错但任何单一模型都有限流、抖动、临时不可用的可能。直接调裸 API一旦失败业务就 500。成本到底花在哪月底账单总消耗 100 万 token但哪个业务线、哪个模型、哪个用户花的算不清。业界的标准答案是AI Gateway——OpenRouter、Portkey、One-API 这类产品干的就是这事。但它们要么走 SaaS 订阅多一层 vendor lock-in、要么需要自己部署 K8s小团队玩不起。我的方案蓝耘本身已经是统一上游我只需要在它前面再加一层薄薄的智能路由 容错 计费。用 Python 标准库写了 200 行跑通全部功能。二、架构设计整个网关只有 4 个核心模块全部跑在调用方进程内无独立部署模块职责实现Router按规则选模型一组 lambda 规则从上到下匹配Failover失败自动切换每个模型配一条备胎链RateLimiter控制并发asyncio.Semaphore(5)MeteringToken 级成本核算按模型定价表精确到分对外只暴露一个方法gw.call(prompt)业务方完全不用关心下面是哪个模型在干活。三、核心代码精华版完整代码 200 行这里只贴最关键的三段模型注册表 路由规则“配置即代码”MODEL_REGISTRY{qwen3.6-flash:{price_in:0.001,price_out:0.005,tier:cheap},deepseek-v4-flash:{price_in:0.001,price_out:0.002,tier:mid},glm-5.3:{price_in:0.005,price_out:0.020,tier:premium},}ROUTING_RULES[(lambdap:len(p)100,glm-5.3),# 长 prompt(lambdap:代码inpordebuginp.lower(),deepseek-v4-flash),# 代码类(lambdap:len(p)50,qwen3.6-flash),# 短问答]FALLBACK_CHAIN{qwen3.6-flash:[deepseek-v4-flash,glm-5.3],deepseek-v4-flash:[qwen3.6-flash,glm-5.3],glm-5.3:[deepseek-v4-flash,qwen3.6-flash],}带容错的主调用入口asyncdefcall(self,prompt:str,request_id:str)-CallRecord:primaryself.route(prompt)models_to_try[primary]FALLBACK_CHAIN.get(primary,[])foridx,modelinenumerate(models_to_try):recordawaitself._try_call(model,prompt,request_id,fallback_frommodels_to_try[idx-1]ifidx0elseNone)ifrecord.ok:ifidx0:self.stats.failovers1returnrecordreturnrecord# 全部失败并发安全的 HTTP 调用asyncio urllibasyncdef_try_call(self,model,prompt,rid,fallback_fromNone):asyncwithself.sem:# 信号量限流最多 5 并发t0time.time()loopasyncio.get_event_loop()dawaitloop.run_in_executor(None,self._http_post,body)# urllib 是同步的扔进 executor 不阻塞事件循环...注意几个工程细节run_in_executor把同步的 urllib 包装成异步避免引入 httpx/aiohttp 依赖asyncio.Semaphore控制并发上限防止打爆上游每次调用记录CallRecorddataclass便于后续审计/计费四、实测场景场景 1路由策略——三种 prompt 各走各的模型我设计了三种典型业务 prompt让网关自动选择模型实测结果Prompt字符数路由到耗时成本“你好”2qwen3.6-flash9.59s¥0.001600“帮我 debug…”20deepseek-v4-flash8.88s¥0.000696撰写 5000 字报告…×3177glm-5.312.95s¥0.010571最便宜的 qwen3.6-flash 一次只要 0.16 分钱最贵的 glm-5.3 一次 1 分钱——价格差 6.6 倍。如果业务不区分场景全用 glm-5.3一天 1 万次调用就是 ¥105而合理路由后只要 ¥30 左右省 70%。场景 2故障转移——主模型挂了自动切备胎最考验网关能力的场景。我故意调一个不存在的模型not-exist-model-xyz看输出✗ 第 1 次尝试 [not-exist-model-xyz] HTTP 404 ✓ 第 2 次尝试 [qwen3.6-flash] 成功 6.74s ¥0.001771第一次 404 立刻返回不到 100ms 就触发了备胎切换业务方收到的是成功响应完全无感知网关记录了这次 failoverfailovers: 1后续可以告警这种容错对生产环境至关重要——故障转移不是模型挂了更常见的是限流、超时、单条请求触发了上游 bug。蓝耘返回的错误码很规范HTTP 404、HTTP 402、HTTP 429等让容错逻辑可以写得非常干净。场景 3并发压测——10 个并发打满光看单次延迟没意义得看并发承载。发了 10 个并发请求用信号量限制最多 5 个同时在飞实测数据指标数值成功率10/10100%总耗时25.19s平均延迟12.10sP5012.32sP9514.87s最大延迟14.87sQPS0.40总成本¥0.043793几个观察零失败——蓝耘在 5 并发下完全稳定P95 - P50 只差 2.5 秒——延迟分布很平没有长尾QPS 0.4 不算高——这是推理型大模型的常态对比 GPT-4 同级10 次调用成本不到 5 分钱——便宜到可以忽略如果要更高 QPS可以开大Semaphore或者在网关上做请求队列 批量提交。场景 4综合业务模拟 成本分析最后模拟一天的真实流量覆盖 8 种业务场景客服、代码助手、内容创作、闲聊、Review、文档总结、快速问答、故障演示终端报表一目了然总调用: 8 总成本: ¥0.069227 故障转移: 1 次 模型 调用数 平均延迟 累计成本 -------------------------------------------------------------------------- qwen3.6-flash 5 10.92s ¥0.055959 deepseek-v4-flash 2 8.64s ¥0.001311 glm-5.3 1 13.17s ¥0.011957成本占比可视化qwen3.6-flash 80.8% ██████████████████████████ glm-5.3 17.3% █████ deepseek-v4-flash 1.9%这就是 Metering 模块的价值——一眼看出 80% 的成本花在 qwen3.6-flash 上因为它被调用最多glm-5.3 虽然贵但只被路由了一次所以总成本可控。如果想再优化下一步可以给每个业务线打 tag按业务线统计成本做预算熔断——某个业务当天超 ¥10 自动降级到便宜模型把 records 落库到 SQLite/PG用 Grafana 画实时大盘五、关键工程经验这次实测下来对蓝耘 MaaS 的平台能力有几个直接判断优点OpenAI 协议兼容度极高——我的网关代码可以无缝切到 OpenAI/DeepSeek 官方只需要换 base_url key模型间切换无差异——qwen/deepseek/glm 三个模型用同一份代码调message 结构、usage 字段完全一致错误码规范——404模型不存在、402余额不足、429限流让容错逻辑能精确编程Token 计量精准——每个响应都带usage.prompt_tokens/completion_tokens分账零误差45 个模型统一入口——意味着我的 FALLBACK_CHAIN 可以写得很激进反正备胎有的是踩过的坑不同模型延迟差异大qwen3.6-flash 平均 10sdeepseek-v4-flash 8sglm-5.3 13s——路由策略也得考虑延迟不能只看价格max_tokens不能给太小推理型模型 reasoning 也占 quota给 200 会返回空 content上一篇踩过stream failover 组合复杂流式响应一旦开始输出就没法切备胎了所以生产环境建议先 streamfalse 失败再 failoverstreamtrue 不重试Token 单位是元/千 token 不是 “元/百万”算成本时千万别搞错数量级六、这套网关的价值把这次实验放到生产语境下算笔账假设一个中型 AI 应用日调用量50,000 次如果全用最贵的 glm-5.350,000 × ¥0.012 ¥600/天 ¥18,000/月用 mini-gateway 智能路由80% 走便宜的 qwen 15% 走 deepseek 5% 走 glm40,000 × ¥0.0016 7,500 × ¥0.0007 2,500 × ¥0.012 ¥64 ¥5.25 ¥30 ¥99/天 ¥2,970/月每月省 ¥15,000省 83%而这套网关代码只有 200 行跑在业务进程内零额外基础设施成本。总结回到最初的问题中小团队如何低成本用上多模型我的答案是分两步选一个统一 MaaS 上游——蓝耘这种一个 Key 调 45 个模型的平台刚好填补这个空白省掉逐一对接 DeepSeek/通义/Kimi 的工程成本在前面加一层薄网关——用 200 行 Python 解决路由、容错、计费这三个工程问题比引入 OpenRouter/One-API 这种重型方案轻得多大模型时代的工程竞争力不在于你调了哪个模型而在于你能不能用最低的边际成本把模型的能力稳定地交付给业务。这次用蓝耘 MaaS 200 行 Python 搭出来的 mini-gateway是我目前看到的最小可行方案。
延伸阅读

更多相关文章

2026/10/9 15:47:40

PRM-DUL 实战:Oracle 数据文件误删后的紧急恢复与跨版本迁移

简介:PRM-DUL Oracle数据库恢复工具v4.1是一款面向DBA与数据库运维人员的企业级数据救援软件,专为Oracle数据库在异常宕机、文件损坏或误删等场景下的数据抢救而设计。它可运行于AIX、HPUX、SOLARIS、Linux及Windows等多种操作平台,并兼容Ora…

2026/10/9 15:47:40

神通数据库Linux安装避坑指南:共享内存与内核参数调优

简介:本资源为Linux平台下神通数据库(ShenTong Database)V7.0.8正式安装包,面向政府、金融、电信等信创领域运维工程师、DBA及国产化替代项目实施人员,解决国产关系型数据库在64位Linux环境中的快速部署与基础运行问题…

2026/10/9 15:47:40

财富管理系统文档拆解:从业务架构到数据模型的设计要点

简介:完整介绍恒生财富管理系统的一款专业文档资料,面向银行理财业务人员、产品经理及系统实施顾问,适用于理解财富管理平台的整体架构与业务功能。文档围绕银行理财从“销售产品”向“财富管理”转型的核心挑战展开,重点说明客户…

2026/10/9 16:37:55

IEC 62541-1:2025 RLV 解读:OPC UA 信息建模与地址空间核心概念

简介:IEC 62541-1:2025 RLV 是OPC统一架构(OPC UA)系列规范的首个部分,面向工业自动化、物联网与工业互联网领域的工程师、系统架构师及技术决策者,为解决跨厂商设备与系统互操作提供标准化参考。资源为单份PDF电子原版…

2026/10/9 16:37:55

pc-lint plus 1.2 试用指南:静态分析集成与质量门禁实践

简介:pc-lint plus 1.2 是 Gimpel Software 于 2019 年 4 月发布的 C/C 静态代码分析工具,面向嵌入式开发、系统级编程及对代码质量要求较高的工程师与团队,用于在编译前发现潜在缺陷、类型不匹配、未定义行为与可移植性问题。压缩包为 zip 格…

2026/10/9 16:37:55

DLL反编译为可读可编译C源码的工程化实践

简介:本资源是一个面向C/C开发者、逆向工程师与Windows底层学习者的DLL反编译工具集,核心解决源码丢失或需逆向分析DLL时的C语言级代码还原难题。压缩包共78个文件,涵盖10个cpp与11个h头文件(含LongJump、DDTools等关键模块&#…

2026/10/9 16:37:55

如何清除OpenClaw的记忆:把 settings 改到 TaoToken 后的排查清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:03:18

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/8 10:03:20

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 0:04:27

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略

毕业论文初稿完成后首次进行AIGC疑似度自查的摸底与分流策略当数万字的学位论文初稿经历开题、实验、问卷与多轮文献梳理最终成形时,绝大多数研究生都会面临一道全新的形式审查关卡:AIGC 疑似度排查。在高校毕业审核流程中,盲审前的文本检测通…

2026/10/9 0:04:27

食堂节能改造源头工厂,商用厨房设备焕新方案广受好评

商用厨房作为餐饮经营、单位供餐的核心后勤阵地,其设备配置、动线规划与运维体系直接决定后厨作业效率、运营成本与合规性。从基础的灶具、制冷存储设备,到油烟净化、水处理等配套系统,每一个环节的合理性都与食品安全、能耗管控、消防安全挂…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑