题记与说明
课题:模型路由与 fallback 策略(多模型选择、降级、重试与质量成本权衡)
撰写日期:2026-11-03(同日按独立审读意见逐条修订并出最终稿,修订记录见附录 C)
综合自:[纵轴章节(发展史)](parts/2026-11-03-模型路由与fallback策略-vertical.md)与[横轴章节(2026-11-03 时间截面横向对比)](parts/2026-11-03-模型路由与fallback策略-horizontal.md)。两章均基于会话内网络检索与一手文档抓取完成;本综合稿消除两章矛盾(校准记录见附录 A)、合并重复内容,保留全部来源链接。两章中凡属第三方评测或厂商自述而未复核的结论,沿用原章标注。
TL;DR
路由(事前选谁)、fallback(失败后换谁)、重试(瞬时故障再试)是三件事;失败语义三分法——可用性失败换同级、能力失败换型号、策略失败换供应商——是工程共识的骨架。四年脉络是同一问题的三次搬迁:2023 年住进论文(FrugalGPT 级联),2024 年住进网关(LiteLLM/OpenRouter 标准化容错),2025–2026 年住进产品与 Agent 本体(GPT-5 内置 router、Claude Code 限额降级)。价格冲击后,路由重心从省钱转向可靠性、限额与缓存;学习型通用路由收缩,幸存市场信号、网关规则、框架内建三种形态。个人 Agent 最优解是静态分层路由表加"2+1"结构(两家付费供应商按计费关系计:①OpenRouter 聚合账户+②DeepSeek 官方直连;订阅池为可选固定成本层;零边际成本兜底=免费档/本地/低谷与 batch),fallback 比路由更值得投入;规则写在代码而非 prompt,路由表是有保质期的资产。
一、纵轴:发展脉络(2001–2026)
1.0 时间线速览
| 时间 | 节点 | 性质 |
|---|---|---|
| 2001 | Viola–Jones 级联分类器,"便宜先过、难例升级"思想的源头 | 前史 |
| 2023-05 | FrugalGPT(Stanford,arXiv:2305.05176):LLM 级联范式奠基 | 学术奠基 |
| 2023-10 | AutoMix(arXiv:2310.12963):小模型自验证 + 按需升级 | 学术 |
| 2023 | LiteLLM、OpenRouter、Portkey 等统一网关/聚合层出现 | 工程起点 |
| 2024-04 | Hybrid LLM(Microsoft,ICLR 2024,arXiv:2404.14618):训练 router 模型按查询分流 | 学术 |
| 2024-06 | RouteLLM(LMSYS,arXiv:2406.18665,ICLR 2025):偏好数据训练路由器,降本 85% | 学术转产业 |
| 2024 | Martian、NotDiamond、Unify 等"路由即服务"创业潮 | 产业 |
| 2025-01 | DeepSeek R1 破坏性定价,改写路由经济学 | 价格冲击 |
| 2025-08-07 | GPT-5 发布:统一系统 + 内置 router 决定"何时深想" | 路由内化 |
| 2025 | Claude Code 限额自动降级 Sonnet、Cursor Auto、Copilot Auto 上线 | Agent 内置降级 |
| 2026 | 三层路由栈成熟;2026-10-28 OpenRouter 发文重建供应商路由 | 成熟分化 |
| 2026-11 | (本报告)面向个人 Agent 的可执行路由表 | 落地设计 |
1.1 前史与酝酿(2001–2022):"级联"不是新主意
模型路由的每一条核心机制,都能在更早的计算机体系中找到原型:
- 级联(cascade):计算机视觉领域 2001 年的 Viola–Jones 人脸检测就用"多个廉价分类器级联,前级快速放行简单样本、后级只处理难例"的架构——这正是今天 LLM cascade(便宜模型先行、失败升级贵模型)的思想原型。
- 路由(routing):ML 即服务时代的 A/B 测试、灰度发布、按用户分流的模型服务路由,是"请求级选模型"的直接前身,只是当时的路由目标是实验与风控,而非成本。
- 重试与熔断:指数退避(exponential backoff)、熔断器(circuit breaker)是分布式系统几十年积累的可靠性常识,2023 年后被原样移植到 LLM 网关。
2022-11-30 ChatGPT 上线、2023-03 GPT-4 发布后,条件成熟了:FrugalGPT 论文在摘要中指出,当时各 LLM 的 API 定价相差两个数量级,且 GPT-4 级模型与小型模型的输出质量在多数简单任务上差距远小于价格差距(arXiv:2305.05176)。百倍价差 + 小模型够用,就是这个课题诞生的全部前提。驱动因素:大模型能力分层出现,而定价尚未跟随分层收敛。
1.2 2023:学术奠基年——FrugalGPT 定语言,网关层起步
FrugalGPT:给整个领域定了语言。 2023 年 5 月 9 日,Stanford 的 Lingjiao Chen、Matei Zaharia、James Zou 提交论文《FrugalGPT: How to Use Large Language Models While Reducing Cost and Improving Performance》(arXiv:2305.05176,纵轴章节已抓取原文摘要页,本会话综合时再次抓取核实)。论文把降本策略分为三类:prompt adaptation(提示词适配)、LLM approximation(模型近似/压缩)、LLM cascade(LLM 级联)。FrugalGPT 本身是第三类的实例:按"从便宜到贵"的顺序调用模型链,用学习到的打分器(scorer)判断当前答案是否可信,可信即停,不可信升级。摘要给出的核心结论是:级联可以在最多降低 98% 成本的情况下匹配 GPT-4 表现,或在同等成本下将精度提升 4%(原文:"match the performance of the best individual LLM (e.g. GPT-4) with up to 98% cost reduction... or improve the accuracy over GPT-4 by 4% at the same cost")。DeepLearning.AI 在 2024 年 3 月的 The Batch 中将其评为降本保质的代表方法(The Batch 报道)。2025 年的后续研究(如带早停机制的级联,arXiv:2502.09054)仍在沿这条线推进。
校准说明(两章数字矛盾):横轴章节曾写"级联最高 98% 省钱还能比 GPT-4 准 7%"。经本会话直读 arXiv 摘要页,摘要原文为 4%(同等成本下),"7%"未见于摘要,综合稿统一采信 4%。详见附录 A。
AutoMix:把"自验证"引入级联。 2023 年 10 月,AutoMix(Aggarwal 等,arXiv:2310.12963)提出:先用小模型生成答案,让小模型自我验证(self-verify),仅在自验证不可靠时才把请求路由给大模型。这补上了 FrugalGPT 之外的第二条质量闸门路线——生成器自检而非独立打分器。
工程平行线:统一网关与聚合层出现。 同一时期,工程界在解决另一个更朴素的问题:每个 provider 一套 SDK、一种报错风格,换模型等于重写接入层。LiteLLM 于 2023 年开源,用统一的 OpenAI 格式调用 100+ 提供商,后来演化出带重试、冷却、fallback 的 Router(LiteLLM Routing 文档);OpenRouter 于 2023 年上线,提供"一个 API 通达多供应商"的聚合服务(Wikipedia: OpenRouter);Portkey、Cloudflare AI Gateway 等网关产品也在这一窗口出现,Cloudflare 后来将 fallback 明确产品化为"按人工排序的 fallback 数组 + 通用端点"(Cloudflare Fallbacks 文档)。
本阶段小结:学术侧定义了问题语言(cascade / router / scorer),工程侧定义了解决问题的位置——应用与模型之间的"网关/聚合层"。驱动力:GPT-4 时代的极端价差,以及 429/超时/宕机频发带来的纯可靠性需求——重试与 failover 先于"智能路由"成为刚需。
1.3 2024:学习型路由器产业化,"路由层"独立成栈
学术:从"手写规则"到"训练路由器"。 Hybrid LLM(Ding 等,Microsoft,ICLR 2024)训练一个 router 模型,按查询在强/弱两个成本-精度档位间分流,把"质量感知路由"做成可优化问题。RouteLLM(LMSYS Org,2024 年 6 月)用 Chatbot Arena 的人类偏好数据训练路由器(矩阵分解等多种架构),在 GPT-4 Turbo(强)与 Mixtral 8x7B(弱)组合上实现最高 85% 成本降低,同时保持约 95% 的 GPT-4 质量,并开源了训练与服务框架;会议版(ICLR 2025)的表述是"成本降低 2 倍以上而不牺牲质量"(ICLR 页面)。后续研究扩展到 bandit 反馈在线学习等方向,学术界已把这条线总结为"Dynamic Model Routing and Cascading"独立研究方向,2026 年出现系统综述(arXiv:2603.04445)。
产业:路由即服务(Routing-as-a-Service)创业潮。 Martian 在 2023 年底即以"第一个 LLM router"身份被报道(该说法转引自 Braintrust 2026 年路由平台综述,原始报道未核实),2024 年与 Accenture 合作,后来重心转向可解释性研究;NotDiamond 2024 年创立,主打开箱即用 + 用客户自有评测数据定制路由器,后期收窄到编码 Agent 路由(Not Diamond Code);Unify、TrustedRouter 等构成一个短暂的"路由层"赛道。
基建定型:网关层把"降级与重试"标准化。 这一年被后世反复引用的,是网关层沉淀下来的标准机制词汇表——今天所有 fallback 策略文档都在用这套语言:
- 重试(retry):同模型组内先重试 N 次(LiteLLM
num_retries,默认指数退避,官方文档示例 3 次;该参数另支持请求头/请求体/部署级/全局四级覆盖,见 3.5.4 与 LiteLLM Routing 文档,本会话 2026-11-03 复核); - 冷却(cooldown):连续失败
allowed_fails(文档示例 3)次后,把该部署踢出负载均衡cooldown_time秒(文档示例 30 秒,LiteLLM Reliability 文档,横轴章节已抓取——该页未标注默认值,Routing 文档另注cooldown_time常量默认 5s,本会话 2026-11-03 复核); - fallback 链:重试耗尽后按序切备用模型组;LiteLLM 把 fallback 细分为三类——通用
fallbacks、context_window_fallbacks(上下文超长专用)、content_policy_fallbacks(内容策略拦截专用),默认最多 fallback 5 次; - 供应商级 failover:OpenRouter 将"同模型跨供应商自动转移"做成默认行为,"换模型"的 fallback 则是显式 opt-in(
models数组)(OpenRouter 可靠性博客、Provider Routing 文档)。
本阶段小结:路由从论文变成产品类别。驱动力:Claude 3、Gemini、Llama 3、Mistral 等多强格局形成,企业普遍采用"多供应商对冲"策略,路由成为多供应商策略的技术载体。
1.4 2025:价格冲击与路由内化——Agent 时代的内置降级
DeepSeek R1:把"什么时候值得路由"本身重新定价。 2025 年 1 月 DeepSeek R1 发布,API 定价 $0.55/百万输入(缓存未命中)、$2.19/百万输出,约为 OpenAI o1($15/$60)的 3–5%;Fireworks 等海外推理商随即跟进同价(LinkedIn 定价分析、Level Up Coding 分析)。这对路由研究是釜底抽薪式的冲击:当"贵模型"不再贵,靠强弱价差套利的级联收益被大幅压缩。2025–2026 年路由的重心因此从"省钱"转向"可靠性 + 限额管理 + 任务匹配"。2026 年 6 月国产模型又宣布新一轮降价、部分降幅超 90%(人民网),价格曲线持续下探。
GPT-5:厂商把路由器吸收进产品。 2025-02,Sam Altman 公布路线图:GPT-4.5 将是最后一个非思维链模型,GPT-5 将统一 o 系列与 GPT 系列(Fortune 报道)。2025-08-07 GPT-5 发布,官方定位是"统一系统":内置 router 决定简单问题走快速响应、复杂问题走深度推理(firat.rw、Digital Information World)。这是一个标志性转折:路由不再是应用层第三方的基础设施,而是模型产品自身的调度机制——"模型选择"在厂商侧被折叠为"思考深度选择"。
Agent CLI 的内置降级:fallback 成为默认体验。 2025 年 Agent 编程工具爆发,三家实践定义了个人 Agent 的降级范式:
- Claude Code:Opus 用量达到限额后自动切换到 Sonnet 继续工作,社区帖大量证实(Reddit r/ClaudeAI);官方 Model configuration 文档随后将其正式化为"自动模型回退",包含按内容(Opus/Sonnet 档位间)与按可用性两种回退(Claude Code 文档)。值得注意的是降级系统自身也会出 bug:2025-10-05 的 issue #8959 记录了限额后未降级、只报错的失效案例——fallback 链本身也需要被监控。
- Cursor:推出 Auto 模式,官方论坛确认 Auto 不消耗用量额度,在模型池中按"智能、成本、可靠性"平衡选择(Cursor 论坛公告、Cursor Models & Pricing 文档)。
- GitHub Copilot:VS Code 模型选择器加入 Auto 选项,官方文档说明其按"自然缓存边界与对话复杂度的大幅漂移"时机切换模型,以避免破坏 prompt 缓存、产生额外缓存成本(github/docs auto-model-selection)。"沿缓存边界路由"是这一年出现的新工程约束——路由决策本身也要为 KV 缓存的经济性让路。(Copilot"企业默认 Auto + CLI 任务级路由"的 2026-07 时间点仅见于二手汇总,未在官方文档直接核实。)
国产低价订阅:个人 Agent 的 fallback 候选池扩容。 2025 年,GLM Coding Plan(Lite 档当时约 $3–6/月)与 Kimi 编码订阅(约 $39/$99 档)通过 Claude Code 兼容端点接入 Claude Code、Cline、Qwen Code 等工具(GLM Coding Plan 评测、Coding Plan Hub 对比)。这为个人 Agent 提供了一类全新的降级目标:不是更弱的模型,而是"同一能力档位、另一种计费制度"(订阅制 vs 按量计费)——限额耗尽时切到订阅池,是 2025 年之后个人 Agent 路由表的关键行项。(价格有保质期:2026 年第三方评测显示 GLM Coding Plan 入口价已上浮至约 $10–18/月,以 z.ai/subscribe 实时为准;见附录 A 校准 3。)
本阶段小结:路由的决定权从第三方网关部分收回至厂商与 Agent 产品本身;fallback 从"运维技巧"变成"用户可感知的产品行为"。驱动力:Agentic 长任务令 token 消耗暴涨、使用限额取代单价成为最硬约束、供应商宕机与限流事件高频化。
1.5 2026:三层路由栈成熟,进入"路由表即配置"时代
- 学术持续演进:自适应路由与 test-time optimal compute(Microsoft Research: Best Route)、级联早停(arXiv:2502.09054)、系统性综述(arXiv:2603.04445、zylos.ai 2026-03)。
- 基础设施竞争转向"路由质量"本身:2026-10-28 OpenRouter 发文《How We Rebuilt Provider Routing》(纵轴章节已抓取,作者 Scott Morse),新默认路由以六个信号对供应商实时打分——有效价格(含缓存命中率)、首 token 延迟(TTFT)、吞吐、可靠性(供应商侧故障率)、429 频率、输出质量(如工具调用格式完好率与基准成绩),合成实时"Routing Cost"(博客原文)。路由器内部的计分项,恰好是过去四年整个课题研究议程的清单。
- 三层栈成为共识:2026 年的多篇综述(Braintrust 2026-06、pakodas: State of LLM Routers、Redis 路由架构实践)收敛出同一图景——①语义路由器做快速路径(低置信度回落 LLM);②网关层做多供应商韧性与 fallback 链;③Agent 框架内做任务级动态选模(如 ADK 的路由函数,adk.dev)。早期"路由层"创业公司则分化:Martian 转向可解释性,NotDiamond 收窄到编码 Agent 路由。
- 中文社区的工程化共识:统一 API 网关 + 重试/降级/限流三件套 + 小模型先试的级联升级(腾讯云开发者社区、SegmentFault:大模型网关详解),并提醒了一个关键坑:流式响应中途无法切换模型,降级必须发生在请求边界。
驱动力:token 价格通缩使"省 85%"的叙事吸引力下降;可靠性、限额与缓存经济性成为新的竞争维度;个人/中小开发者工具链成熟,路由从"大厂架构"降为"一份配置文件"。
1.6 纵轴总结:三次搬迁
四年演进的本质是同一个问题的三次搬迁:2023 年它住在论文里(如何省钱),2024 年住在网关里(如何可靠地省钱),2025–2026 年住进模型产品和 Agent 本体里(何时思考、限额后去哪)。每次搬迁,上一代的机制都不作废,而是沉淀为下一层的默认行为——今天的路由表里,每一行都叠着 FrugalGPT 的级联、LiteLLM 的冷却熔断、OpenRouter 的供应商 failover 和 Claude Code 的限额降级。
二、横轴:横向对比(2026-11-03 时间截面)
2.1 先划边界:路由、降级、重试不是一件事
市面上几乎所有产品都把这三件事混在一个卖点里说,对比前必须划清边界:
- 路由(routing):请求发出之前决定"这条 prompt 给谁"。决策依据可以是规则(任务类型、模型名白名单)、语义(向量相似度)、学习型分类器(RouteLLM 的矩阵分解、Not Diamond 的元路由器)、市场信号(OpenRouter Auto Router 的"消费份额")。
- 降级(fallback / degradation):请求失败之后换谁接。触发条件分三类:可用性失败(429 限流、5xx、超时)、能力失败(上下文超限、不支持模态/工具)、策略失败(内容审查拒绝)。三类失败的正确处理方式完全不同,混为一谈是常见事故的根源(本报告未收集事故案例统计,不做频率断言)。
- 重试(retry):同一个目标再试一次,通常带退避(backoff)。重试解决的是瞬时故障,fallback 解决的是持续故障或系统性不匹配。LiteLLM 的语义很典型:"fallbacks 在 retries 耗尽后触发"(LiteLLM Reliability 文档);Cloudflare AI Gateway 同样"重试先于 fallback"(Universal Endpoint 文档)。
质量成本权衡发生在两个层面:事前(路由决定把预算花在哪)和事后(降级决定失败时损失多少质量、花多少额外成本)。好的策略必须同时覆盖两层。
2.2 四层方案地图
把当下的方案按"在技术栈里的位置"分成四层,每一层解决的是不同的问题,彼此互补而非互斥:
| 层级 | 定位 | 代表方案 | 一句话概括 |
|---|---|---|---|
| L1 推荐型路由器 | 只推荐不动流量 | RouteLLM、Not Diamond、Martian | 告诉你"该用谁",调用仍走你的网关/代码 |
| L2 网关型路由 | 托管或自建的数据面 | OpenRouter、LiteLLM、Portkey、Bifrost、Cloudflare AI Gateway、Vercel AI Gateway | 代理真实流量,顺带做负载均衡/fallback/重试 |
| L3 框架内建容错 | 应用代码内 | LangChain with_fallbacks、OpenAI SDK 重试、各家 Agent 框架的 model 列表 | 进程内的 try/except 抽象,零新增组件 |
| L4 算法/论文层 | 策略本身的研究 | FrugalGPT 级联、RouteLLM(ICLR 2025)、语义路由、对抗鲁棒性研究 | 任何一层的策略都可以从这里取材 |
这个分类法的"执行调用 vs 仅推荐"二分来自 Maxim 的 2026 对比文(getmaxim.ai,注意这是厂商自撰对比、含自家产品 Bifrost),横轴章节把二维扩展成了四层。
2.3 核心对比表(12 个方案)
对比维度:能力(路由决策方式 + 容错完备度)、成本(显性价格 + 隐性开销)、生态(语言/框架/模型覆盖)、成熟度(年头、社区、生产案例)、适用场景。
| 方案 | 层级 | 路由决策方式 | Fallback / 重试能力 | 部署与数据面 | 成本模型 | 生态 | 成熟度 | 最适合 |
|---|---|---|---|---|---|---|---|---|
| RouteLLM (LMSYS) | L1 | 学习型:矩阵分解 mf(推荐)、sw_ranking、bert、causal_llm,双模型强/弱配对 + 成本阈值 | 无(纯分类器) | 自托管 Python / OpenAI 兼容 server | 免费开源(Apache-2.0,据 Maxim 对比文) | Python;任意 OpenAI 兼容端点 | 论文 ICLR 2025,仓库活跃但停在"研究框架"定位 | 想自己动手、双模型场景 |
| Not Diamond | L1 | 学习型元路由器:跨 60+ 模型逐 prompt 预测,可用自有评测数据训练 | 无(明确只做推荐,"不执行调用") | 仅云 API,SOC-2/ISO27001(官网自述) | 商用报价制,无公开价目 | REST API,栈无关 | 2024 起家,2026 转向 coding-agent 路由(官网定位可证) | 团队/企业,舍得做评测集 |
| Martian | L1 | 学习型动态路由 | 无(推荐型) | 仅云 | 未公开 | API | 仍运营;路由准确率未公开数据(第三方 orcarouter 评测指出) | 试验性接入 |
| OpenRouter | L2 | 规则(models 数组优先级、allowed/excluded_models 通配)+ 市场信号(Auto Router:约 30 类任务分类 + 7 天消费份额排名 + cost_tier 成本档) | 模型级 fallback(models 数组 / fallbacks 参数,上限 3 项),按实际命中的模型计费 | 仅托管云,单点 | 按 token 加价 0(Auto Router 无附加费,官方文档原话) | OpenAI 兼容,全语言 | 最成熟的托管聚合器,451 个模型在架 | 个人/小团队的默认起点 |
| LiteLLM | L2 | 规则 + 策略路由(shuffle / least-busy / latency / usage-based(Redis TPM) / cost-based) | 最完备:fallbacks、context_window_fallbacks、content_policy_fallbacks 三类分明;num_retries(文档示例 3,另支持四级覆盖)、allowed_fails:3、cooldown_time:30(均为官方文档示例值)、num_fallbacks 默认 5 | 自托管(SDK 或 proxy),密钥在自己手里 | 免费开源 | Python 为主,OpenAI 兼容 proxy | 生产事实标准之一,个人可跑 | 自建数据面的首选 |
| Portkey | L2 | 配置式:strategy: {mode: "fallback"/"loadbalance"} + targets | on_status_codes 限定触发状态码(如 [429,500]) | 开源网关(可自托管)+ 云 | 开源免费/云收费 | TS/Py SDK | 稳定运营的中间层 | 想要网关配置即代码 |
| Cloudflare AI Gateway | L2 | 旧 Universal Endpoint(数组顺序即 fallback 序)已标弃用,官方推荐 OpenAI 兼容端点 + Dynamic Routing | 重试(maxAttempts≤5、retryDelay≤60s、constant/linear/exponential 退避)先于 fallback;cf-aig-step 头标记命中层 | 仅 Cloudflare 托管 | 网关免费(模型费另付),附带缓存/限流 | 任意 HTTP 客户端 | 大厂基建,稳定 | 已在 CF 生态的团队 |
| Vercel AI Gateway | L2 | 平台层 provider 路由 | 自动 fallback 到其他 provider(MLflow 文档印证);BYOK 模式下"自动回落系统密钥"引发社区争议(2026-04 社区帖) | 仅 Vercel 托管 | token 零加价(MLflow 文档)+ 支出监控 | AI SDK 深度绑定 | 2025 上线,快速迭代中 | Vercel 全家桶用户 |
| Bifrost (Maxim) | L2 | CEL 规则表达式路由、加权分发、企业版自适应负载均衡(5s 周期) | per-fallback 重试预算、区分"401 不重试只降级" | 开源 Go 网关,可自托管/私有化 | 开源核心 + 企业付费 | Go 高性能,SDK 多语言 | 2025–2026 上升期;"约 11µs 开销@5000RPS"为厂商自述 | 性能敏感的自建场景 |
| semantic-router (Aurelio) | L1/L4 | 语义:向量空间即时决策,不经 LLM | 不涉及 | 自托管 Python 库(MIT) | 免费开源 | Python,编码器可插拔(OpenAI/Cohere/FastEmbed) | v1.0 重构为统一 router 契约(repo issue #728) | 极低延迟的意图分流 |
LangChain with_fallbacks | L3 | 无路由 | RunnableWithFallbacks:声明式 fallback 链,exceptions_to_handle 限定触发异常 | 进程内 | 免费 | Python/JS | LCEL 老牌 API,流式场景有已知坑(issue #15191) | 已用 LangChain 的应用 |
| FrugalGPT(Stanford,论文方案) | L4 | 级联(cascade):先便宜模型,打分不合格再升级贵的 | 本质是"质量触发的 fallback" | 论文 + 参考实现(GitHub) | 免费 | Python 参考实现 | TMLR 2024 发表,引用 1500+ | 后台批处理、可自动判分的任务 |
2.4 关键事实与逐项评价
RouteLLM:开源学习型路由的基准线。 一手核实(GitHub README,2026-11-03 抓取):官方宣称训练好的路由器"成本最高降 85%,同时保持 95% GPT-4 性能(MT Bench)",且"比商业方案便宜 >40%";内置 4+1 个路由器(mf/sw_ranking/bert/causal_llm/random),核心用法是强/弱双模型配对加成本阈值(model="router-mf-0.11593"),阈值用 Chatbot Arena 数据校准(python -m routellm.calibrate_threshold --strong-model-pct 0.5 得 0.11593)。局限:它是分类器不是网关,不碰密钥、不做重试和降级;且仍需要 OPENAI_API_KEY 来生成 mf/sw_ranking 路由所需的 embedding(README 明示),这在个人自托管场景是实际负担。
Not Diamond 与 Martian:商业路由的两种活法。 Not Diamond 官网(notdiamond.ai,2026-11-03 直读)现在的定位是"intelligent model router for coding agents",宣称准确率 +5%、成本 -50%,明确姿态是推荐层:"router securely and seamlessly integrates with your existing harnesses and gateway"——即不执行调用、不碰密钥,与网关互补而非竞争。报价需联系销售,无公开价目。Martian 仍在运营,但 2026 年第三方评测(orcarouter 对比文)指出其路由准确率数据未公开,且 Not Diamond 在该独立测试中成本效益排名垫底——两条都是第三方结论,未经复核。值得注意的行业信号:一个曾经的"通用 LLM 路由"头部公司收缩到 coding-agent 垂直,说明通用逐 prompt 学习型路由作为独立生意很难做——这对个人选型是重要负面证据。
OpenRouter:托管聚合器 + 市场信号路由。 一手核实(Model Fallbacks 文档、Auto Router 文档):
- Fallback:
models数组按优先级自动换模型;上下文超限、审核拒绝、限流、宕机都触发;按实际命中模型计费(响应model字段返回);fallbacks参数最多 3 项且不能与models同用(返回 400);:free模型后面跟付费模型时,fallback 到付费模型就按付费算——想保免费只能全列免费模型。 - Auto Router(
openrouter/auto):轻量分类器把 prompt 分到约 30 个任务类型,按 7 天滚动窗口的全平台消费份额("like a market index that stays up to date")排序选模型,cost_tier选成本档(low/medium/high/xhigh/max),支持allowed_models/excluded_models通配和会话粘性;官方原话:"You pay the standard rate for whichever model is selected. There is no additional fee." - 体量(横轴章节实抓
GET /api/v1/models,2026-11-03;本会话修订时重抓复核仍为 451 个):451 个模型在架,其中 17 个完全免费(输入输出均 0 价)。
评价:OpenRouter 的路由本质是"市场信号 + 规则",不是学习型路由,但正因为信号来自真实消费分布,它对新模型的适应性反而好于需要重训练的学习型路由器。
LiteLLM:自建数据面的事实标准。 一手核实(Reliability 文档、Routing 文档、config settings):在容错完备度上没有对手——三类 fallback 分开配置,上下文超限的预检需要 router_settings.enable_pre_call_checks: true;健康度机制是 allowed_fails: 3 + cooldown_time: 30(官方文档示例值,30 秒冷却);num_retries: 3 + request_timeout: 10(文档示例值);num_fallbacks 默认 5。生产坑(第三方实践文 perun.au):fallback 在每个模型的 num_retries 用尽后才触发,乘上并发后"换模型"可能要等几十秒——个人场景要主动调小重试次数。评价:免费、密钥自持、语义清晰,是个人 Agent 自建路由的正确底座;代价是 Python 常驻进程和配置维护。
校准说明(两章参数矛盾):纵轴章节的路由表写"冷却 60s"、配置示例写cooldown_time: 120;横轴章节核实官方文档示例为 30s。综合结论:官方 Reliability 文档的示例值是allowed_fails: 3/cooldown_time: 30(该页未标注默认值;Routing 文档另注cooldown_time常量默认 5s,本会话 2026-11-03 复核),纵轴的 60–120s 属于关键任务层的自拟调优值而非官方语义;综合稿在配置示例中区分"官方文档示例值"与"个人建议值"(个人建议自拟区间统一为 60–300s,分层见 3.5.4)。
云厂商网关:Cloudflare 与 Vercel。 Cloudflare AI Gateway(Universal Endpoint 文档):旧 Universal Endpoint(数组即 fallback 链、无限 fallback、cf-aig-step 头标记命中层)已标弃用,官方转向 OpenAI 兼容端点 + Dynamic Routing;重试参数为 maxAttempts(≤5)/retryDelay(≤60s)/backoff(constant/linear/exponential),重试先于 fallback。Vercel AI Gateway:平台层 provider 路由 + 自动 fallback + token 零加价 + 支出监控;2026-04 社区在争 BYOK 模式下"自动回落到系统密钥"无法关闭的问题——fallback 的默认行为本身可能造成意外账单,这是所有托管网关的共性风险。
Bifrost 与 Portkey:配置即代码的中间层。 Bifrost(Maxim 开源的 Go 网关):CEL 规则路由、密钥级别名、加权分发、per-fallback 重试预算、"约 11µs 开销 @5000 RPS"——全部来自 Maxim 自家对比文,属厂商自述,需打折看待。Portkey:开源网关 + 云,strategy: {mode: "fallback"|"loadbalance"} + targets + on_status_codes(如只在 [429,500] 降级),配置即代码、可进 Git(portkey-gateway GitHub)。两者定位重叠,个人场景选其一即可。
框架内建:LangChain with_fallbacks。 chain = primary.with_fallbacks([fallback_a, fallback_b], exceptions_to_handle=(RateLimitError, APIError))(RunnableWithFallbacks API)。零新增组件、和业务代码同生共死,但没有冷却、健康跟踪、负载均衡,异常类型要自己维护。已知坑:LCEL 流式 + fallback 有历史 issue(langchain#15191),流式场景需实测。
2.5 不部署"路由器"的替代路线与两个"伪路由"杠杆
路由器和网关不是唯一答案。下面五种替代策略在个人规模下往往更划算:
| 替代策略 | 原理 | 成本 | 质量风险 | 适合谁 |
|---|---|---|---|---|
| A. 单旗舰 + 包月订阅 | 一条主力模型 + coding plan 包月,把成本从 token 转为固定费 | 固定可预算 | 低 | 用量集中在 coding 的个人 |
| B. FrugalGPT 级联 | 先便宜模型,自动判分不合格再升级贵模型 | 逐条最省(论文宣称最多省 98% 并匹配 GPT-4:arXiv:2305.05176,TMLR 2024) | 判分函数本身是新的失败点 | 有自动可验证信号的任务(代码测试、抽取校验) |
| C. 语义/规则分流 | 向量相似度或关键词把意图分到固定模型 | 近零(一次 embedding) | 规则维护成本 | 意图分布稳定且可枚举(semantic-router) |
| D. 蒸馏/专用小模型 | 为高频固定任务微调小模型 | 前期训练 + 极低推理 | 任务漂移即失效 | 任务高度重复的个人流水线 |
| E. 本地模型兜底 | Ollama/llama.cpp 作最后一级 fallback | 边际成本为零 | 质量显著下降 | 可用性优先于质量的夜间任务 |
两个常被忽略的"伪路由"杠杆,来自横轴章节 2026-11-03 实抓数据与官方页面(本会话修订时已复核):
- 时间维度路由:DeepSeek 官方定价(api-docs.deepseek.com,2026-11-03 直读,本会话复核)现行为分时计价——deepseek-flash 输入 cache-miss 高峰 $0.30/M、低谷 $0.15/M,输出高峰 $1.2/M、低谷 $0.6/M;cache-hit 输入高峰 $0.006/M、低谷 $0.003/M(均为同档 cache-miss 的 1/50,本会话直读官方页核实,见附录 A #11)。时段方向(初稿曾写反,经本会话复核官方页更正,见附录 A #10):高峰为工作日(中国法定节假日除外)01:00–04:00 与 06:00–10:00 UTC,即北京时间 9–12 点与 14–18 点;低谷为其余时段,且周末与节假日全天低谷。夜间与周末批处理走低谷,等于白拿 50% 折扣,不需要任何路由器。
- 批处理维度路由:OpenRouter 数据面的
:batch变体折扣因模型而异,并非普遍半价——本会话实抓两例(2026-11-03,GET /api/v1/models):gpt-5.6-luna:batch$0.1/$0.6 恰为标准档 $0.2/$1.2 的半价;z-ai/glm-5.3-flash:batch$0.05/$0.18 反而高于标准档 $0.0285/$0.0923(约 1.8–2.0 倍,见附录 A #12)。非实时任务换 batch 端点是零开发成本的降本手段,但用前须逐一核价。
2.6 学术正反方证据
- 正方:RouteLLM(arXiv:2406.18665)85% 成本降幅/95% GPT-4 质量;FrugalGPT(arXiv:2305.05176)级联策略最多 98% 省钱并匹配 GPT-4(摘要口径为同等成本下精度提升 4%)。两者共同前提是存在大量同质 query 流可供校准/训练。
- 反方:《Rerouting LLM Routers》(arXiv:2501.01818)指出学习型路由可被对抗性 prompt 操纵——让本该走强模型的高风险请求被引导到弱/廉价模型,并提出"LLM 控制面完整性"(LLM control plane integrity)问题。对个人 Agent 的直接推论:不要让模型内容本身决定路由(例如让 LLM 自评"这题简单"然后走小模型),恶意网页内容注入后可能反向操控你的成本与质量边界。
- 中性但重要:通用学习型路由需要持续再训练,2026 年头部商业玩家 Not Diamond 已收缩到 coding-agent 垂直(见 2.4),说明在"模型发布以周计"的市场里,逐 prompt 学习型路由的维护成本极易超过收益。市场信号型(OpenRouter)与规则型(LiteLLM/网关)成了实际幸存者。
三、交叉洞察:两轴结合说明了什么
3.1 纵轴的每次搬迁,对应横轴一层格局的重排
把纵轴的"三次搬迁"叠到横轴的四层地图上,能看清 2026 年末格局为什么长这样:
- 2023 年的问题住在 L4(论文层):FrugalGPT/AutoMix 定义了 cascade、scorer、self-verify 的语言。这一层至今活着,持续供给策略(级联早停、test-time optimal compute),但它从不直接碰生产流量。
- 2024 年的问题住进 L2(网关层):重试、冷却、三类 fallback 在 LiteLLM/OpenRouter 手里标准化,沉淀为默认行为。正是这层标准化,让"智能路由"后来不再是卖点——韧性成了基建的出厂设置。
- 2025–2026 年的问题住进 L3 和产品本体:GPT-5 把"何时深想"折叠进模型产品,Claude Code/Cursor/Copilot 把"限额后去哪"折叠进 Agent 本体。厂商吸收了路由决策中最靠近用户的部分。
- 被夹扁的是 L1(纯推荐学习型路由):Not Diamond 收缩到 coding-agent 垂直、Martian 数据不透明、Unify 淡出(状态未知)。结构性原因在两轴的结合处:学习型路由器的信号是训练数据,更新周期以月计;而模型发布以周计,市场信号(OpenRouter 的 7 天消费份额)以天计。信号新鲜度战胜了算法复杂度——这是横轴格局对纵轴演进最直接的注脚。
换言之,纵轴的搬迁不是"淘汰上一代",而是"沉降":论文层继续做策略供给,网关层继续做可靠性供给,产品层接管用户可感知的决策。四层地图至今全部存在,只是每层的"问题所有权"变了。
3.2 fallback 的成熟标志是"失败分类学"
纵轴显示 fallback 从 2023 年笼统的"失败了换一个",演化为 2024 年 LiteLLM 的三类 fallback(通用/上下文/内容策略),再到 2025–2026 年按失败语义分流的产品化实践;横轴则证明这套分类法已经是所有主流方案的公共语言——LiteLLM 三类分明、OpenRouter 把上下文超限/审核拒绝/限流/宕机都纳入 fallback 触发条件、Cloudflare 明确"重试先于降级"、Bifrost 甚至区分"401 不重试只降级"。两轴结合的结论:凡是可靠性工程,最后都在做失败模式分类学;失败语义三分法(可用性/能力/策略)是这个课题最可迁移的工程遗产,正确配置的边际成本近乎为零,而收益(可用性 + 不为错误的重试买单)是确定性的。
同一逻辑还有一条反面向纵深:降级链自身也会失效。纵轴的 Claude Code issue #8959(限额后未降级、只报错)证明容错路径同样需要监控与演练,否则只是"还没被观测到的单点";横轴的 Vercel BYOK 社区争议(自动回落系统密钥无法关闭)和 OpenRouter"free→付费真实扣费"规则则证明 fallback 也是成本失控的暗门。fallback 是双刃剑:它既是可用性的保险,也是账单的暗门——监控与记账必须覆盖 fallback 路径本身。
3.3 价格通缩改写了路由的收益函数
纵轴记录了价格曲线:2023 年 FrugalGPT 的前提是百倍价差;2025-01 DeepSeek R1 把推理价打到 o1 的 3–5%;2026-06 国产再降 90%。横轴用 2026-11-03 实抓数据补上截面:T0 与 T3 之间按 3.5.2 首选价口径的输出价差约 217–272 倍(T3 首选输出 $20–25/M ÷ T0 首选 $0.092/M;若计入 T3 备用 gpt-5.2-pro 的 $168/M 则约 1826 倍)——无论取哪种口径,"两个数量级起步"的结论都成立;同时 DeepSeek 分时计价(低谷半价,时段方向见 2.5 更正)和 OpenRouter :batch 变体(折扣因模型而异,见 2.5)把"时间维度路由"变成零开发成本的杠杆。两轴结合的推论:
- 靠强弱价差套利的"智能路由"收益被系统性压缩——"省 85%"的叙事在价格通缩下吸引力下降;
- 约束的排序翻转了:Agentic 长任务令 token 消耗暴涨,使用限额(配额)取代单价成为最硬约束,路由目标从"省钱"切换为"保可用 + 限额管理";
- 省钱的最优解移到了路由器之外:选对层(把 80% 请求压进 T0/T1)、选对时间(低谷/batch)、选对缓存(DeepSeek cache-hit 低谷 $0.003/M,仅为同档 cache-miss $0.15/M 的 1/50,本会话 2026-11-03 直读官方定价页核实,比任何路由决策都便宜一个数量级)——这三件事都不需要逐 prompt 智能路由。
3.4 路由决策权的内化创造了新的攻击面
纵轴的趋势是决策权不断向内容侧迁移:GPT-5 的内置 router 按"问题难不难"分流,Agent 产品的 Auto 模式按对话内容分流,FrugalGPT 式级联更是让"答案可不可信"直接决定下一跳。横轴的 arXiv:2501.01818 则从安全侧补刀:学习型路由可被对抗性 prompt 操纵,高风险请求可被诱导到弱模型——"LLM 控制面完整性"是新攻击面。两轴叠加得出本报告最重要的安全结论:路由决策离内容越近,越容易被内容操纵。个人 Agent 尤其容易在"让模型自选模型"的便利设计里埋雷——规则要写在代码里,不要写在 prompt 里;路由判断只允许依赖"用户显式指定的 tier + 任务来源(哪条流水线)+ 历史统计",不允许依赖被检索内容影响的信号。
3.5 对用户的判断与建议(个人 Agent 服务)
3.5.1 四条核心判断
- 不要买"路由器",买"结构"。个人流量(日请求千级以下)养不起学习型路由——没有校准数据,RouteLLM/Not Diamond 路线不可行,且连头部商业玩家都已收缩。最优解是"2+1 结构":两个付费供应商的分层路由表(T0–T3)+ 一个零边际成本兜底(免费档/本地/低谷与 batch)。"两家"按计费关系计,不按模型厂商计:付费关系①=OpenRouter 聚合账户(一个账单入口聚合多家上游模型),付费关系②=DeepSeek 官方直连(分时计价与缓存杠杆所在);订阅池(GLM/Kimi 编码订阅)是可选的第三条固定成本关系,不计入"两家"。与主表 3.5.2 新增的"付费关系"列一一对应。
- fallback 比路由更值得投入。失败语义三分法在所有主流方案里都已产品化,正确配置边际成本近零、收益确定;逐 prompt 学习型路由的收益依赖数据规模,个人场景大概率负收益。
- 订阅 + API 双层是 2026 年个人 Agent 的常态形态。订阅池(GLM Coding Plan 类)是"同能力档、另一种计费制度"的降级目标——限额耗尽时切到订阅池,而非降级到更弱的模型;代价是接受配额窗口与质量波动,入口价以官方页面实时为准。
- 时间维度路由是免费的午餐。夜间批处理走 DeepSeek 低谷时段(官方分时半价;高峰/低谷方向见 2.5 更正)+ OpenRouter batch 档(折扣因模型而异,见 2.5),接近白拿一半折扣,零开发成本。
3.5.2 任务分层路由表(两章主表合并;价格为 OpenRouter 实抓 2026-11-03,$/M tokens)
| 层级 | 任务类型 | 付费关系 | 首选(in/out) | 同级备用 | 可用性降级链(依次) | 质量升级链 | 重试 | 预算约束 |
|---|---|---|---|---|---|---|---|---|
| T0 闪 | 分类、标签、路由元判断、短摘要、格式转换 | ① | z-ai/glm-5.3-flash($0.029/$0.092) | qwen/qwen3.7-flash($0.03/$0.13)、gpt-5.6-luna($0.2/$1.2) | free 档(全平台 17 个,实抓在架)→ 另一免费供应商 → 本地模型(零边际成本地板) | 无(错了重跑成本低) | 1 次、0 退避 | $0–1/月 |
| T1 常 | 日常对话、文档问答、常规编码、Agent 中间步骤 | ① 按量首选;③ 订阅可选主用;② 末端旁路 | z-ai/glm-4.6($0.5/$2.0)或 GLM/Kimi 订阅端点 | minimax-m2.5($0.27/$0.95)、kimi-k2.5($0.5/$2.5)、deepseek-v4.1-flash(官方低谷 $0.15/$0.6) | 订阅池(③)→ 同级备用(①)→ DeepSeek 官方直连低谷价(②,独立于 OpenRouter 的旁路) | 连续 2 次验证失败 → 升 T2 | 2 次,指数退避 | 订阅内,溢出即熔断到 T0 |
| T2 重 | 长文写作、复杂推理、跨文件重构、最终产出 | ① 首选;② 旁路;③ 最后兜底 | claude-sonnet-4.6($3/$15)或 gpt-5.6-terra($2/$12) | glm-5($1/$3.2)、deepseek-v4-pro(官方低谷 $0.66/$1.98) | 同模型换供应商(①内 OpenRouter 自动)→ 另一家 frontier gpt-5.6-terra(①)→ DeepSeek 官方直连 deepseek-v4-pro(②,OpenRouter 宕机旁路)→ 订阅池(③)兜底 | scorer 通过才交付;失败重问一次 | 3 次,指数退避 + 冷却 | 单任务 $1 上限 |
| T3 巅/敏感 | 攻坚 bug、高危不可逆操作(付款/删除/对外发送)前复核 | ① | claude-opus-4.8($5/$25,ctx 1M)或 gpt-5.6-sol($4/$20) | gpt-5.2-pro($21/$168,慎用) | 不自动降级——宁可失败 | 双模型互查(强模型互验)+ 人工确认 | 不自动重试语义类任务 | 不设省钱路由 |
| 后台批 | 夜间索引、摘要、评测跑分 | ① batch 档 + ② 低谷时段 | 同 T0/T1 模型的 batch 档(折扣因模型而异,见 2.5)+ DeepSeek 低谷时段(工作日非高峰时段与周末全天半价) | — | 白天重跑 | — | — | 时间维度路由,零开发成本 |
付费关系图例(对应 3.5.1 判断 1 的"2+1"):
- ①=OpenRouter 聚合账户:一个账单入口聚合多家上游(z-ai、qwen、openai、anthropic、minimax、kimi 等都在其数据面)。"两家付费供应商"中的"两家"指两条计费关系而非两家模型厂商——①虽然聚合多厂,对个人只是一份账单、一个密钥。
- ②=DeepSeek 官方直连:分时计价与缓存杠杆所在,是独立于 ① 的第二份账单;兼任 ① 单点故障时的旁路(见 3.5.4 单点对冲)。
- ③=GLM/Kimi 编码订阅(可选):固定成本层,与 ① 同能力档、不同计费制度;不启用不影响"2+1"成立,启用后为"2+1+订阅"。
- "+1"=零边际成本兜底:free 档、本地模型、低谷/batch 时段,均不新增账单。
首选/备用的排序判据(价格不是第一判据):①能力档位与任务匹配——首选必须稳定承担该层任务类型,备用只要求"同层可用";②工具调用/结构化输出可靠性——Agent 中间步骤依赖 function calling 完好率(OpenRouter 已把该指标纳入路由评分,见 3.5.3),本报告未逐模型实测,列为待补项;③降级链家族一致性——首选与订阅池/T3 互查链同家族时,切换的提示格式与工具调用一致性最好;④价格只在①–③接近时作决胜项。按此:
- T1 首选
glm-4.6而非全面更便宜的minimax-m2.5(后者 $0.27/$0.95,便宜约 46%/52%):glm-4.6 有官方文档与 Claude Code 兼容端点背书(附录 B docs.z.ai),且与订阅池(GLM Coding Plan)同家族,③↔①互降一致性最好;minimax-m2.5 的工具调用完好率与长任务稳定性未在本报告复核,故列同级备用。deepseek-v4.1-flash(低谷 $0.15/$0.6)虽然更便宜,但它是付费关系②的入口,职责是"独立于 OpenRouter 的旁路",且低价依赖低谷时段,不作全时段首选。 - T2 首选
sonnet-4.6而非便宜约 67%/79% 的glm-5($1/$3.2):T2 承担"最终产出",首选判据是能力档位;sonnet-4.6 与 T3 的 opus-4.8 同家族,质量升级/互查链可在同家族内闭环;glm-5 与 frontier 档的能力差距未在本报告复核(无第三方基准引用),列同级备用——若后续复核证明其同档,应上移首选(省 $2/M 入、$11.8/M 出),排序判据公开化的意义就在于可被新证据推翻。 - T0 价格决胜:三者同为闪电档,首选最便宜的
glm-5.3-flash;gpt-5.6-luna贵近一个数量级,作跨家族对冲备用。
质量闸门(T1/T2)的可执行实现——主表 T1"连续 2 次验证失败→升 T2"、T2"scorer 通过才交付"中的验证器/scorer,个人 Agent 按任务族落地如下(T3 已有"双模型互查",此处补 T1/T2 的空档):
- T1(机械校验,近零成本):代码产出→编译/单测通过;结构化产出→JSON schema 或工具调用参数校验;文档问答→引用回链(答案引用片段须能在检索源命中);开放对话→只做格式校验、不逐条验证(成本上不划算)。"验证失败"即上述校验未通过,连续 2 次触发升级。
- T2(跨家族互审,成本约为单次产出 ×2):跨文件重构/代码类→编译 + 测试通过即 scorer(自动判分信号最强);长文/复杂推理→用与产出模型不同家族的模型按固定 rubric 审一遍(结构完整、约束逐条核对、事实抽检),只在"最终产出"启用、中间步骤不审——与"把 80% 请求压进 T0/T1"的原则一致。rubric 模板为本报告自拟方案,属待实测项(不同任务族需各自校准)。
3.5.3 失败类型 → 动作映射(两章子表合并)
| 失败类型 | 检测信号 | 动作序列 | 依据 |
|---|---|---|---|
| 限流 429 / usage limit | HTTP 429 | 尊重 retry-after 退避(供应商明确限流时不立即换模型)→ 同模型重试 1 次 → 同级备用 → 记冷却(文档示例 30s)→ 记账 | OpenRouter 六信号之一、Claude Code 限额降级、LiteLLM 退避语义 |
| 宕机 / 超时 5xx | HTTP 5xx / timeout | 指数退避重试 2–3 次 → 换同级备用 → 原部署进冷却 60–300s → 兜底层 | LiteLLM allowed_fails/cooldown_time |
| 上下文超限 | context_length_exceeded 类错误 | 禁止重试 → context_window_fallbacks 换长窗模型(层内高窗型号;顶配为 opus-4.8 的 ctx 1M,见主表)→ 仍超限则压缩/检索裁剪或分块 | LiteLLM 上下文 fallback + enable_pre_call_checks |
| 审核拒绝 | content policy violation | 换供应商(跨家族,content_policy_fallbacks),不换同级同源模型、不重试 | LiteLLM 内容策略 fallback |
| 工具调用损坏 / JSON 解析失败 | 输出质量信号 | 计入该模型质量计数;连续失败触发质量升级链;只在支持 function calling 的层内 fallback,禁止降到 T0 | OpenRouter 把工具调用完好率纳入路由评分(2026-10) |
| 流式已输出 token 后失败 | 请求边界已过 | 不可换模型;丢弃半截响应、整请求重来,并在边界前置探测(≤64 token 试连) | SegmentFault 流式坑 + langchain#15191 |
3.5.4 最小可执行配置(合并两章示例,区分官方文档示例值与个人建议值)
路线一:托管(OpenRouter,零运维)——请求级 fallback,按实际命中模型计费:
resp = client.chat.completions.create(
model="z-ai/glm-4.6",
models=["z-ai/glm-4.6", "deepseek/deepseek-v4.1-flash", "z-ai/glm-4.7-flash"],
extra_body={"route": "fallback"},
)路线二:自托管(LiteLLM,密钥自持、三类 fallback 分明)——字段语义依据官方 Reliability 文档,分档重试与四级 num_retries 覆盖依据 Routing 文档(本会话 2026-11-03 复核);model id 与订阅端点为 2026-11-03 口径的示例写法,落地前以 LiteLLM 与各供应商当前文档为准。配置与主表 3.5.2 的付费关系、降级链逐行对应:
model_list:
# ── 付费关系③(可选固定成本层):GLM Coding Plan 订阅池 ──
# 订阅走 Claude Code 兼容端点(Anthropic 格式),接入参数以 z.ai 当前接入文档为准
- model_name: t1-sub
litellm_params:
model: anthropic/glm-4.6
api_base: https://api.z.ai/api/anthropic
num_retries: 2 # T1 档重试(分档重试在部署级落地,见下方说明)
# ── 付费关系①:OpenRouter 聚合账户(按量)──
- model_name: t1-coder # T1 首选(主表 z-ai/glm-4.6)
litellm_params:
model: openrouter/z-ai/glm-4.6
num_retries: 2
- model_name: t1-coder-alt # T1 同级备用(跨家族)
litellm_params:
model: openrouter/minimax/minimax-m2.5
num_retries: 2
- model_name: t2-frontier # T2 首选(主表 claude-sonnet-4.6;opus-4.8 属 T3,勿放此处)
litellm_params:
model: openrouter/anthropic/claude-sonnet-4.6
num_retries: 3
- model_name: t2-frontier-alt # T2 的"另一家 frontier"
litellm_params:
model: openrouter/openai/gpt-5.6-terra
num_retries: 3
# ── 付费关系②:DeepSeek 官方直连(独立于 OpenRouter 的旁路)──
- model_name: t1-ds # T1 档旁路(低谷 $0.15/$0.6,高峰加倍)
litellm_params:
model: deepseek/deepseek-v4.1-flash
num_retries: 2
- model_name: t2-ds # T2 档旁路(低谷 $0.66/$1.98)
litellm_params:
model: deepseek/deepseek-v4-pro
num_retries: 3
# T3 不设自动降级(宁可失败),只定义入口,不进任何 fallback 链
- model_name: t3-sentinel
litellm_params:
model: openrouter/anthropic/claude-opus-4.8 # 主表 T3 首选
litellm_settings:
num_retries: 1 # 全局下限(官方文档示例 3);T0 与未覆盖部署走此值,分档见下方说明
request_timeout: 30 # 官方文档示例 10s 偏紧,长任务放宽
# fallback 链与主表 3.5.2 逐跳对应;主表 T2 首跳"同模型换供应商"
# 由 OpenRouter 在①内部自动完成,不占 LiteLLM fallback 位
fallbacks:
- t1-coder: ["t1-sub", "t1-coder-alt", "t1-ds"] # T1 链:③订阅池 → ①同级备用 → ②旁路
- t1-sub: ["t1-coder", "t1-ds"] # 主用订阅时:回①按量 → ②旁路
- t2-frontier: ["t2-frontier-alt", "t2-ds", "t1-sub"] # T2 链:另一家 frontier → ②旁路 → ③兜底
context_window_fallbacks:
- t1-coder: ["t2-frontier"] # 超长上下文走高窗模型(顶配 opus-4.8 ctx 1M 属 T3,按需加入)
content_policy_fallbacks:
- t1-coder: ["t1-coder-alt"] # 审核误伤换供应商(跨家族),不换能力档
router_settings:
enable_pre_call_checks: true # 发请求前预检 token 数,命中上下文分流
allowed_fails: 3 # 官方文档示例值
cooldown_time: 30 # 官方文档示例值;关键层自调至 60–300s(T1 60–120s、T2 120–300s)分档重试如何落地(对应主表 T0 1 次/T1 2 次/T2 3 次):num_retries 在 LiteLLM 有四级覆盖——请求头 x-litellm-num-retries(仅 proxy)、请求体 num_retries、model_list 各部署的 litellm_params.num_retries、litellm_settings 全局默认(Routing 文档,本会话 2026-11-03 复核)。上面示例在部署级按层写入(T1 各部署 2 次、T2 各部署 3 次),全局留 1 兜底 T0 与未覆盖部署——主表的分档由此表达。另注意 num_retries(LiteLLM 层重试)≠ max_retries(供应商 SDK 内部重试),LiteLLM 路由调用会把后者钉为 0,避免双重重试。
路线三(补充):包月订阅层——GLM Coding Plan 类订阅可作 T1/T2 的固定成本层;前提是接受其配额窗口(如"每 5 小时 N 次提示")与质量波动。价格随时间变动明显(2025 年 Lite 档约 $3–6/月,2026 年第三方评测显示约 $10–18/月),以 z.ai/subscribe 实时为准。
单点对冲:路线一(以及全报告价格口径)压在 OpenRouter 上怎么办——2.3 已自评 OpenRouter"仅托管云,单点",本表与路线一的全部实抓价格也都以其为口径。对冲设计(已织入主表降级链,不是补充说明而是表内行项):
- 付费关系②(DeepSeek 官方直连 key)常备:T1/T2 降级链中均有一跳落在②——OpenRouter 整体宕机或限流时,T1/T2 仍有独立计费路径可用(低谷时段价格更优,白天高峰也可接受);
- 可选再常备一份主用模型供应商的官方直连 key(如 z.ai/bigmodel 官方 API):仅人工切换、闲置零月费,作 ①② 同时异常时的最后付费手段;
- T0 层以本地模型(Ollama)为可用性地板:free 档与"另一免费供应商"都在 ① 内,OpenRouter 挂掉时 T0 的真正兜底是本地模型;
- 演练:旁路 key 至少演练过一次真实切换——3.2 已证降级链自身也会失效(Claude Code issue #8959),没演练过的旁路只是"还没被观测到的单点"。
3.5.5 八条设计原则(两章原则合并去重)
- 静态分层优先于学习型路由:个人流量不足以训练 RouteLLM 式路由器;Cursor/Copilot/Claude Code 最终也都收敛到"静态分层 + 启发式"。
- 失败类型决定动作,而非一律重试:限流/宕机 → 重试后换同级;上下文超限 → 换长窗模型(不是重试);审核拒绝 → 换供应商(不是重试)。把重试花在能力不匹配的请求上是最大的隐性浪费。
- 降级链与升级链是两条独立的链:可用性降级链应对故障;质量升级链(FrugalGPT 式 scorer / AutoMix 式自验证)应对"答了但答错"——T1/T2 的具体验证器实现见 3.5.2"质量闸门"段。
- 缓存优先于路由:embedding/前缀缓存命中价(DeepSeek cache-hit 低谷 $0.003/M、高峰 $0.006/M,均为同档 cache-miss 的 1/50,本会话 2026-11-03 直读官方定价页核实)比任何路由决策都便宜一个数量级;路由表之前先查缓存。
- 熔断、预算与记账是路由表的一部分:
allowed_fails+cooldown_time防止反复撞墙;按 tier 设日预算,超限自动整体降一档(T2→T1、T1→T0)而不是全停;所有降级必须留痕——日志至少记录"原始模型 + 实际模型 + 触发原因"(LiteLLM spend log 支持attempted_fallbacks字段)。 - 流式请求只在边界降级:中途不能换模型,所以首轮探测(小 max_tokens 试连)值得做。
- 禁止内容决定路由:对抗风险(arXiv:2501.01818)——路由判断只依赖用户显式 tier、任务来源与历史统计,不依赖被检索内容影响的信号;规则写在代码里,不写在 prompt 里。
- 路由表是有保质期的资产:价格与限额变动(如 2026-06 国产降价、GLM 订阅涨价)会使"最优链"在半年内过期,每季度复核一次。
3.5.6 交付检查清单
- [ ] 每个任务层级有唯一的入口模型名,代码中不出现 provider 硬编码;
- [ ] 三类 fallback(通用/上下文/内容策略)均配置且互不混用;
- [ ] 冷却参数与预算熔断数值写入配置而非散落在代码;
- [ ] spend 日志保留
attempted_fallbacks与original_model_group字段并周检; - [ ] 流式接口的首包探测(≤64 token 试连)在 T2 层默认开启;
- [ ] 付费关系②的直连旁路 key 已配置,并至少演练过一次真实切换(OpenRouter 单点对冲,见 3.5.4);
- [ ] 每季度复核路由表:价格与限额变动会使"最优链"在半年内过期。
3.5.7 成本算例:照主表跑一个月要花多少(自拟假设,供复算)
假设(自拟,取 3.5.1 判断 1"日请求千级以下"的上限做演示):日 1,000 次请求,层级分布 T0 60%/T1 30%/T2 9%/T3 1%;平均每请求 token 规模 T0 2K 入/0.5K 出、T1 8K 入/1K 出、T2 20K 入/3K 出、T3 20K 入/4K 出。按主表首选价(OpenRouter 实抓 2026-11-03)计 30 天:
| 层 | 月请求 | token 量(入/出) | 首选单价 | 月成本 |
|---|---|---|---|---|
| T0 | 18,000 | 36M / 9M | $0.029/$0.092 | ≈ $2 |
| T1 | 9,000 | 72M / 9M | $0.5/$2.0 | ≈ $54 |
| T2 | 2,700 | 54M / 8.1M | $3/$15 | ≈ $284 |
| T3 | 300 | 6M / 1.2M | $5/$25 | ≈ $60 |
| 合计 | 30,000 | 168M / 27.3M | — | ≈ $400/月 |
同一负载的其他走法(复算方法:月成本 = Σ(层请求量 × 层均 token × 层单价)):
- 全走次旗舰
sonnet-4.6:168M×$3 + 27.3M×$15 ≈ $914/月 → 主表省约 56%; - 全走
opus-4.8:168M×$5 + 27.3M×$25 ≈ $1,523/月 → 主表省约 74%; - "单旗舰 + 订阅"(替代策略 A:T0/T1 进 GLM 订阅约 $14/月,T2/T3 全走 sonnet-4.6):≈ $334/月;
- 主表分层、T1 进订阅:≈ $400 − $54 + $14 ≈ $360/月——比"单旗舰+订阅"贵约 $26/月,差额买的是 T3 层 opus 级复核;若 T3 首选也降为 sonnet-4.6,分层即退化为"单旗舰+订阅"。分层的真正节省对象是"全旗舰"跑法(省 56%–74%),以及 T0/T1 的低成本主力层。
算例为量级演示:请求分布与 token 规模为自拟假设;未计缓存命中(DeepSeek cache-hit 为同档 miss 的 1/50,见原则 4)、低谷/batch 折扣与订阅溢出,这三者只会进一步压低实际账单。
3.6 方法论沉淀(这次学到什么)
- 技术史常呈"三次搬迁"结构:同一问题从论文迁到网关再迁入产品本体,上一代方案沉淀为下一层默认行为,而非被淘汰。判断一个领域成熟度,可以看它的核心机制搬了几次家。
- 约束的排序会翻转,方案随之翻转:当限额(配额)比价格更硬时,路由目标从"省钱"切换为"保可用",DeepSeek 降价就是这次翻转的扳机——设计系统时要预判哪个约束先饱和。
- 信号新鲜度战胜算法复杂度:学习型路由输给市场信号路由,不是因为算法差,而是训练数据的更新周期追不上模型发布周期。任何依赖"学习"的中间层,都要先回答"信号从哪来、多新"。
- fallback 的成熟标志是"分类":从笼统的"失败了换一个"到按失败类型分流的多条链;凡是可靠性工程,最后都在做失败模式分类学。
- 降级系统自身会失效:容错路径同样需要监控与演练,否则只是"还没被观测到的单点";而 fallback 的默认行为也可能是账单的暗门——保险丝和漏电口是同一根线。
附录 A:两章矛盾与差异校准记录
综合时逐条处理了两章之间的矛盾与口径差异,处理方式与依据如下(#10–#12 为本次修订新增):
| # | 议题 | 纵轴表述 | 横轴表述 | 校准结果 | 依据 |
|---|---|---|---|---|---|
| 1 | FrugalGPT 同成本精度提升 | 同等成本下提升最多 4% 精度 | "比 GPT-4 准 7%(在可判分基准上)" | 采信 4%,弃用 7% | 本会话 WebFetch 直读 arXiv:2305.05176 摘要页,原文"improve the accuracy over GPT-4 by 4% at the same cost";7% 未见于摘要 |
| 2 | LiteLLM 冷却时间 | 路由表"冷却 60s"、示例 cooldown_time: 120 | 官方文档示例 allowed_fails:3 / cooldown_time:30 | Reliability 文档示例值(3/30)为基线——该页未标注默认值,Routing 文档另注 cooldown_time 常量默认 5s;60–300s 属关键层自拟调优区间(T1 60–120s、T2 120–300s,全篇统一),报告中区分"官方文档示例值"与"个人建议值" | 横轴一手抓取 Reliability 文档;本会话 2026-11-03 复核 Reliability 与 Routing 文档 |
| 3 | GLM Coding Plan 价格 | 2025 年 Lite 档约 $3–6/月 | 2026 年第三方评测入口价约 $10–18/月 | 时间演进而非矛盾:按"2025 定价 → 2026 上浮"呈现,标注以 z.ai/subscribe 实时为准 | 两章各自来源 |
| 4 | DeepSeek 价格 | R1 $0.55/$2.19(2025-01 事件) | deepseek-flash 低谷 $0.15/$0.6(2026-11 分时价) | 时间演进而非矛盾:R1 是 2025 价格冲击事件,分时价是当前定价制度 | 两章各自来源 |
| 5 | 个人场景重试次数 | 示例 num_retries: 2 | 示例 num_retries: 1 | 方向一致(调小);综合稿全局取 1 作下限,并在 model_list 部署级按层覆盖(T1=2、T2=3)表达主表分档——num_retries 支持请求头/请求体/部署级/全局四级覆盖 | 两章配置示例 + perun.au + Routing 文档(本会话复核) |
| 6 | GLM 接入端点 | open.bigmodel.cn | api.z.ai | 同一服务的国内外两个端点,均可;示例中注明 | — |
| 7 | 个人路由表结构 | T0–T3,含质量升级链/预算约束列 | T0–T3 + 后台批,含实抓价格列 | 合并为一张主表(3.5.2):横轴实抓价格 + 纵轴质量升级链与预算约束 | — |
| 8 | 失败映射表 | 7 行(含流式边界;429 拆"通用"与"+retry-after"两行) | 5 行(含工具调用降级限制) | 合并为一张表(3.5.3):纵 7 行 ∪ 横 5 行——横轴 5 行均可对应到纵轴行项(429、5xx/超时、上下文、审核、工具调用),并集实质为纵轴 7 类失败;合并时把纵轴"HTTP 429 通用"与"429+retry-after"两行合为一行(retry-after 语义并入动作列),故为 6 行,无失败类型被丢弃。另采信纵轴口径处理一处实质矛盾:横轴主张"5xx 不重试同模型、直接换备用",纵轴主张"退避重试 2–3 次再换",合并表取后者(与主表分档重试一致) | 两章原文比对(本会话) |
| 9 | FrugalGPT 衰减口径 | "或同等成本提升 4%" | "省 98%" 单独强调 | 统一为摘要完整口径:最多降 98% 成本并匹配 GPT-4,或同成本提升 4% | 同 #1 |
| 10 | DeepSeek 高峰/低谷时段方向 | 低谷记为周一至五 01:00–04:00、06:00–10:00 UTC | 同左 | 方向更正:本会话 2026-11-03 直读官方定价页,上述时段为高峰(北京时间 9–12 点、14–18 点,工作日;节假日除外),低谷为其余时段,周末与节假日全天低谷;2.5 与 3.5.2 已按官方口径更正 | DeepSeek 官方定价页(本会话复核) |
| 11 | DeepSeek cache-hit 价 | — | "cache-hit 低谷 $0.003/M,官方页实抓",但未列明出处段落 | 复核属实并补出处:官方定价页 deepseek-flash cache-hit 低谷 $0.003/M、高峰 $0.006/M(均为同档 cache-miss 的 1/50);deepseek-v4-pro cache-hit 低谷 $0.022/M | 同 #10 |
| 12 | OpenRouter batch 档折扣 | — | "大量模型 :batch 恰好半价",仅 gpt-5.6-luna 一例支撑(原文另记 glm-5.3-flash batch $0.05/$0.18 vs 标准 $0.029/$0.092,与半价说法相悖) | 降格并补样本:本会话实抓两例核实——gpt-5.6-luna:batch $0.1/$0.6 = 标准档 $0.2/$1.2 的半价;z-ai/glm-5.3-flash:batch $0.05/$0.18 反而高于标准档 $0.0285/$0.0923。结论改为"折扣因模型而异,用前逐一核价" | GET openrouter.ai/api/v1/models(本会话实抓,451 个模型在架) |
两章重复内容已合并:FrugalGPT/RouteLLM 的数字与出处、OpenRouter fallback 语义、LiteLLM 可靠性参数、Not Diamond 转型、个人路由表与失败映射、参考来源列表——均只在一处完整呈现。
附录 B:参考来源
综合自两份章节文件
- [纵轴:模型路由与 fallback 策略——纵轴发展史](parts/2026-11-03-模型路由与fallback策略-vertical.md)(2026-11-03,会话内检索+抓取)
- [横轴:模型路由与 Fallback 策略——2026-11-03 时间截面横向对比](parts/2026-11-03-模型路由与fallback策略-horizontal.md)(2026-11-03,检索与抓取时间 02:30–03:40 UTC+8)
一手文档(两章已抓取正文,本会话再次核实的单独标注)
- arXiv:2305.05176 FrugalGPT(本会话复核摘要,用于校准 4%/7% 矛盾)
- LiteLLM Reliability(本会话复核)| LiteLLM Routing(本会话复核:
num_retries四级覆盖、cooldown_time常量默认 5s)| LiteLLM config settings - OpenRouter Model Fallbacks | OpenRouter Auto Router | OpenRouter: How We Rebuilt Provider Routing(2026-10-28)
- OpenRouter 可靠性博客 | Provider Routing 文档
- OpenRouter Models API(本会话 2026-11-03 实抓:451 个模型在架,batch 样本两例,见附录 A #12)
- DeepSeek 官方定价页(分时计价)(本会话复核:cache-hit 价与高峰/低谷方向,见附录 A #10–11)
论文
- RouteLLM arXiv:2406.18665 | ICLR 2025 会议版 | Hybrid LLM arXiv:2404.14618 | AutoMix arXiv:2310.12963 | 级联早停 arXiv:2502.09054 | 路由综述 arXiv:2603.04445 | Rerouting LLM Routers arXiv:2501.01818
产品与官方文档
- RouteLLM GitHub README | FrugalGPT GitHub | semantic-router GitHub | portkey-gateway GitHub
- Cloudflare Fallbacks | Cloudflare Universal Endpoint
- Claude Code 模型配置(自动回退) | Claude Code issue #8959 | Cursor 定价与 Auto 说明 | Cursor Models & Pricing | Copilot Auto 模型选择官方文档 | langchain#15191 | RunnableWithFallbacks API | ADK 模型路由 | Vercel AI Gateway 社区帖(BYOK 回落) | MLflow × Vercel AI Gateway
- OpenRouter Wikipedia(2023 上线) | notdiamond.ai 官网 | z.ai/subscribe | docs.z.ai GLM-4.6
事件报道与分析
- Fortune:Altman 路线图 | GPT-5 统一系统报道(firat.rw) | Digital Information World:GPT-5 | DeepSeek R1 定价分析(LinkedIn) | DeepSeek 日收入分析(Level Up Coding) | The Batch:FrugalGPT | 人民网:国产模型降价(2026-06)
- Braintrust:2026 路由平台综述 | pakodas:State of LLM Routers | Redis 路由架构实践 | zylos.ai 路由综述(2026-03) | getmaxim:路由工具对比(厂商自述) | orcarouter:Not Diamond vs Martian(第三方) | perun.au:LiteLLM 生产实践 | 腾讯云:统一网关重试降级 | SegmentFault:大模型网关 | GLM Coding Plan 评测 | Coding Plan Hub 对比 | Reddit:Claude Code Max 降级 Sonnet | Microsoft Research: Best Route | worksflow.ai:Copilot Auto 解析
未核实项(两章原文保留,未采信为结论)
- Copilot"企业默认 Auto + CLI 任务级路由"的 2026-07 时间点仅见于二手汇总(SIG-CAP 报告转述),未在官方文档直接核实。
- Martian"最早 LLM router"的说法转引自 Braintrust 综述,未查到原始报道链接。
- "OpenRouter 被 Stripe 收购($7B+)"多次出现在搜索摘要中,但未找到一手来源,不采信;"Unify AI 关停"同样无法证实,仅能确认其已从 2026 年主流对比清单中淡出(第三方观察),按"淡出、状态未知"处理。
附录 C:审读意见修订记录(2026-11-03)
本稿按 8 条独立审读意见逐条修订初稿而成;修订过程中另行核实并更正 2 处事实(见末两行)。初稿未受质疑的内容均原样保留。
| # | 审读意见 | 处理与落点 |
|---|---|---|
| 1 | 核心建议"2+1"与主表脱节;T1 链"上层 API"所指不明 | 主表 3.5.2 新增"付费关系"列并附图例(①=OpenRouter 聚合账户、②=DeepSeek 官方直连、③=可选订阅池、"+1"=零边际成本兜底);TL;DR 与判断 1 同步改写"两家"定义;T1 降级链"上层 API"改为"DeepSeek 官方直连低谷价(②,独立旁路)",T2 链逐跳落到具体模型与付费关系 |
| 2 | 首选/备用排序无依据(备用更便宜) | 表下新增"首选/备用的排序判据"段(能力档位→工具调用可靠性→降级链家族一致性→价格决胜),逐层说明 T1(glm-4.6 vs minimax-m2.5)、T2(sonnet-4.6 vs glm-5)、T0 的排序理由,未复核项如实标注,并注明判据可被新证据推翻 |
| 3 | 配置示例与主表/映射表四处矛盾 | 路线二按主表重写:t2-frontier 改为 claude-sonnet-4.6(opus-4.8 移入 t3-sentinel);订阅端点进 model_list(t1-sub),fallback 注释与指向一致且与主表逐跳对应;分档重试以部署级 num_retries 落地(附 Routing 文档四级覆盖依据);冷却自拟区间统一为 60–300s(T1 60–120s、T2 120–300s),3.5.3/3.5.4/附录 A #2 三处一致 |
| 4 | 3.3 两个关键数字缺文本内支撑 | cache-hit 低谷 $0.003/M 经本会话直读官方定价页补出处并复核属实(另连带更正高峰/低谷方向,附录 A #10–11);"200–500 倍"改为可复算口径:首选 217–272 倍($20–25÷$0.092),含 T3 备用 gpt-5.2-pro 约 1826 倍 |
| 5 | 两处计数硬伤 | 2.3 标题更正为"12 个方案"(本会话重数核实:L133–144 共 12 行);附录 A #8 改写为"纵 7 行 ∪ 横 5 行=7 类失败,429 两行合一后 6 行、无类型丢弃"的如实口径,并注明 5xx 重试矛盾的取舍 |
| 6 | 标题承诺的"质量成本权衡"无量化算例 | 新增 3.5.7 成本算例:日 1,000 请求按层分布(60/30/9/1)→月成本 ≈ $400(T1 进订阅 ≈ $360),对比全 sonnet($914)、全 opus($1,523)、"单旗舰+订阅"($334),假设与复算公式全部给出 |
| 7 | T1/T2 质量闸门未落地 | 3.5.2 表下新增"质量闸门(T1/T2)的可执行实现":T1 机械校验(编译/单测、JSON schema、引用回链);T2 跨家族互审(代码类以编译+测试为 scorer,长文用 rubric 互审并标注为自拟待实测项) |
| 8 | OpenRouter 单点风险未调和;batch 半价证据过弱;"多数事故"无来源 | 3.5.4 新增"单点对冲"段(付费关系②旁路常备+可选官方直连 key+本地地板+切换演练),并列入 3.5.6 清单;batch 半价降格为"折扣因模型而异"并以本会话实抓两例支撑(附录 A #12);2.1"多数事故"软化为"常见事故"并注明无案例统计 |
| 附 | (修订中新核实)DeepSeek 高峰/低谷方向写反 | 官方页显示 01:00–04:00、06:00–10:00 UTC(工作日)为高峰;2.5、3.5.2、判断 4 已更正,附录 A #10 |
| 附 | (修订中新核实)冷却"官方默认 30s"表述不准 | Reliability 页 3/30 为示例值而非标注的默认值,Routing 文档另注 cooldown_time 常量默认 5s;全篇"官方默认"改为"官方文档示例值",附录 A #2 |