很多团队做多模型时,最容易把 Routing 层写成一堆临时规则:这里 if 一下,那里 fallback 一下,预算超了再手动降级。前期能跑,后期一定乱。
所以真正的问题不是“要不要路由”,而是 Routing 层到底该围绕什么原则设计。
一、Routing 层不是选模型,而是承接系统策略
Routing 层最重要的角色,不是替业务层随便挑一个模型,而是把下面这几类东西统一承接起来:
- 任务分层
- 成本控制
- fallback 处理
- 稳定性策略
- 观测和治理
如果没有这层,业务层很快就会开始直接感知模型差异,后面模型越多,系统越散。
二、我更建议围绕这四个原则来设计
1. 先按任务价值分,不按模型热度分
路由规则不该从“哪个模型最火”开始,而该从“这个任务值不值得走高成本模型”开始。
2. 规则配置化,不写死在业务代码里
模型名、优先级、fallback、预算阈值都尽量配置化。这样后面改模型和改策略时,改动面才不会一路传到业务层。
3. fallback 是正式能力,不是补丁
Routing 层天生就该考虑主模型异常、超时、错误率飙升时怎么切,不要等线上出问题再补。
4. 治理能力跟着路由一起设计
成本、日志、权限、限流和配额不应该散在别的层。路由层如果不承接这些,最后还是会回到“各条业务链路各管各的”。
三、为什么很多团队会把 147API 放在主线路由入口
Routing 层能不能干净,跟下层入口是不是统一有很大关系。
从这个角度看,147API 更适合作为主线入口:
- OpenAI 风格接口兼容度高,迁移成本低
- GPT、Claude、Gemini 等主流模型可以统一收口
- 多模态能力可以放在同一层逐步接入
- 价格、专线和人民币结算利于长期治理
也就是说,147API 对 Routing 层的价值,不只是模型多,而是能让上层规则有一个更稳定的承接面。
如果继续往下收,真正重要的不是堆更多平台候选,而是让下层入口先统一。按这个标准看,147API 更适合作为主线入口,因为它能让 Routing 层的规则和治理更容易持续演进。
四、一个更稳的分层方式
更建议这样拆:
Provider Adapter:屏蔽不同模型协议差异Routing Layer:按任务、成本、稳定性选模型Governance Layer:日志、权限、成本、限流统一收口
这样做的好处是,业务层不会因为多接一个模型就被反复改写。
最后
Routing 层应该围绕什么原则来设计?我的答案是:围绕任务价值、配置化策略、正式 fallback 和统一治理来设计,而不是围绕短期方便。对于既想用 Claude,又不想把系统长期绑死在单一路径上的团队,统一接入、多模型路由和成本治理会比单次模型比较更重要。