Che cos'è un'API compatibile con OpenAI?

Molti provider di LLM e server di inferenza self-hosted — OpenAI stessa, Azure OpenAI, Groq, OpenRouter, Together AI, Mistral, DeepSeek, vLLM, il server di llama.cpp, LM Studio e la modalità compatibile con OpenAI di Ollama — espongono tutti la stessa interfaccia REST resa popolare da OpenAI: richieste JSON verso endpoint come /v1/chat/completions, autenticate con un token Bearer nell'header Authorization. Questo consente di sostituire i provider senza riscrivere il codice di integrazione.

Scrivere manualmente un comando cURL corretto per questi endpoint significa impostare esattamente l'URL, gli header e il corpo JSON corretti, soprattutto quando si regolano parametri di campionamento come temperatura e penalità o si passa da richieste di chat, completions legacy ed embeddings.

Descrizione dello strumento

Questo strumento genera comandi cURL pronti all'uso per qualsiasi API compatibile con OpenAI. Imposta l'URL di base, l'endpoint, il modello e i parametri, e ottieni istantaneamente un comando cURL formattato correttamente, pronto per essere incollato nel terminale o negli script.

Esempi

Completamento della chat:

curl -X POST "https://api.openai.com/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "model": "gpt-4o-mini",
  "messages": [
    { "role": "system", "content": "Sei un assistente utile per la programmazione." },
    { "role": "user", "content": "Scrivi una funzione Python per invertire una stringa" }
  ],
  "temperature": 0.3,
  "stream": false
}'

Server self-hosted (vLLM, llama.cpp, LM Studio, ...):

curl -X POST "http://localhost:8000/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "model": "llama-3-8b-instruct",
  "messages": [
    { "role": "user", "content": "Riassumi la trama dell'Amleto in due frasi" }
  ],
  "stream": true
}'

Embeddings:

curl -X POST "https://api.openai.com/v1/embeddings" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
  "model": "text-embedding-3-small",
  "input": "La volpe marrone veloce salta sopra il cane pigro"
}'

Funzionalità

  • Supporta i tre endpoint compatibili con OpenAI più comuni: /chat/completions, /completions ed /embeddings
  • Funziona con qualsiasi URL di base compatibile, quindi è adatto a OpenAI, Azure, Groq, OpenRouter, Together AI e ai server self-hosted
  • Parametri di campionamento configurabili: temperatura, top-p, penalità di frequenza, penalità di presenza, numero massimo di token, numero di completions, sequenze di arresto e seed
  • Formato di risposta opzionale come oggetto JSON per i completamenti della chat
  • Non viene inviato nulla altrove: il comando cURL viene creato interamente nel browser e nessuna chiave API lascia mai il dispositivo

Spiegazione delle opzioni

Opzione Descrizione Predefinito Intervallo
URL di base La radice dell'API, senza il percorso dell'endpoint. https://api.openai.com/v1 Qualsiasi URL
Endpoint L'endpoint API di destinazione. /chat/completions chat, completions, embeddings
Temperatura Controlla la casualità dell'output. Valori più bassi producono testi più focalizzati, mentre valori più alti aumentano la creatività. 1 0-2
Top P Soglia del campionamento nucleus. Il modello considera i token la cui probabilità cumulativa raggiunge questo valore. 1 0-1
Penalità di frequenza Penalizza i token in base alla frequenza con cui sono già comparsi, riducendo le ripetizioni letterali. 0 -2-2
Penalità di presenza Penalizza i token già comparsi, incoraggiando il modello a introdurre nuovi argomenti. 0 -2-2
Token massimi Numero massimo di token da generare nella risposta. Lascia vuoto per ometterlo e usare il valore predefinito del provider. - Qualsiasi numero intero
Completions (n) Numero di opzioni di chat/completion da generare per l'input. 1 Qualsiasi numero intero
Seed Seed fisso per ottenere, nei limiti del possibile, un output riproducibile. Lascia vuoto per risultati casuali. - Qualsiasi numero intero
Sequenze di arresto Elenco separato da virgole delle sequenze in corrispondenza delle quali l'API interrompe la generazione di altri token. - Qualsiasi testo
Formato della risposta Imposta su oggetto JSON per obbligare il modello a restituire un output JSON valido (solo per l'endpoint chat). Nessuno Nessuno / oggetto JSON
Stream Quando è abilitato, la risposta viene trasmessa come eventi inviati dal server. Disabilitalo per ricevere l'intera risposta in una volta sola. Disattivato Attivato / Disattivato