提供商路由
OpenRoute 将请求路由到您模型的最佳可用提供商。默认情况下,请求在顶级提供商之间进行负载均衡以最大化正常运行时间。
您可以使用请求体中的 provider
对象自定义请求的路由方式,适用于聊天完成和完成。
有关 API 中使用的有效提供商名称的完整列表,请参阅完整的提供商模式。
provider
对象可以包含以下字段:
字段 | 类型 | 默认值 | 描述 |
---|---|---|---|
order | string[] | - | 按顺序尝试的提供商 slug 列表(例如 ["anthropic", "openai"] )。了解更多 |
allow_fallbacks | boolean | true | 当主要提供商不可用时是否允许备用提供商。了解更多 |
require_parameters | boolean | false | 仅使用支持您请求中所有参数的提供商。了解更多 |
data_collection | "allow" | "deny" | "allow" | 控制是否使用可能存储数据的提供商。了解更多 |
zdr | boolean | - | 限制路由到仅 ZDR(零数据保留)端点。了解更多 |
only | string[] | - | 此请求允许的提供商 slug 列表。了解更多 |
ignore | string[] | - | 此请求要跳过的提供商 slug 列表。了解更多 |
quantizations | string[] | - | 要过滤的量化级别列表(例如 ["int4", "int8"] )。了解更多 |
sort | string | - | 按价格或吞吐量对提供商进行排序(例如 "price" 或 "throughput" )。了解更多 |
max_price | object | - | 您希望为此请求支付的最大价格。了解更多 |
基于价格的负载均衡(默认策略)
对于您请求中的每个模型,OpenRoute 的默认行为是在提供商之间负载均衡请求,优先考虑价格。
如果您对吞吐量比价格更敏感,可以使用 sort
字段明确优先考虑吞吐量。
当您发送带有 tools
或 tool_choice
的请求时,OpenRoute 只会路由到支持工具使用的提供商。同样,如果您设置了 max_tokens
,那么 OpenRoute 只会路由到支持该长度响应的提供商。
以下是 OpenRoute 的默认负载均衡策略:
- 优先考虑在过去 30 秒内没有出现重大中断的提供商。
- 对于稳定的提供商,查看最低成本的候选者,并按价格的平方倒数加权选择一个(见下面的示例)。
- 将剩余的提供商用作备用。
负载均衡示例
如果提供商 A 每百万 token 花费 1 美元,提供商 B 花费 2 美元,提供商 C 花费 3 美元,而提供商 B 最近出现了一些中断。
- 您的请求被路由到提供商 A。提供商 A 比提供商 C 更可能首先被路由到提供商 A,因为 (价格的平方倒数)。
- 如果提供商 A 失败,那么提供商 C 将作为下一个尝试。
- 如果提供商 C 也失败,提供商 B 将作为最后尝试。
如果您在提供商首选项中设置了 sort
或 order
,负载均衡将被禁用。
提供商排序
如上所述,OpenRoute 基于价格进行负载均衡,同时考虑正常运行时间。
如果您想_明确地_优先考虑特定的提供商属性,可以在 provider
首选项中包含 sort
字段。负载均衡将被禁用,路由器将按顺序尝试提供商。
三个排序选项是:
"price"
:优先考虑最低价格"throughput"
:优先考虑最高吞吐量"latency"
:优先考虑最低延迟
fetch('https://www.openroute.cn/api/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer <OPENROUTE_API_KEY>',
'HTTP-Referer': '<YOUR_SITE_URL>', // Optional. Site URL for rankings on openroute.cn.
'X-Title': '<YOUR_SITE_NAME>', // Optional. Site title for rankings on openroute.cn.
'Content-Type': 'application/json',
},
body: JSON.stringify({
'model': 'meta-llama/llama-3.1-70b-instruct',
'messages': [
{
'role': 'user',
'content': 'Hello'
}
],
'provider': {
'sort': 'throughput'
}
}),
});
``
要_始终_优先考虑低价格,而不应用任何负载均衡,请将 `sort` 设置为 `"price"`。
要_始终_优先考虑低延迟,而不应用任何负载均衡,请将 `sort` 设置为 `"latency"`。
## Nitro 快捷方式
您可以在任何模型 slug 后附加 `:nitro` 作为按吞吐量排序的快捷方式。这完全等同于将 `provider.sort` 设置为 `"throughput"`。
```typescript
fetch('https://www.openroute.cn/api/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer <OPENROUTE_API_KEY>',
'HTTP-Referer': '<YOUR_SITE_URL>', // Optional. Site URL for rankings on openroute.cn.
'X-Title': '<YOUR_SITE_NAME>', // Optional. Site title for rankings on openroute.cn.
'Content-Type': 'application/json',
},
body: JSON.stringify({
'model': 'meta-llama/llama-3.1-70b-instruct:nitro',
'messages': [
{
'role': 'user',
'content': 'Hello'
}
]
}),
});
底价快捷方式
您可以在任何模型 slug 后附加 :floor
作为按价格排序的快捷方式。这完全等同于将 provider.sort
设置为 "price"
。
fetch('https://www.openroute.cn/api/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer <OPENROUTE_API_KEY>',
'HTTP-Referer': '<YOUR_SITE_URL>', // Optional. Site URL for rankings on openroute.cn.
'X-Title': '<YOUR_SITE_NAME>', // Optional. Site title for rankings on openroute.cn.
'Content-Type': 'application/json',
},
body: JSON.stringify({
'model': 'meta-llama/llama-3.1-70b-instruct:floor',
'messages': [
{
'role': 'user',
'content': 'Hello'
}
]
}),
});
排序特定提供商
您可以使用 order
字段设置 OpenRoute 将为您的请求优先考虑的提供商。
字段 | 类型 | 默认值 | 描述 |
---|---|---|---|
order | string[] | - | 按顺序尝试的提供商 slug 列表(例如 ["anthropic", "openai"] )。 |
路由器将按此列表中的顺序优先考虑提供商,用于您使用的模型。如果您不设置此字段,路由器将在顶级提供商之间负载均衡以最大化正常运行时间。
您可以使用模型页面上提供商名称旁边的复制按钮来获取确切的提供商 slug,包括任何变体如 "/turbo"。有关详细信息,请参阅定位特定提供商端点。
OpenRoute 将一次尝试一个,如果都不运行,则继续使用其他提供商。如果您不想允许任何其他提供商,您也应该禁用备用。
示例:指定带备用的提供商
此示例跳过 OpenAI(它不托管 Mixtral),尝试 Together,然后回退到 OpenRoute 上的正常提供商列表:
fetch('https://www.openroute.cn/api/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer <OPENROUTE_API_KEY>',
'HTTP-Referer': '<YOUR_SITE_URL>', // Optional. Site URL for rankings on openroute.cn.
'X-Title': '<YOUR_SITE_NAME>', // Optional. Site title for rankings on openroute.cn.
'Content-Type': 'application/json',
},
body: JSON.stringify({
'model': 'mistralai/mixtral-8x7b-instruct',
'messages': [{ 'role': 'user', 'content': 'Hello' }],
'provider': {
'order': ['openai', 'together'],
},
}),
});
示例:指定禁用备用的提供商
这是一个将 allow_fallbacks
设置为 false
的示例,跳过 OpenAI(它不托管 Mixtral),尝试 Together,如果 Together 失败则失败:
fetch('https://www.openroute.cn/api/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer <OPENROUTE_API_KEY>',
'HTTP-Referer': '<YOUR_SITE_URL>', // Optional. Site URL for rankings on openroute.cn.
'X-Title': '<YOUR_SITE_NAME>', // Optional. Site title for rankings on openroute.cn.
'Content-Type': 'application/json',
},
body: JSON.stringify({
'model': 'mistralai/mixtral-8x7b-instruct',
'messages': [{ 'role': 'user', 'content': 'Hello' }],
'provider': {
'order': ['openai', 'together'],
'allow_fallbacks': false,
},
}),
});
定位特定提供商端点
OpenRoute 上的每个提供商可能为同一模型托管多个端点,例如默认端点和专门的 "turbo" 端点。要定位特定端点,您可以使用模型详情页面上提供商名称旁边的复制按钮来获取确切的提供商 slug。
例如,DeepInfra 通过多个端点提供 DeepSeek R1:
- 默认端点,slug 为
deepinfra
- Turbo 端点,slug 为
deepinfra/turbo
通过复制确切的提供商 slug 并在您请求的 order
数组中使用它,您可以确保您的请求路由到您想要的特定端点:
fetch('https://www.openroute.cn/api/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer <OPENROUTE_API_KEY>',
'HTTP-Referer': '<YOUR_SITE_URL>', // Optional. Site URL for rankings on openroute.cn.
'X-Title': '<YOUR_SITE_NAME>', // Optional. Site title for rankings on openroute.cn.
'Content-Type': 'application/json',
},
body: JSON.stringify({
'model': 'deepseek/deepseek-r1',
'messages': [{ 'role': 'user', 'content': 'Hello' }],
'provider': {
'order': ['deepinfra/turbo'],
'allow_fallbacks': false,
},
}),
});
当您想一致地使用特定提供商的模型特定变体时,这种方法特别有用。
要求提供商支持所有参数
您可以使用 require_parameters
字段将请求限制为仅支持您请求中所有参数的提供商。
字段 | 类型 | 默认值 | 描述 |
---|---|---|---|
require_parameters | boolean | false | 仅使用支持您请求中所有参数的提供商。 |
使用默认路由策略,不支持您请求中指定的所有LLM 参数的提供商仍然可以接收请求,但会忽略未知参数。当您将 require_parameters
设置为 true
时,请求甚至不会路由到该提供商。
示例:排除不支持 JSON 格式化的提供商
例如,仅使用支持 JSON 格式化的提供商:
fetch('https://www.openroute.cn/api/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer <OPENROUTE_API_KEY>',
'HTTP-Referer': '<YOUR_SITE_URL>', // Optional. Site URL for rankings on openroute.cn.
'X-Title': '<YOUR_SITE_NAME>', // Optional. Site title for rankings on openroute.cn.
'Content-Type': 'application/json',
},
body: JSON.stringify({
'messages': [{ 'role': 'user', 'content': 'Hello' }],
'provider': {
'require_parameters': true,
},
'response_format': { 'type': 'json_object' },
}),
});
要求提供商遵守数据政策
您可以使用 data_collection
字段将请求限制为仅遵守您数据政策的提供商。
字段 | 类型 | 默认值 | 描述 |
---|---|---|---|
data_collection | "allow" | "deny" | "allow" | 控制是否使用可能存储数据的提供商。 |
allow
:(默认)允许非临时存储用户数据并可能对其进行训练的提供商deny
:仅使用不收集用户数据的提供商
一些模型提供商可能会记录提示,因此我们在模型页面上用数据政策标签显示它们。这不是第三方数据政策的权威来源,但代表我们的最佳知识。
账户范围数据政策过滤
这也作为您的隐私设置中的账户范围设置提供。您可以禁用为训练存储输入的第三方模型提供商。
示例:排除不遵守数据政策的提供商
要排除不遵守您数据政策的提供商,请将 data_collection
设置为 deny
:
fetch('https://www.openroute.cn/api/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer <OPENROUTE_API_KEY>',
'HTTP-Referer': '<YOUR_SITE_URL>', // Optional. Site URL for rankings on openroute.cn.
'X-Title': '<YOUR_SITE_NAME>', // Optional. Site title for rankings on openroute.cn.
'Content-Type': 'application/json',
},
body: JSON.stringify({
'messages': [
{
'role': 'user',
'content': 'Hello'
}
],
'provider': {
'data_collection': 'deny'
}
}),
});
零数据保留执行
您可以使用 zdr
参数在每次请求的基础上执行零数据保留(ZDR),确保您的请求仅路由到不保留提示的端点。
字段 | 类型 | 默认值 | 描述 |
---|---|---|---|
zdr | boolean | - | 限制路由到仅 ZDR(零数据保留)端点。 |
当 zdr
设置为 true
时,请求将仅路由到具有零数据保留政策的端点。当 zdr
为 false
或未提供时,它对路由没有影响。
账户范围 ZDR 设置
这也作为您的隐私设置中的账户范围设置提供。每次请求的 zdr
参数与您的账户范围 ZDR 设置作为"或"操作 - 如果任一启用,将应用 ZDR 执行。请求级别参数只能确保 ZDR 启用,不能覆盖账户范围执行。
示例:为特定请求执行 ZDR
要确保请求仅使用 ZDR 端点,请将 zdr
设置为 true
:
fetch('https://www.openroute.cn/api/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer <OPENROUTE_API_KEY>',
'HTTP-Referer': '<YOUR_SITE_URL>', // Optional. Site URL for rankings on openroute.cn.
'X-Title': '<YOUR_SITE_NAME>', // Optional. Site title for rankings on openroute.cn.
'Content-Type': 'application/json',
},
body: JSON.stringify({
'model': 'gpt-4',
'messages': [
{
'role': 'user',
'content': 'Hello'
}
],
'provider': {
'zdr': true
}
}),
});
这对于不想全局执行 ZDR 但需要确保特定请求仅路由到 ZDR 端点的客户很有用。
禁用备用
要保证您的请求仅由顶级(最低成本)提供商提供服务,您可以禁用备用。
这与排序特定提供商中的 order
字段结合使用,以将 OpenRoute 将优先考虑的提供商限制为您选择的列表。
fetch('https://www.openroute.cn/api/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer <OPENROUTE_API_KEY>',
'HTTP-Referer': '<YOUR_SITE_URL>', // Optional. Site URL for rankings on openroute.cn.
'X-Title': '<YOUR_SITE_NAME>', // Optional. Site title for rankings on openroute.cn.
'Content-Type': 'application/json',
},
body: JSON.stringify({
'messages': [
{
'role': 'user',
'content': 'Hello'
}
],
'provider': {
'allow_fallbacks': false
}
}),
});
仅允许特定提供商
您可以通过在 provider
对象中设置 only
字段来仅允许特定提供商进行请求。
字段 | 类型 | 默认值 | 描述 |
---|---|---|---|
only | string[] | - | 此请求允许的提供商 slug 列表。 |
仅允许某些提供商可能会显著减少备用选项并限制请求恢复。
账户范围允许的提供商
您可以通过配置您的首选项为所有账户请求允许提供商。此配置适用于所有 API 请求和聊天室消息。
请注意,当您为特定请求允许提供商时,允许的提供商列表将与您的账户范围允许的提供商合并。
示例:为调用 GPT-4 Omni 的请求允许 Azure
这是一个仅使用 Azure 调用 GPT-4 Omni 的请求示例:
fetch('https://www.openroute.cn/api/v1/chat/completions', {
method: 'POST',
headers: {
'Authorization': 'Bearer <OPENROUTE_API_KEY>',
'HTTP-Referer': '<YOUR_SITE_URL>', // Optional. Site URL for rankings on openroute.cn.
'X-Title': '<YOUR_SITE_NAME>', // Optional. Site title for rankings on openroute.cn.
'Content-Type': 'application/json',
},
body: JSON.stringify({
'model': 'meta-llama/llama-3.1-8b-instruct',
'messages': [
{
'role': 'user',
'content': 'Hello'
}
],
'provider': {
'quantizations': [
'fp8'
]
}
}),
});
忽略提供商
您可以通过在 provider
对象中设置 ignore
字段来忽略请求的提供商。
字段 | 类型 | 默认值 | 描述 |
---|---|---|---|
ignore | string[] | - | 此请求要跳过的提供商 slug 列表。 |
忽略多个提供商可能会显著减少备用选项并限制请求恢复。
账户范围忽略的提供商
您可以通过配置您的首选项为所有账户请求忽略提供商。此配置适用于所有 API 请求和聊天室消息。
请注意,当您为特定请求忽略提供商时,忽略的提供商列表将与您的账户范围忽略的提供商合并。
示例:为调用 Llama 3.3 70b 的请求忽略 DeepInfra
这是一个为调用 Llama 3.3 70b 的请求忽略 DeepInfra 的示例:
量化
量化减少模型大小和计算要求,同时旨在保持性能。今天大多数 LLM 使用 FP16 或 BF16 进行训练和推理,与 FP32 相比将内存要求减半。一些优化使用 FP8 或量化进一步减少大小(例如,INT8、INT4)。
字段 | 类型 | 默认值 | 描述 |
---|---|---|---|
quantizations | string[] | - | 要过滤的量化级别列表(例如 ["int4", "int8"] )。了解更多 |
量化模型可能对某些提示表现出性能下降,这取决于使用的方法。
提供商可以支持开放权重模型的各种量化级别。
量化级别
默认情况下,请求在所有可用提供商之间负载均衡,按价格排序。要按量化级别过滤提供商,请在 provider
参数中指定 quantizations
字段,使用以下值:
int4
:整数(4 位)int8
:整数(8 位)fp4
:浮点(4 位)fp6
:浮点(6 位)fp8
:浮点(8 位)fp16
:浮点(16 位)bf16
:脑浮点(16 位)fp32
:浮点(32 位)unknown
:未知
示例:请求 FP8 量化
这是一个仅使用支持 FP8 量化的提供商的示例:
最大价格
要按价格过滤提供商,请在 provider
参数中指定 max_price
字段,使用 JSON 对象指定您将接受的最高提供商定价。
例如,值 {"prompt": 1, "completion": 2}
将路由到任何价格 <= $1/m
提示 token 和 <= $2/m
完成 token 或更少的提供商。
一些提供商支持每次请求定价,在这种情况下,您可以使用 max_price 的 request
属性。最后,image
也可用,它指定您将接受的每张图像的最大价格。
实际上,此字段通常与提供商 sort
结合使用,例如,"使用吞吐量最高的提供商,只要它不超过 $x/m
token 的成本。"
服务条款
您可以在下面查看每个提供商的服务条款。您不得违反为 OpenRoute 上的模型提供支持的第三方提供商的服务条款或政策。
提供商首选项的 JSON 模式
有关完整选项列表,请参阅此 JSON 模式:
Last updated on