NovitàCollega qualsiasi agente a UberLLM: una chiave, tutti i modelli, a prezzo di listino o meno.
UberLLM

Cos'è un endpoint API compatibile con OpenAI?

Un endpoint API compatibile con OpenAI è uno che implementa gli esatti formati di richiesta e risposta dell'API di OpenAI — lo stesso schema /v1/chat/completions, lo stesso formato di streaming, gli stessi campi per le tool-call — così l'SDK ufficiale di OpenAI funziona con esso cambiando solo la base URL e la key. UberLLM è compatibile con OpenAI (e compatibile con Anthropic a /v1/messages), ed è per questo che passare a esso è un cambiamento di una sola riga.

La definizione breve

Un endpoint è "OpenAI-compatibile" quando accetta le stesse richieste HTTP e restituisce le stesse forme di risposta dell'API OpenAI. In pratica ciò significa:

  • il request body POST /v1/chat/completions (model, messages, temperature, tools, stream, …) è accettato così com'è;
  • la risposta è lo stesso oggetto choices[].message, con gli stessi conteggi di token usage;
  • lo streaming utilizza gli stessi chunk data: server-sent-events che terminano in [DONE];
  • il tool / function calling utilizza gli stessi campi tool_calls.

Poiché il contratto corrisponde, l'SDK ufficiale di OpenAI — in Python, JavaScript o qualsiasi altro linguaggio — funziona con l'endpoint quando si cambiano solo il base URL e l'API key. Il codice della tua applicazione non conosce la differenza.

Perché è importante

La compatibilità con OpenAI ha trasformato l'API di un fornitore in uno standard di fatto. Un endpoint compatibile ti permette di mantenere l'SDK, gli strumenti e le integrazioni di framework che già utilizzi (LangChain, il Vercel AI SDK, LlamaIndex, decine di framework per agenti) pur cambiando ciò che li alimenta.

Questa è l'intera migrazione a UberLLM:

from openai import OpenAI

client = OpenAI(
    base_url="https://api.uberllm.dev/v1",   # the only line that changes
    api_key="ull_your_key_here",
)

resp = client.chat.completions.create(
    model="deepseek/deepseek-v4-flash",
    messages=[{"role": "user", "content": "Hello!"}],
    stream=True,
)

Vedi la documentazione dell'SDK OpenAI per l'elenco completo dei parametri supportati.

Compatibile vs. un vero drop-in

"Compatibile" è uno spettro. Fai attenzione agli endpoint che accettano la forma della richiesta ma non supportano lo streaming, ignorano i tool calls o restituiscono usage non standard. UberLLM implementa il contratto di chat-completions inclusi streaming, tool calls e l'utilizzo dei token, e inoltre espone un endpoint compatibile con Anthropic a /v1/messages in modo che gli SDK di Anthropic e Claude Code funzionino anch'essi senza modifiche — documentazione SDK di Anthropic.

Cosa aggiunge UberLLM dietro l'endpoint standard

L'endpoint è standard; il routing dietro di esso non lo è. Ogni richiesta viene inviata al venditore sano più economico per il modello che hai specificato, i fallimenti prima dell'output vengono ritentati sul venditore successivo, e il prezzo che vedi (senza costi aggiuntivi) è il prezzo che paghi. Sfoglia i modelli su /models e i prezzi in tempo reale su /llm-api-pricing.

Continua a leggere

Domande frequenti

Cosa significa "OpenAI-compatible"?

Significa che l'endpoint accetta le stesse richieste e restituisce le stesse risposte dell'API di OpenAI — lo stesso schema di chat-completions, formato di streaming e campi tool-call — quindi l'SDK di OpenAI funziona con esso cambiando solo la base URL e la key.

Devo modificare il mio codice per usare un endpoint OpenAI-compatible?

Solo la base_url e la api_key. Tutto il resto nel tuo codice SDK di OpenAI — messages, streaming, tools, usage — rimane invariato.

UberLLM è anche compatibile con Anthropic?

Sì. Accanto all'endpoint di chat-completions compatibile con OpenAI, UberLLM espone un endpoint /v1/messages compatibile con Anthropic, quindi gli SDK di Anthropic e il codice Claude funzionano senza modifiche.