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 的模型路由層:
支援的提供商
完整功能清單請參閱提供商。