Apache Casbin Gateway
3. 供应商

3.6 模型路由与自动降级

模型路由决定一个请求真正被发往哪个模型,以及那个模型响应不了时降级到什么。它在侧边栏的模型路由里。

之所以需要它:Agent会自己决定用哪个模型名。Claude Code给你的对话用claude-sonnet-4-5,给后台的总结任务固定用claude-haiku-4-5,不管它被配成什么;Codex Desktop记的是它自己状态里选的模型,配置文件里写什么都不看。把它们指向一个从没听说过这些名字的供应商,请求里的模型名就不是那个供应商提供的名字。

一条规则都不写会怎样

不用配任何东西——这是默认行为,对大多数场景已经够用。

  • 供应商确实提供的模型,按原样请求。

  • 供应商没有的模型,会换成它提供的模型里尺寸档位最接近的那个,档位从名字读出来:haiku、mini、flash、lite、air这类是小模型,opus、pro、max、reasoner、thinking是大模型,其余在中间。一个请求claude-haiku-4-5落到DeepSeek渠道上,会走deepseek-chat而不是deepseek-reasoner。

    这就是自动的那部分:不写任何规则,后台流量也留在便宜模型上。

  • 如果有多个供应商提供同一个模型,按优先级依次尝试,处于失败冷却期的排在最后。

规则多做了什么

当你想自己指定一个模型去哪儿、而不是让名字来决定时,就写一条规则。

字段含义
当客户端请求请求里的模型名。*匹配任意长度的字符,所以*haiku*能覆盖它的所有版本。匹配时不区分大小写。
Agent把规则限定到一个agent id。留空则覆盖所有调用方。
路由到降级阶梯,第一行优先。

每一级可以只写模型、只写供应商,或者两个都写:

  • 只写模型——任何提供该模型的启用渠道都可以响应。
  • 只写供应商——由该渠道响应,请求的还是客户端发来的模型名。
  • 都写——由该渠道响应,并且请求指定的那个模型。

阶梯就是降级路径

第一行是请求实际去的地方。下面每一行,都是上一行响应不了时降级到的目标:限流、余额耗尽、Key被拒、5xx、超时,或者那个渠道根本没有这个模型。最多八级。

一条这样的规则:

  1. glm-4.5-air @ 智谱
  2. deepseek-chat

会把它覆盖的请求发给智谱的小模型;智谱被限流时,同一个请求转发给任意一个提供deepseek-chat的启用渠道。

最后一级之下,Gateway仍然会退回到"一条规则都没有时它本来会做的事",所以一条规则里的渠道即使全被删掉或停用,请求也还是能走通,而不是直接失败。

不管最终是哪个模型响应的,回给客户端的模型名都是它请求的那个。

哪条规则生效

规则按顺序读取:先看排序数字,再看模式是否更具体(精确的模型名胜过claude-*,claude-*胜过*),最后绑定了Agent的规则排在通用规则前面。第一条模式匹配上的规则决定结果,一个请求只会命中一条规则。

路由不等于授权

规则只说请求去哪里,它从不拒绝请求。Agent能用哪些模型是在权限页面设置的,而且整条阶梯在被走之前会先经过该Agent的权限过滤。降级永远不可能落到这个Agent无权使用的模型或渠道上。

看清一个请求会走到哪里

同一个页面上的**这个模型会走到哪里?**会直接给出某个模型名的完整路径,而不发真实请求:按尝试顺序列出每一步、是哪条规则选的、以及此刻哪些渠道正在冷却。第一行以下的部分,正是平时上游没出问题就谁也看不见的那部分。

事后要看真实发生的请求,去LLM记录:实际发往是真正上到线上的模型名(仅当它和请求的名字不同时才显示),命中规则是选中它的那条规则,失败切换掉的每一次尝试也会连同它请求的模型一起列出来。费用按真正计费的那个模型来算。

下一节:4.1 权限。

在GitHub上编辑
Apache Incubator

Apache Casbin (Incubating) is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.

Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.

Apache, Apache Casbin, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.

本页内容