Protocolli API LLM
Atlas Cloud parla OpenAI Chat Completions, Completions, Responses, Images, Anthropic Messages e Google Gemini. Una chiave, un URL di base, sei formati di trasporto.
Atlas Cloud accetta sei diversi formati di richiesta sullo stesso URL di base con la stessa chiave API. Punta un SDK esistente verso Atlas Cloud e in genere funziona senza modifiche — nessuna riscrittura, nessun livello di adattamento da scrivere.
https://api.atlascloud.aiMatrice dei protocolli
| Protocollo | Endpoint | Quando usarlo |
|---|---|---|
| OpenAI Chat Completions | POST /v1/chat/completions | Scelta predefinita. Copertura di modelli più ampia |
| OpenAI Completions | POST /v1/completions | Completamento di testo legacy. Pochi modelli lo supportano |
| OpenAI Responses | POST /v1/responses | Usi già l'API Responses |
| OpenAI Images | POST /v1/images/generations, /v1/images/edits | Chiamate immagine sincrone tramite un client OpenAI |
| Anthropic Messages | POST /v1/messages | Usi già l'SDK Anthropic o Claude Code |
| Google Gemini | POST /v1beta/models/{model}:generateContent | Usi già l'SDK Google GenAI |
Non tutti i modelli parlano tutti i protocolli. Ogni modello pubblica un elenco supported_apis — controllalo prima di cambiare formato. L'elenco è ordinato: la prima voce è quella consigliata per quel modello. I modelli della famiglia Gemini, ad esempio, espongono tutte le loro capacità multimodali solo nel formato Gemini nativo.
Autenticazione
La tua chiave API funziona con quattro stili di header, così gli SDK pensati per altri provider si autenticano senza modifiche:
-H "Authorization: Bearer $ATLASCLOUD_API_KEY"Consigliato e funziona con ogni protocollo.
Le chiavi API di Atlas Cloud iniziano con apikey-. Vedi Chiavi API.
OpenAI Chat Completions
Il formato supportato più ampiamente.
curl https://api.atlascloud.ai/v1/chat/completions \
-H "Authorization: Bearer $ATLASCLOUD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ai/deepseek-v3.2",
"messages": [{"role": "user", "content": "Explain HTTP vs HTTPS"}],
"max_tokens": 1024,
"stream": true
}'Con l'SDK OpenAI — cambia due righe:
from openai import OpenAI
client = OpenAI(
api_key=os.environ["ATLASCLOUD_API_KEY"],
base_url="https://api.atlascloud.ai/v1",
)
response = client.chat.completions.create(
model="deepseek-ai/deepseek-v3.2",
messages=[{"role": "user", "content": "Explain HTTP vs HTTPS"}],
)
print(response.choices[0].message.content)Parametri di campionamento. Il supporto varia da modello a modello — ciascuno pubblica i propri supported_sampling_parameters. Comunemente disponibili: temperature (0–2), top_p (0–1), top_k, min_p, frequency_penalty (−2–2), presence_penalty (−2–2), repetition_penalty, stop, seed, logit_bias, logprobs, top_logprobs (0–20).
Output strutturato. response_format accetta sia {"type": "json_object"} sia una definizione json_schema, sui modelli che dichiarano json_mode o structured_outputs.
Chiamate di strumenti. tools, tool_choice e parallel_tool_calls vengono inoltrati sui modelli che dichiarano tools.
Input multimodale. Immagini, video e audio possono essere allegati come parti di contenuto:
{
"role": "user",
"content": [
{ "type": "text", "text": "What is in this image?" },
{ "type": "image_url", "image_url": { "url": "https://example.com/photo.jpg" } },
{ "type": "video_url", "video_url": { "url": "https://example.com/clip.mp4" } },
{ "type": "input_audio", "input_audio": { "data": "<base64>", "format": "mp3" } }
]
}video_url è un'estensione di Atlas Cloud oltre la specifica OpenAI. L'audio deve essere Base64 inline — per input_audio non viene accettato un URL.
Anthropic Messages
curl https://api.atlascloud.ai/v1/messages \
-H "x-api-key: $ATLASCLOUD_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ai/deepseek-v3.2",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello"}]
}'Punta l'SDK Anthropic verso Atlas Cloud impostando base_url su https://api.atlascloud.ai.
Supportato. system (stringa o array di blocchi), stop_sequences, tools con input_schema, tool_choice, thinking, blocchi immagine (sia sorgenti base64 sia url), blocchi document e tool_result. I blocchi thinking dell'assistente vengono mappati sull'output di ragionamento.
Differenze da conoscere:
| Comportamento | Dettaglio |
|---|---|
stop_sequences | Troncato alle prime 4 voci |
tool_choice: "any" | Mappato su required |
cache_control | Ignorato quando il modello di destinazione è servito tramite un protocollo tradotto, quindi il caching dei prompt non si applica |
| Strumenti server integrati | Ricerca web, computer use e altri strumenti ospitati da Anthropic non sono disponibili |
POST /v1/messages/count_tokens | Non implementato |
| Multimodale | Solo immagini. Le parti video e audio non sono accettate su questo protocollo |
Lo streaming segue la sequenza di eventi di Anthropic: message_start, content_block_start, content_block_delta, content_block_stop, message_delta, message_stop. Non esiste un sentinella [DONE].
OpenAI Responses
curl https://api.atlascloud.ai/v1/responses \
-H "Authorization: Bearer $ATLASCLOUD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-ai/deepseek-v3.2",
"input": [{"role": "user", "content": [{"type": "input_text", "text": "Hello"}]}],
"max_output_tokens": 1024
}'Supportato. instructions, input in tutte le sue forme, tools, tool_choice, reasoning.effort, text.format (sia json_object sia json_schema), text.verbosity, temperature, top_p, stream, parallel_tool_calls.
Ignorati silenziosamente — accettati senza errore ma senza alcun effetto: previous_response_id, store, include, background, conversation, prompt, truncation, max_tool_calls, top_logprobs e reasoning.summary. metadata viene restituito così com'è ma non inoltrato.
Poiché previous_response_id e store non hanno effetto, lo stato della conversazione lato server non è disponibile. Invia l'intera conversazione a ogni richiesta.
Multimodale. Immagini e audio. Nessun video su questo protocollo. Le immagini usano {"type": "input_image", "image_url": "<url string>"} — nota che il valore è una semplice stringa, non un oggetto.
Lo streaming emette l'insieme standard di eventi di Responses e termina con response.completed, response.incomplete o response.failed. Non esiste un sentinella [DONE].
Google Gemini
# Non-streaming
curl "https://api.atlascloud.ai/v1beta/models/MODEL_ID:generateContent" \
-H "x-goog-api-key: $ATLASCLOUD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{"role": "user", "parts": [{"text": "Hello"}]}],
"generationConfig": {"maxOutputTokens": 1024, "temperature": 0.7}
}'
# Streaming — the alt=sse parameter is required
curl "https://api.atlascloud.ai/v1beta/models/MODEL_ID:streamGenerateContent?alt=sse" \
-H "x-goog-api-key: $ATLASCLOUD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"contents": [{"role": "user", "parts": [{"text": "Hello"}]}]}'?alt=sse è obbligatorio per lo streaming. Senza di esso la richiesta restituisce 404.
Supportato. contents[] con i ruoli user e model, systemInstruction, generationConfig e tools.
Multimodale. Immagini, video e audio — inline tramite inline_data, oppure per riferimento tramite file_data.file_uri.
Questo protocollo è servito solo dai modelli che lo parlano nativamente. I modelli il cui identificatore contiene nano, banana o omni vengono rifiutati qui; per quelli usa invece Chat Completions o gli endpoint di generazione media.
OpenAI Images
Generazione di immagini sincrona per i client compatibili con OpenAI:
curl https://api.atlascloud.ai/v1/images/generations \
-H "Authorization: Bearer $ATLASCLOUD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "MODEL_ID", "prompt": "a cat", "n": 1, "size": "1024x1024"}'/v1/images/edits richiede multipart/form-data. Solo un numero ridotto di modelli dichiara questo protocollo.
Questo è un percorso diverso dalla pipeline principale delle immagini. La maggior parte dei modelli di immagini — e tutti i modelli video, audio e 3D — usa gli endpoint asincroni descritti in Predizioni. Controlla i supported_apis di un modello prima di scegliere.
Comportamento del gateway
Il gateway normalizza alcune cose lungo il percorso. Non sono previste dalle specifiche upstream e ti sorprenderanno mentre esamini una risposta:
| Comportamento | Si applica a | Dettaglio |
|---|---|---|
| Statistiche d'uso forzate | Richieste in streaming | stream_options.include_usage viene impostato su true, così arriva sempre un chunk finale con l'utilizzo |
| Prompt di sistema predefinito | Chat Completions, Messages, Responses | Se non invii alcun prompt di sistema, viene inserito "You are a helpful assistant." |
max_completion_tokens riscritto | Chat Completions | Convertito in max_tokens |
| Flag di ragionamento normalizzati | Chat Completions | enable_thinking, thinking.type e reasoning_effort: "none" vengono unificati |
| Commenti keep-alive | Streaming | Gli stream inattivi emettono righe di commento SSE che iniziano con :. I client devono ignorarle |
| Limite del corpo della richiesta | Tutti gli endpoint | 50 MB. I payload più grandi restituiscono 413 — usa un URL oppure carica il file |
Non disponibile
Questi endpoint non esistono su Atlas Cloud. Le richieste inviate a essi non funzioneranno, indipendentemente dal modello:
/v1/embeddings/v1/rerank/v1/audio/speeche/v1/audio/transcriptions— l'audio passa da l'endpoint audio/v1/messages/count_tokens
Provider come Ollama, Cohere e Bedrock non sono esposti come protocolli nativi. I modelli di molti fornitori sono disponibili, ma sempre attraverso uno dei sei formati elencati sopra.
Limiti di frequenza ed errori
I limiti di frequenza si applicano per account e per modello. Quando ne superi uno, l'API restituisce 429.
Gli endpoint LLM non restituiscono header X-RateLimit-* e le risposte 429 di questi endpoint non riportano Retry-After. Implementa un backoff esponenziale lato client invece di affidarti agli header di risposta.
Ogni risposta include un header X-Request-ID. Includilo quando contatti il supporto.
Argomenti correlati
Last updated on