渠道路由策略
当用户调用
POST /v1/chat/completions时,系统需要在多条「能调这个模型」的渠道里选一条。 这一页解释它按什么规则选、为什么有些渠道永远不会被选中、怎么调试。
选路四步走
系统按以下顺序决定用哪条渠道:
- 过滤:只保留「启用中 + 模型在白名单 + 用户组在白名单」的渠道
- 健康检查:剔除自动禁用 / 冷却中 / 并发已满 / RPM 已满的渠道
- 打分:根据权重 + 优先级 + 优先级 / fallback 偏好综合打分
- 决定:选最高分;若分数相同则随机挑
过滤规则的含义
| 过滤条件 | 在哪里设置 | 不通过会发生什么 |
|---|---|---|
| 状态必须为「启用」 | 渠道详情页开关 | 该渠道直接被跳过 |
用户请求的模型在 models 白名单 | 渠道详情页 | 不勾的模型永远不会被路由到该渠道 |
用户的用户组在 group 白名单 | 渠道详情页 | 该渠道对该用户隐藏 |
| 渠道未处于「自动禁用 / 冷却中」 | 自动状态 | 系统层面自动跳过 |
权重 / 优先级 / fallback
这三者共同决定打分:
- 权重
weight:越大越容易被选中。建议便宜快稳的渠道设高 - 优先级
priority:等级越大越优先(如 10 优先于 5) - 是否纯 fallback
is_fallback:勾上后该渠道只在所有非 fallback 渠道都失败时才被选中
调权重 / 优先级即可在不打乱其他渠道的前提下微调路由偏好。
健康检查(自动状态)
系统会自动维护每条渠道的健康状态:
- 并发:当前并发数 >=
max_concurrency时拒绝新请求 - RPM:最近 60s 请求数 >=
rpm时拒绝 - 冷却:某条渠道连续失败 N 次后进入冷却,几分钟后再尝试
- 自动禁用:连续严重失败后整条渠道被自动禁用
这些都不需要你手动配。如果你发现某渠道被频繁自动禁用,去后台「渠道」详情看 日志 的 error 字段。
调试:为什么这条渠道没被选中?
- 检查过滤:在 渠道测试 用同一个模型 + 用户组测试,能通就说明过滤 OK
- 检查权重:把候选渠道的权重都列出来,高的应该被选中
- 看自动状态:渠道详情页有「自动禁用 / 冷却 / 并发满」的红字
- 看路由日志:调用日志里
channel字段就是最终命中的渠道 ID
高级:模型名映射
有的中转站不支持原生的模型名(比如 gpt-4o → 中转站叫 gpt-4o-2024)。在渠道详情页填 model_mapping:
json
{ "gpt-4o": "gpt-4o-2024" }调用方发 gpt-4o 时,系统会转发为 gpt-4o-2024 给该渠道。