供应商路由
指定、排序或排除提供模型的供应商,也可以交给 OhMyGPT 自动选择。
很多模型由不止一家供应商提供,比如 zhipu/glm-5.3-flash:
curl -s https://api.ohmygpt.com/v1/models/zhipu/glm-5.3-flash | jq -r '.providers[].provider'chatglm
tencent
cloudflare你不必自己选:默认情况下,OhMyGPT 会为每个请求选一家供应商,如果这家在应答前失败,就把请求转给下一家。如果你想自己掌控,比如优先用最便宜的供应商,或固定一个备用顺序,可以在 /v1/chat/completions 或 /v1/responses 的请求体顶层加一个 provider 对象:
curl https://api.ohmygpt.com/v1/chat/completions \
-H "Authorization: Bearer $OHMYGPT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "zhipu/glm-5.3-flash",
"messages": [{"role": "user", "content": "Hi"}],
"provider": {"order": ["cloudflare"]}
}'字段
| 字段 | 类型 | 作用 |
|---|---|---|
order | string[] | 按这个顺序优先尝试这些供应商。模型的其他供应商仍作为备用。 |
only | string[] | 只使用这些供应商。 |
ignore | string[] | 不使用这些供应商。 |
sort | string | 按条件优先选择供应商:price(这个请求花费最低)、latency(首 token 最快)或 throughput(每秒 token 数最多)。 |
供应商标识取自模型的 providers[].provider 列表,拼写须完全一致。only 里至少保留一个,也不要把它们全部 ignore:一个供应商都不剩的请求会被拒绝,返回 400 invalid_parameter 并指出 provider.only 或 provider.ignore。同时设置 order 和 sort 时,order 里的供应商排在最前,其余的按 sort 排序。
想知道请求由哪家供应商处理,用它的 X-Request-ID 查询这个请求,返回的 model.provider 字段就是答案。
在 OpenAI SDK 中使用
把 provider 作为额外的请求体字段传入:
completion = client.chat.completions.create(
model="zhipu/glm-5.3-flash",
messages=[{"role": "user", "content": "Hi"}],
extra_body={"provider": {"order": ["cloudflare"]}},
)在模型 ID 中指定供应商
在模型 ID 前加上供应商标识:tencent:zhipu/glm-5.3-flash 只会把请求发给腾讯,效果等同于 "only": ["tencent"]。这个前缀在所有端点上都有效。在 /v1/messages 和 Gemini 端点上,只能用这种方式选择供应商,不要传 provider 对象。
由 OhMyGPT 路由的模型
模型列表中 managed_routing: true 的模型,由 OhMyGPT 替你选择供应商。调用时直接用原始 ID,不加前缀,也不传 provider 对象;传了的话其中的选择会被忽略。每个响应的费用按实际处理它的供应商计算。
从 OpenRouter 迁移
| OpenRouter | OhMyGPT |
|---|---|
model: "x:floor" | "provider": {"sort": "price"} |
model: "x:nitro" | "provider": {"sort": "throughput"} |
"provider": {"order": [...]} | 字段相同 |
"provider": {"only": [...]}、"ignore": [...] | 字段相同 |
models: [...] 备用模型列表 | 只选一个模型;同一模型的供应商之间会自动故障转移 |
模型 ID 严格按列表里的写法发送,不加后缀。allow_fallbacks、zdr、data_collection、max_price、quantizations 等其他 provider 字段不要传;设置了这些字段的请求会被拒绝,返回 400 unsupported_parameter。
参数值无效时,错误信息会指出要改的字段:
{
"error": {
"param": "provider.sort",
"code": "invalid_parameter",
"message": "Invalid `provider.sort`: must be one of `price`, `latency`, `throughput`, not `speed`.",
"type": "invalid_request_error"
}
}