Appearance
OpenRouter 默认按价格加权负载均衡请求到多个提供商。通过请求体中的 provider 对象,可以精细控制路由行为:指定提供商顺序(order)、禁用 fallback(allow_fallbacks)、按吞吐量或延迟排序(sort)、设置性能阈值(preferred_min_throughput/preferred_max_latency)、控制数据收集策略(data_collection)等。还支持 :nitro(优先吞吐量)和 :floor(优先低价)快捷后缀。
OpenRouter 提供商选择与路由
OpenRouter 默认将请求负载均衡到各提供商,优先考虑价格。通过 provider 参数可以精细控制路由行为。
provider 对象字段
typescript
provider: {
order?: string[]; // 按顺序尝试的提供商(如 ["anthropic", "openai"])
allow_fallbacks?: boolean; // 是否允许 fallback(默认 true)
require_parameters?: boolean; // 只用支持所有参数的提供商(默认 false)
data_collection?: "allow" | "deny"; // 数据收集策略(默认 "allow")
zdr?: boolean; // 仅路由到 ZDR 端点
only?: string[]; // 只允许指定提供商
ignore?: string[]; // 排除指定提供商
quantizations?: string[]; // 量化级别过滤(如 ["int4", "int8"])
sort?: "price" | "throughput" | "latency" | {by: string, partition: string};
preferred_min_throughput?: number | object; // 最低吞吐量阈值(token/s)
preferred_max_latency?: number | object; // 最大延迟阈值(秒)
max_price?: object; // 最高价格限制
}默认负载均衡策略
OpenRouter 默认按以下逻辑路由:
- 优先选择过去 30 秒内没有明显故障的提供商
- 从稳定的提供商中,按价格平方的倒数加权随机选择(越便宜概率越高)
- 其余提供商作为 fallback
示例:提供商 A $1/M tokens,B $2,C $3,B 最近有故障。A 被选中的概率是 C 的 9 倍(1/1² vs 1/3²)。
如果设置了 sort 或 order,负载均衡将被禁用。
按属性排序
typescript
const completion = await openRouter.chat.send({
model: 'meta-llama/llama-3.3-70b-instruct',
messages: [{ role: 'user', content: 'Hello' }],
provider: {
sort: 'throughput', // 优先吞吐量;也可以是 "price" 或 "latency"
},
});快捷后缀
| 后缀 | 等效配置 | 说明 |
|---|---|---|
:nitro | sort: "throughput" | 优先最高吞吐量 |
:floor | sort: "price" | 优先最低价格 |
typescript
// 使用 :nitro 后缀
model: 'meta-llama/llama-3.3-70b-instruct:nitro'指定提供商顺序
typescript
provider: {
order: ['anthropic', 'openai'], // 先试 Anthropic,失败再试 OpenAI
}禁用 Fallback
typescript
provider: {
order: ['anthropic'],
allow_fallbacks: false, // 只用 Anthropic,失败直接报错
}只允许 / 排除特定提供商
typescript
// 只允许特定提供商
provider: { only: ['openai', 'azure'] }
// 排除特定提供商
provider: { ignore: ['together', 'deepinfra'] }要求支持所有参数(Beta)
typescript
provider: {
require_parameters: true, // 只路由到支持你所有参数的提供商
}性能阈值(软约束)
性能阈值是软约束:不满足的提供商降到优先级末尾,但仍会作为 fallback。只有 max_price 是硬约束。
typescript
provider: {
sort: { by: 'price', partition: 'none' }, // 跨多个模型全局排序
preferredMinThroughput: { p90: 50 }, // p90 吞吐量 ≥50 tokens/s
preferredMaxLatency: { p90: 3 }, // p90 延迟 ≤3 秒
}支持 p50/p75/p90/p99 四个百分位,多条件同时满足才归为"偏好"组。
数据隐私策略
typescript
// 拒绝可能存储数据的提供商
provider: { data_collection: 'deny' }
// 仅路由到 ZDR(零数据保留)端点
provider: { zdr: true }量化级别过滤
typescript
provider: {
quantizations: ['int8', 'fp8'], // 只用特定量化级别的端点
}欧盟数据驻留(企业版)
OpenRouter 为企业客户支持 EU 区域内路由,所有 prompt 和 completion 在 EU 内处理。联系企业团队开通。
常见问题
Q: order 和 only 有什么区别?
A: order 指定尝试顺序(仍可能 fallback 到其他提供商),only 则严格限制只用列表中的提供商,不会路由到其他地方。
Q: require_parameters: true 会影响可用模型数量吗?
A: 会。设置后只有明确支持你所有参数(如 tools、structured_outputs)的提供商才会被选中,可能减少可用提供商,但能确保参数行为一致。
Q: 性能阈值不满足时会怎样?
A: 满足阈值的提供商优先,不满足的降至末尾但不排除。这样即使没有满足要求的提供商,请求仍会继续执行,不会因为没有可用提供商而失败。