Skip to content

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 默认按以下逻辑路由:

  1. 优先选择过去 30 秒内没有明显故障的提供商
  2. 从稳定的提供商中,按价格平方的倒数加权随机选择(越便宜概率越高)
  3. 其余提供商作为 fallback

示例:提供商 A $1/M tokens,B $2,C $3,B 最近有故障。A 被选中的概率是 C 的 9 倍(1/1² vs 1/3²)。

如果设置了 sortorder,负载均衡将被禁用。

按属性排序

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"
  },
});

快捷后缀

后缀等效配置说明
:nitrosort: "throughput"优先最高吞吐量
:floorsort: "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: orderonly 有什么区别?

A: order 指定尝试顺序(仍可能 fallback 到其他提供商),only 则严格限制只用列表中的提供商,不会路由到其他地方。

Q: require_parameters: true 会影响可用模型数量吗?

A: 会。设置后只有明确支持你所有参数(如 toolsstructured_outputs)的提供商才会被选中,可能减少可用提供商,但能确保参数行为一致。

Q: 性能阈值不满足时会怎样?

A: 满足阈值的提供商优先,不满足的降至末尾但不排除。这样即使没有满足要求的提供商,请求仍会继续执行,不会因为没有可用提供商而失败。