# 供应商路由 Source: https://ofox.io/zh/docs/develop/advanced/provider-routing 同一模型通常由多个供应商承载——例如 `bytedance/seedance-2.0` 同时来自 `volcengine` 与 `byteplus`。ofox 默认自动选择供应商,`provider.type` 可将请求锁定到指定供应商。 ## 默认路由策略 未传 `provider` 字段时,ofox 在该模型当前可用的渠道之间按权重分流。单次请求最终由哪个供应商承载不可预期。 ## 指定供应商 将供应商名称填入 `type` 字段。两类模型的字段位置不同: | 模型类型 | 字段路径 | |------|------| | 文本模型 | `extra_body.provider.type` | | 视频模型 | `provider.type` | **Gemini 原生协议会忽略请求体中的 `extra_body.provider`** —— 请求正常返回,约束不生效,且没有任何报错。该协议请改用 `X-OfoxAI-Provider-Type` 请求头。 各协议的字段位置对照见 [API · 供应商路由](https://ofox.io/zh/docs/api/provider-routing)。 **文本模型** **cURL** ```bash filename="Terminal" curl https://api.ofox.io/v1/chat/completions \ -H "Authorization: Bearer $OFOX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "anthropic/claude-sonnet-5.5", "messages": [{ "role": "user", "content": "..." }], "extra_body": { "provider": { "type": "bedrock" } } }' ``` **Python** ```python filename="provider_routing.py" client.chat.completions.create( model="anthropic/claude-sonnet-5.5", messages=[{"role": "user", "content": "..."}], extra_body={"extra_body": {"provider": {"type": "bedrock"}}}, ) ``` **TypeScript** ```typescript filename="provider-routing.ts" await client.chat.completions.create({ model: 'anthropic/claude-sonnet-5.5', messages: [{ role: 'user', content: '...' }], extra_body: { provider: { type: 'bedrock' } }, } as any) ``` 使用官方 OpenAI SDK 时,`extra_body` 需作为请求体中的字面量键存在。TypeScript SDK 在参数对象中直接书写 `extra_body` 即可;Python SDK 的 `extra_body=` 参数会将其内容合并至请求体顶层,因此需额外嵌套一层,或改用请求头传递。 **视频模型** **cURL** ```bash filename="Terminal" curl https://api.ofox.io/v1/videos \ -H "Authorization: Bearer $OFOX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "bytedance/seedance-2.0-mini", "prompt": "...", "duration": 5, "provider": { "type": "byteplus" } }' ``` **Python** ```python filename="provider_routing_video.py" requests.post( "https://api.ofox.io/v1/videos", headers={"Authorization": f"Bearer {OFOX_API_KEY}"}, json={ "model": "bytedance/seedance-2.0-mini", "prompt": "...", "duration": 5, "provider": {"type": "byteplus"}, }, ) ``` **TypeScript** ```typescript filename="provider-routing-video.ts" await fetch('https://api.ofox.io/v1/videos', { method: 'POST', headers: { Authorization: `Bearer ${OFOX_API_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ model: 'bytedance/seedance-2.0-mini', prompt: '...', duration: 5, provider: { type: 'byteplus' }, }), }) ``` ## 可选供应商 ofox 当前支持的供应商如下。括号内为简写,与完整名称等效,二者均可使用: | 供应商 | 说明 | |------|------| | `openai` | [OpenAI](https://openai.com):GPT 系列官方 API | | `anthropic` | [Anthropic](https://www.anthropic.com):Claude 系列官方 API | | `gemini` | [Google AI](https://ai.google.dev):Gemini 系列官方 API | | `azure_foundry`(`foundry`) | [Azure AI Foundry](https://azure.microsoft.com/products/ai-foundry):微软云模型托管平台 | | `aws_bedrock`(`bedrock`) | [Amazon Bedrock](https://aws.amazon.com/bedrock/):AWS 云模型托管服务 | | `google_vertex`(`vertex`) | [Vertex AI](https://cloud.google.com/vertex-ai):谷歌云模型托管平台 | | `aliyun` | [阿里云百炼](https://www.aliyun.com/product/bailian):阿里云模型服务平台 | | `alicloud` | [阿里云国际站](https://www.alibabacloud.com/product/modelstudio):阿里云海外模型服务平台 | | `volcengine` | [火山引擎方舟](https://www.volcengine.com/product/ark):字节跳动国内平台 | | `byteplus` | [BytePlus](https://www.byteplus.com):字节跳动海外平台 | | `deepseek` | [DeepSeek](https://platform.deepseek.com):DeepSeek 系列官方 API | | `moonshot` | [月之暗面](https://platform.moonshot.cn):Kimi 系列官方 API | | `zhipu` | [智谱](https://open.bigmodel.cn):GLM 系列官方 API | | `zai` | [Z.ai](https://docs.z.ai):GLM 系列海外官方 API | | `minimax` | [MiniMax](https://platform.minimaxi.com):MiniMax 系列官方 API | | `grok` | [xAI](https://x.ai):Grok 系列官方 API | | `jina` | [Jina AI](https://jina.ai):向量与重排模型 | | `tencent` | [腾讯云混元](https://cloud.tencent.com/product/hunyuan):腾讯云模型服务平台 | 并非所有供应商都承载全部模型。特定模型的承载供应商及各供应商支持的协议,可在[模型广场](https://ofox.io/zh/models)的模型详情页查看;程序化获取请使用 `GET /v2/models/catalog/{provider}/{slug}?include=provider_price` 返回的 `provider_cards[]`。 ### 文本模型 文本模型分布于上表中的多数供应商。具体承载关系与协议支持情况以模型详情页为准。 ### 视频模型 `bytedance/seedance-*` 系列由以下两个供应商承载,二者内容策略存在差异: | 供应商 | 说明 | 内容策略 | |------|------|------| | `volcengine` | 火山引擎方舟,字节跳动国内平台 | 标准审核 | | `byteplus` | BytePlus,字节跳动海外平台 | 支持不适合所有受众(NSFW)的内容 | `byteplus` 允许 seedance 生成不适合所有受众(NSFW)的内容,`volcengine` 执行标准审核。**需要此类内容时必须显式指定 `provider.type: "byteplus"`**;未指定时请求可能经加权分流进入 `volcengine`,并被内容审核拒绝。 ## 常见错误 | `error.type` | 触发条件 | |------|------| | `invalid_provider_type` | 取值不在供应商枚举内:名称拼写错误,或使用了已废弃的写法。 | | `provider_type_unavailable` | 供应商存在,但未承载该模型。文本模型的错误信息中会一并列出该模型的可用供应商。 |