Usiamo i cookie. Cookie e memoria del browser ti mantengono connesso e ricordano le tue preferenze. Con il tuo consenso misuriamo anche come viene usato il sito. Puoi in qualsiasi momento. Consulta la nostra cookie policy.

Instradamento dei provider e fallback

Endpoint

Instradamento dei provider e fallback

Scegli, ordina e filtra i provider upstream con l'oggetto provider e usa models per il fallback tra modelli diversi quando una richiesta fallisce.

Provalo nel playground

Molti modelli sono serviti da più provider upstream, ciascuno con il proprio prezzo, la propria velocità e la propria politica sui dati. Per impostazione predefinita le richieste sono distribuite tra i provider in base a prezzo e uptime, e passano a un altro provider quando uno fallisce. Usa l'oggetto provider per cambiare questo comportamento e models per il fallback tra modelli diversi.

L'oggetto provider

CampoTipoDescrizione
orderstring[]Provider da provare per primi, in ordine, ad es. ["Anthropic", "Amazon Bedrock"].
allow_fallbacksbooleanfalse impedisce alla richiesta di andare verso provider esterni a order o only (predefinito true).
onlystring[]Consente solo questi provider.
ignorestring[]Non usare mai questi provider.
sortstring"price", "throughput" o "latency" al posto del bilanciamento del carico.
data_collectionstring"deny" esclude i provider che potrebbero memorizzare i prompt o addestrarsi su di essi. "allow" è il valore predefinito.
require_parametersbooleanUsa solo provider che supportano ogni parametro della tua richiesta (ad es. tools, response_format).
quantizationsstring[]Precisioni consentite, ad es. ["fp8", "bf16"].
max_priceobjectLimiti massimi di prezzo in USD per milione di token, ad es. { "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"
  }
}

La variante :nitro è una scorciatoia per sort: "throughput" e :floor è una scorciatoia per sort: "price". Vedi Id dei modelli.

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);

Fallback tra modelli con models

Passa un elenco di modelli. Se il primo fallisce (un'interruzione, un limite di frequenza, la moderazione o un errore di lunghezza del contesto), viene provato il successivo:

{
  "models": ["anthropic/claude-sonnet-4.5", "openai/gpt-5-mini", "google/gemini-2.5-flash"],
  "messages": [{ "role": "user", "content": "Summarize this ticket." }]
}
  • model è facoltativo quando models è impostato. Se invii entrambi, model viene provato per primo.
  • Ogni modello dell'elenco deve superare i controlli del gateway prima dell'invio della richiesta: deve esistere ed essere attivo, trovarsi nella lista dei modelli consentiti della tua chiave ed essere incluso nel tuo piano. Un solo modello che non supera i controlli fa rifiutare l'intera richiesta (403 model_not_allowed, 403 plan_required o 404 model_not_found).
  • Ti viene fatturato solo il modello che ha risposto, al suo prezzo. Il campo model della risposta indica quale è stato.

Risposta

{
  "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 indica quale provider upstream ha servito la richiesta. La Ricerca di una generazione mostra i dettagli completi dell'instradamento.

Errori

Se nessun provider corrisponde ai tuoi filtri (ad es. only insieme a require_parameters), l'upstream restituisce 404 "No endpoints found". Gli altri errori sono gli stessi di Chat completions. Vedi Errori.