Usamos cookies. Cookies e o armazenamento do navegador mantêm você conectado e lembram suas preferências. Com sua permissão, também medimos como o site é usado. Você pode a qualquer momento. Veja nossa política de cookies.

Roteamento de provedores e fallbacks

Endpoints

Roteamento de provedores e fallbacks

Controle qual provedor atende cada requisição com o objeto provider (order, only, sort, data_collection) e use models para fallback entre modelos diferentes.

Teste no playground

Muitos modelos são servidos por vários provedores, cada um com seu próprio preço, velocidade e política de dados. Por padrão, as requisições são distribuídas entre os provedores por preço e disponibilidade, e recorrem a outro provedor quando um falha. Use o objeto provider para mudar esse comportamento e models para fazer fallback entre modelos diferentes.

O objeto provider

CampoTipoDescrição
orderstring[]Provedores a tentar primeiro, em ordem, por exemplo ["Anthropic", "Amazon Bedrock"].
allow_fallbacksbooleanfalse impede que a requisição vá para provedores fora de order ou only (padrão true).
onlystring[]Permite somente estes provedores.
ignorestring[]Nunca usa estes provedores.
sortstring"price", "throughput" ou "latency" em vez de balanceamento de carga.
data_collectionstring"deny" exclui provedores que possam armazenar prompts ou treinar com eles. "allow" é o padrão.
require_parametersbooleanUsa somente provedores que suportam todos os parâmetros da sua requisição (por exemplo tools, response_format).
quantizationsstring[]Precisões permitidas, por exemplo ["fp8", "bf16"].
max_priceobjectLimites máximos de preço em USD por milhão de tokens, por exemplo { "prompt": 1, "completion": 3 }.
{
  "model": "meta-llama/llama-3.3-70b-instruct",
  "messages": [{ "role": "user", "content": "Hello" }],
  "provider": {
    "order": ["Groq", "Fireworks"],
    "allow_fallbacks": true,
    "data_collection": "deny",
    "sort": "throughput"
  }
}

A variante :nitro é um atalho para sort: "throughput", e :floor é um atalho para sort: "price". Veja Ids de modelo.

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api14.com/api/v1",
  apiKey: process.env.API14_API_KEY,
});

const result = await client.chat.completions.create({
  "model": "openai/gpt-5-mini",
  "messages": [
    {
      "role": "user",
      "content": "Explain vector databases in two sentences."
    }
  ]
});
console.log(result.choices[0].message.content);

Fallbacks de modelos com models

Passe uma lista de modelos. Se o primeiro falhar (uma queda, limite de taxa, moderação ou erro de tamanho de contexto), o próximo é tentado:

{
  "models": ["anthropic/claude-sonnet-4.5", "openai/gpt-5-mini", "google/gemini-2.5-flash"],
  "messages": [{ "role": "user", "content": "Summarize this ticket." }]
}
  • model é opcional quando models está definido. Se você enviar os dois, model é tentado primeiro.
  • Todos os modelos da lista precisam passar pelas verificações do gateway antes de a requisição ser enviada: devem existir e estar ativados, constar na lista de modelos permitidos da sua chave e estar incluídos no seu plano. Um único modelo que falhe nas verificações rejeita a requisição inteira (403 model_not_allowed, 403 plan_required ou 404 model_not_found).
  • Você é cobrado apenas pelo modelo que respondeu, ao preço dele. O campo model da resposta informa qual foi.

Resposta

{
  "id": "gen-1760000000-route",
  "model": "openai/gpt-5-mini",
  "provider": "OpenAI",
  "choices": [{ "index": 0, "finish_reason": "stop", "message": { "role": "assistant", "content": "..." } }],
  "usage": { "prompt_tokens": 140, "completion_tokens": 60, "total_tokens": 200, "cost": 0.000155 }
}

provider mostra qual provedor atendeu a requisição. A Consulta de geração mostra os detalhes completos do roteamento.

Erros

Se nenhum provedor corresponder aos seus filtros (por exemplo only junto com require_parameters), o provedor retorna 404 "No endpoints found". Os demais erros são os mesmos de Chat completions. Veja Erros.