provider 对象,自定义路由决策方式。
provider 对象
在任何 /v1/chat/completions 请求中加入 provider 对象,可覆盖路由默认值:
完整字段参考
默认策略:基于成本的负载均衡
默认情况下,ARouter 在健康的提供商之间负载均衡请求,优先考虑成本。算法如下:- 排除过去30秒内有严重中断的提供商
- 在稳定的提供商中,按价格倒数的平方加权选择
- 将其余提供商作为自动回退
- 提供商 A 被选中的可能性是提供商 C 的9倍(倒数平方加权)
- 若提供商 A 失败,则尝试提供商 C
- 提供商 B(近期降级)最后尝试
sort 或 order,负载均衡将被禁用,提供商按严格顺序尝试。
提供商排序
使用sort 字段明确优先选择某个提供商属性。负载均衡将被禁用,提供商按顺序尝试。
可用排序值:
"price"— 优先最低 token 成本"throughput"— 优先最高 tokens/秒"latency"— 优先最低首 token 延迟
- TypeScript
- Python
- cURL
:nitro 和 :floor 快捷方式
在模型 slug 后附加后缀作为排序的简写:
高级排序与 Partition
使用候选模型列表(models[])时,sort 字段可以是带有 partition 选项的对象,以控制端点如何跨模型排序。
默认情况下(
partition: "model"),端点按模型分组——第一个模型的端点始终在第二个模型之前尝试。设置 partition: "none" 可取消此分组,允许跨所有候选模型全局排序。
用例一:跨多个模型路由到最高吞吐量
当您有多个可接受的模型并希望使用当前最快的那个时:- TypeScript
- Python
- cURL
用例二:满足性能要求的最廉价模型
将partition: "none" 与性能阈值结合使用,找到仍满足 SLA 的最低成本选项:
- TypeScript
- Python
- cURL
性能阈值
设置最低吞吐量或最大延迟偏好以过滤提供商。不满足阈值的提供商会被降低优先级(移至末尾),而非完全排除。百分位数工作原理
ARouter 在滚动5分钟窗口内跟踪提供商性能:
更高的百分位(p90/p99)可对最差情况性能提供更高置信度。所有指定的百分位截止值都必须满足,提供商才能进入优选组。
preferred_min_throughput 和 preferred_max_latency 是软偏好——它们不会阻止请求被处理。这与 max_price 不同,后者是硬限制。指定提供商顺序
使用order 指定要尝试的提供商及其顺序。设置 order 后负载均衡将被禁用。
- TypeScript
- Python
- cURL
仅允许特定提供商
使用only 将路由限制为特定提供商集合:
忽略提供商
使用ignore 跳过此请求的特定提供商:
禁用回退
默认情况下,若主要提供商不可用,ARouter 会回退到备用提供商。设置allow_fallbacks: false 可要求使用精确的提供商:
503 错误,而非路由到其他地方。
要求参数支持
设置require_parameters: true,只路由到支持请求中所有参数的提供商。默认情况下,ARouter 可能会路由到忽略不支持参数的提供商。
量化过滤
按提供商提供的模型量化级别过滤。当您需要特定精度/性能权衡时非常有用:"fp32"、"fp16"、"bf16"、"int8"、"int4"。
数据收集策略
控制 ARouter 是否路由到可能存储您请求数据的提供商:零数据保留(ZDR)
为最大程度保护隐私,将路由限制为具有零数据保留保证的提供商:最高价格
设置每 token 愿意支付的硬性上限。若没有提供商满足价格要求,请求将失败而非路由到更贵的提供商:与性能阈值不同,
max_price 是硬性限制。若没有提供商满足价格要求,请求将返回错误。提供商健康状态与可用性
ARouter 使用熔断机制持续跟踪提供商健康状态:
这是完全透明的——您的应用程序无需实现提供商级别的重试逻辑。
通过模型前缀指定提供商
控制哪个提供商处理请求的主要方式是通过provider/model 格式:
原生提供商代理
如需完全控制,使用提供商代理端点/{provider}/{path} 完全绕过 ARouter 的模型路由层:
支持的提供商
完整功能列表请参阅提供商。