Skip to content

路由排序的冒号语法

功能概述

AI Ping 支持通过模型名称字符串直接指定路由策略,无需修改 extra_body 配置,方便您在第三方 APP 中使用。

您可将模型写为 模型名:排序方法:参数,不同参数使用英文冒号分隔,AI Ping 会自动进行处理。

DeepSeek-R1:latency 可代表通过延时优先策略选择 DeepSeek-R1 模型的服务商,也可以用 DeepSeek-R1:throughput:latency<500,input_price<1.0 同时吞吐量优先 + 延迟限制 + 价格过滤

以 Cline 为例,您可以在模型名处进行如下设置:

modelname

即可以使用 latency 排序的 deepseek-v3.2 模型。

具体路由算法说明以 智能路由 文档为准。

字符串格式

模型名:排序方法:参数1,参数2,参数3

所有部分都是可选的,但顺序固定:

  • 模型名:LLM 模型名,如 MiniMax-M2
  • 排序方法:路由选择策略,可选项:latency, throughputinput_priceoutput_priceinput_length
  • 参数:过滤条件

排序方法设置说明

  • latency:优先选择延迟最低的提供商
  • throughput:优先选择吞吐量最高的提供商
  • input_price:优先选择输入价格最低的提供商
  • output_price:优先选择输出价格最低的提供商
  • input_length:优先选择支持最长输入的提供商

参数设置说明

提供商过滤

  • provider=华为云: 只使用指定提供商(等同于 only=华为云
  • only=硅基流动,阿里云百炼: 白名单多个提供商,用逗号或管道符分隔
  • only=硅基流动|阿里云百炼: 使用管道符分隔多个提供商
  • ignore=移动云,百度智能云: 黑名单排除提供商

示例:

DeepSeek-R1::only=硅基流动,阿里云百炼
MiniMax-M2::provider=华为云

注:由于空字符串会被自动忽略,以下写法是等价的:

  • MiniMax-M2::provider=华为云
  • MiniMax-M2:provider=华为云

性能过滤

支持范围过滤,使用比较运算符:

  • latency<500: 延迟小于 500 ms
  • latency>200: 延迟大于 200 ms
  • latency<=300: 延迟小于等于 300 ms
  • latency>=100: 延迟大于等于 100 ms
  • throughput>100: 吞吐量大于 100
  • input_price<0.5: 输入价格小于 0.5 元/M tokens
  • output_price<2.0: 输出价格小于 2.0 元/M tokens
  • input_length>8000: 支持输入长度大于 8000 tokens
  • input_length<32000: 支持输入长度小于 32000 tokens

示例:

DeepSeek-R1:latency:latency<500
MiniMax-M2:input_price:input_price<0.5,output_price<2.0

回退控制

控制当指定提供商不可用时是否允许回退到其他提供商:

  • allow_fallbacks=false: 不允许回退,只使用指定的提供商
  • allow_fallbacks=true: 允许回退到其他提供商(默认行为)
  • nofallback: 简洁写法,等同于 allow_fallbacks=false

示例:

DeepSeek-R1:only=硅基流动,阿里云百炼,allow_fallbacks=false
MiniMax-M2:only=华为云,nofallback

注意,参数之间必须用逗号 , 分隔,不能用冒号 :。

下面是正确的格式:

MiniMax-M2.1:latency:ignore=七牛云,nofallback

这是错误的格式:

MiniMax-M2.1:latency:ignore=七牛云:nofallback

完整用例示例

基础用法

1.1 仅指定模型名(使用默认策略)

MiniMax-M2

1.2 仅指定排序方法

DeepSeek-R1:latency
MiniMax-M2:input_price

1.3 仅指定参数(无排序方法)

DeepSeek-R1::only=硅基流动,阿里云百炼
MiniMax-M2::provider=华为云

排序方法完整示例

2.1 延迟优先

DeepSeek-R1:latency
MiniMax-M2:latency:latency<500

2.2 吞吐量优先

DeepSeek-R1:throughput
MiniMax-M2:throughput:throughput>100

2.3 输入价格优先

DeepSeek-R1:input_price
MiniMax-M2:input_price:input_price<0.5

2.4 输出价格优先

DeepSeek-R1:output_price
MiniMax-M2:output_price:output_price<2.0

2.5 输入长度优先

DeepSeek-R1:input_length
MiniMax-M2:input_length:input_length>8000

提供商过滤完整示例

3.1 提供商白名单

DeepSeek-R1::provider=华为云
MiniMax-M2:latency:provider=硅基流动
GPT-4:throughput:provider=阿里云百炼
DeepSeek-R1::only=硅基流动,阿里云百炼
MiniMax-M2:latency:only=华为云,硅基流动

3.2 提供商黑名单

DeepSeek-R1::ignore=移动云
MiniMax-M2:latency:ignore=移动云,百度智能云

性能过滤完整示例

4.1 延迟过滤

DeepSeek-R1:latency:latency<500
MiniMax-M2:throughput:latency<300

4.2 吞吐量过滤

DeepSeek-R1:throughput:throughput>100
MiniMax-M2:latency:throughput>150

4.3 价格过滤

DeepSeek-R1:input_price:input_price<0.5
MiniMax-M2:output_price:output_price<2.0

4.4 输入长度过滤

DeepSeek-R1:input_length:input_length>8000
MiniMax-M2:latency:input_length>16000

回退控制完整示例

5.1 不允许回退

DeepSeek-R1:only=硅基流动,阿里云百炼,allow_fallbacks=false
MiniMax-M2:only=华为云,nofallback

5.2 允许回退(显式)

DeepSeek-R1:only=硅基流动,阿里云百炼,allow_fallbacks=true
MiniMax-M2:only=华为云,allow_fallbacks=true

5.3 默认行为(未指定,允许回退)

DeepSeek-R1:only=硅基流动,阿里云百炼
MiniMax-M2:latency:only=华为云

复杂组合示例

6.1 排序 + 提供商过滤 + 性能过滤

DeepSeek-R1:latency:only=硅基流动,阿里云百炼,latency<500,input_price<1.0
MiniMax-M2:throughput:only=华为云,throughput>100,latency<300

6.2 排序 + 提供商过滤 + 性能过滤 + 回退控制

DeepSeek-R1:latency:only=硅基流动,阿里云百炼,latency<500,input_price<1.0,allow_fallbacks=false
MiniMax-M2:throughput:only=华为云,throughput>100,latency<300,nofallback

6.3 黑名单 + 性能过滤

DeepSeek-R1:latency:ignore=移动云,百度智能云,latency<500
MiniMax-M2:throughput:ignore=移动云,throughput>100,latency<300

6.4 多维度性能过滤

DeepSeek-R1:latency:latency<500,throughput>100,input_price<1.0,output_price<2.0
MiniMax-M2:throughput:latency<300,throughput>150,input_price<0.5,input_length>8000

6.5 完整配置示例

DeepSeek-R1:latency:only=硅基流动,阿里云百炼,ignore=移动云,latency<500,throughput>100,input_price<1.0,output_price<2.0,input_length>8000,allow_fallbacks=false

参数分隔说明

  • 模型名、排序方法、参数之间:使用英文冒号 : 分隔
  • 多个参数之间:使用英文逗号 , 分隔
  • 多个提供商名称之间:可以使用逗号 , 或管道符 | 分隔

注意事项

  1. 参数顺序:参数之间用逗号分隔,顺序不影响结果
  2. 大小写:排序方法、参数名不区分大小写,但建议使用小写
  3. 默认行为:未指定 allow_fallbacks 时,默认允许回退到其他提供商
  4. 优先级:如果请求中已存在 extra_body.provider 配置,模型字符串中的配置将被忽略
  5. 兼容性:所有接口(chat、embedding、rerank、image)都支持此语法
  6. 等价写法Model::provider=XModel:provider=X 是等价的(空排序方法会被忽略)

解析算法原理

AI Ping 的模型字符串解析器采用从右到左的解析策略,这是为了支持模型名本身可能包含冒号的情况。解析步骤如下:

  1. 分割字符串:按冒号 : 分割整个字符串
  2. 从右到左识别:
    • 最后一部分:检查是否包含 =<>, 或已知关键字(如 nofallback),如果是,则识别为参数部分
    • 倒数第二部分:检查是否为有效的排序方法(latencythroughput 等),如果是,则识别为排序方法
    • 剩余部分:合并为模型名

由于空字符串会被自动忽略,以下写法是等价的:

  • MiniMax-M2::provider=华为云
  • MiniMax-M2:provider=华为云

两者都会解析为:模型名 MiniMax-M2,参数 provider=华为云(无排序方法)。

参数识别规则

参数部分通过以下特征识别:

  1. 键值对格式:包含 = 符号,如 provider=华为云allow_fallbacks=false
  2. 范围过滤格式:包含 <> 符号,如 latency<500throughput>100
  3. 列表格式:包含 , 符号,如 only=硅基流动,阿里云百炼
  4. 关键字格式:已知关键字,如 nofallback

参数解析规则

参数之间使用逗号 , 分隔,解析器会:

  1. 合并连续的值only=A,B 会被识别为一个参数,而不是两个
  2. 识别关键字nofallback 会被识别为独立参数,不会与前面的值合并
  3. 支持多种分隔符:提供商名称可以使用逗号 , 或管道符 | 分隔

示例:

输入: "Model:latency:only=硅基流动,阿里云百炼,nofallback"

参数部分: "only=硅基流动,阿里云百炼,nofallback"
解析结果:
- only: ["硅基流动", "阿里云百炼"]  (nofallback 被识别为独立参数)
- allow_fallbacks: False