跳到主要内容

层级模型映射

这是本站与普通「固定映射」中转最大的差别:按档位匹配,而不是按完整模型名匹配。

为什么要层级匹配​

Claude Code 等客户端会发送带版本号的模型名,例如:

···5-20250929

如果只能精确匹配,上游每发一个新版本,映射就失效一次。层级匹配只配 「档位 → 目标模型」,新版本自动落到同一档位。

档位​

档位含义
fable最新、最具体的档位(最高优先级)
opus高档
sonnet中档
haiku低档 / 快档
default兜底,永远最后

优先级:fable > opus > sonnet > haiku > default。fable 未配置时降到 opus。

匹配规则​

  1. 精确匹配优先:渠道的 model_mapping 里写死的模型名先命中。
  2. 层级匹配只作 fallback:精确匹配不到时才走档位。
  3. 档位用包含匹配,不要求前缀——···4-5-sonnet-20250101 中间的 sonnet 也能命中。
  4. 按配置顺序,先命中先用;同档位多条规则取首条。

:::warning 为什么必须是包含匹配 档位词经常出现在模型名中间(如 claude-sonnet-4)。若用前缀匹配, 这类名字永远匹配不上,映射会静默失效。 :::

配置示例​

{"tier": "opus", "target": "MiniMax-M2.5"}
{"tier": "sonnet", "target": "MiniMax-M2.5"}
{"tier": "haiku", "target": "MiniMax-M2.5"}

也支持 {model} 占位符做「同族换版本」:

{"tier": "opus", "target": "deepseek-v4-opus-{model}"}

{model} 会被替换成原始模型名(去掉匹配到的档位词)。

存在哪里​

在渠道的 settings 字段(ChannelOtherSettings),键名为 model_tier_mapping。

:::danger 三个部署坑

  1. 必须是 JSON 字符串,不能传对象——后端字段是 string, 传对象会报 cannot unmarshal object into Go struct field。
  2. UpdateChannel 拒绝带 status 字段的请求,PUT 前要 pop 掉。
  3. 渠道有 60 秒以上内存缓存,改完要等 SYNC_FREQUENCY 或轮询数据库确认落库。 :::

对你意味着什么​

  • 你按档位付费,实际承载模型可能不同 → 见 模型说明
  • 上游换承载模型时,你的代码不用改
  • 想确认某档位实际跑什么,看控制台「模型说明」页