Protocoles d'API LLM

Atlas Cloud parle OpenAI Chat Completions, Completions, Responses, Images, Anthropic Messages et Google Gemini. Une clé, une URL de base, six formats de transport.

Atlas Cloud accepte six formats de requête différents sur la même URL de base avec la même clé API. Pointez un SDK existant vers Atlas Cloud et il fonctionne généralement sans modification — pas de réécriture, pas de couche d'adaptation à votre charge.

https://api.atlascloud.ai

Matrice des protocoles

ProtocolePoint de terminaisonÀ utiliser quand
OpenAI Chat CompletionsPOST /v1/chat/completionsChoix par défaut. Couverture de modèles la plus large
OpenAI CompletionsPOST /v1/completionsComplétion de texte historique. Peu de modèles la prennent en charge
OpenAI ResponsesPOST /v1/responsesVous utilisez déjà l'API Responses
OpenAI ImagesPOST /v1/images/generations, /v1/images/editsAppels d'image synchrones via un client OpenAI
Anthropic MessagesPOST /v1/messagesVous utilisez déjà le SDK Anthropic ou Claude Code
Google GeminiPOST /v1beta/models/{model}:generateContentVous utilisez déjà le SDK Google GenAI

Tous les modèles ne parlent pas tous les protocoles. Chaque modèle publie une liste supported_apis — vérifiez-la avant de changer de format. La liste est ordonnée : la première entrée est celle recommandée pour ce modèle. Les modèles de la famille Gemini, par exemple, n'exposent l'intégralité de leurs capacités multimodales que sur le format Gemini natif.

Authentification

Votre clé API fonctionne avec quatre styles d'en-tête, afin que les SDK conçus pour d'autres fournisseurs s'authentifient sans modification :

-H "Authorization: Bearer $ATLASCLOUD_API_KEY"

Recommandé, et fonctionne avec tous les protocoles.

Les clés API Atlas Cloud commencent par apikey-. Voir Clés API.

OpenAI Chat Completions

Le format le plus largement pris en charge.

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
  }'

Avec le SDK OpenAI — deux lignes à changer :

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)

Paramètres d'échantillonnage. La prise en charge varie selon le modèle — chaque modèle publie ses propres supported_sampling_parameters. Couramment disponibles : 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).

Sortie structurée. response_format accepte à la fois {"type": "json_object"} et une définition json_schema, sur les modèles qui annoncent json_mode ou structured_outputs.

Appels d'outils. tools, tool_choice et parallel_tool_calls sont transmis sur les modèles qui annoncent tools.

Entrée multimodale. Images, vidéo et audio peuvent être joints en tant que parties de contenu :

{
  "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 est une extension Atlas Cloud au-delà de la spécification OpenAI. L'audio doit être en Base64 en ligne — une URL n'est pas acceptée pour input_audio.

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"}]
  }'

Pointez le SDK Anthropic vers Atlas Cloud en définissant base_url sur https://api.atlascloud.ai.

Pris en charge. system (chaîne ou tableau de blocs), stop_sequences, tools avec input_schema, tool_choice, thinking, les blocs image (sources base64 et url), les blocs document et tool_result. Les blocs thinking de l'assistant sont mappés vers la sortie de raisonnement.

Différences à connaître :

ComportementDétail
stop_sequencesTronqué aux 4 premières entrées
tool_choice: "any"Mappé vers required
cache_controlIgnoré lorsque le modèle cible est servi via un protocole traduit ; la mise en cache des prompts ne s'applique donc pas
Outils serveur intégrésRecherche web, computer use et autres outils hébergés par Anthropic ne sont pas disponibles
POST /v1/messages/count_tokensNon implémenté
MultimodalImages uniquement. Les parties vidéo et audio ne sont pas acceptées sur ce protocole

Le streaming suit la séquence d'événements Anthropic : message_start, content_block_start, content_block_delta, content_block_stop, message_delta, message_stop. Il n'y a pas de sentinelle [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
  }'

Pris en charge. instructions, input sous toutes ses formes, tools, tool_choice, reasoning.effort, text.format (json_object et json_schema), text.verbosity, temperature, top_p, stream, parallel_tool_calls.

Ignorés silencieusement — acceptés sans erreur mais sans effet : previous_response_id, store, include, background, conversation, prompt, truncation, max_tool_calls, top_logprobs et reasoning.summary. metadata est renvoyé tel quel mais n'est pas transmis.

Comme previous_response_id et store n'ont aucun effet, l'état de conversation côté serveur n'est pas disponible. Envoyez la conversation complète à chaque requête.

Multimodal. Images et audio. Pas de vidéo sur ce protocole. Les images utilisent {"type": "input_image", "image_url": "<url string>"} — notez que la valeur est une simple chaîne, pas un objet.

Le streaming émet l'ensemble d'événements Responses standard et se termine par response.completed, response.incomplete ou response.failed. Il n'y a pas de sentinelle [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 est obligatoire pour le streaming. Sans ce paramètre, la requête renvoie 404.

Pris en charge. contents[] avec les rôles user et model, systemInstruction, generationConfig et tools.

Multimodal. Images, vidéo et audio — en ligne via inline_data, ou par référence via file_data.file_uri.

Ce protocole n'est servi que par les modèles qui le parlent nativement. Les modèles dont l'identifiant contient nano, banana ou omni sont rejetés ici ; utilisez plutôt Chat Completions ou les points de terminaison de génération de médias.

OpenAI Images

Génération d'images synchrone pour les clients compatibles 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 attend du multipart/form-data. Seul un petit nombre de modèles annonce ce protocole.

Ce chemin est différent du pipeline d'images principal. La plupart des modèles d'image — et tous les modèles vidéo, audio et 3D — utilisent les points de terminaison asynchrones décrits dans Prédictions. Vérifiez les supported_apis d'un modèle avant de choisir.

Comportement de la passerelle

La passerelle normalise quelques éléments au passage. Ils ne figurent pas dans les spécifications amont et vous surprendront lors du débogage d'une réponse :

ComportementS'applique àDétail
Statistiques d'usage forcéesRequêtes en streamingstream_options.include_usage est défini sur true, donc un dernier chunk d'usage arrive toujours
Prompt système par défautChat Completions, Messages, ResponsesSi vous n'envoyez aucun prompt système, "You are a helpful assistant." est inséré
max_completion_tokens réécritChat CompletionsConverti en max_tokens
Indicateurs de raisonnement normalisésChat Completionsenable_thinking, thinking.type et reasoning_effort: "none" sont unifiés
Commentaires keep-aliveStreamingLes flux inactifs émettent des lignes de commentaire SSE commençant par :. Les clients doivent les ignorer
Limite du corps de requêteTous les points de terminaison50 Mo. Les charges plus grandes renvoient 413 — utilisez une URL ou téléversez le fichier

Non disponible

Ces points de terminaison n'existent pas sur Atlas Cloud. Les requêtes vers eux ne fonctionneront pas, quel que soit le modèle :

  • /v1/embeddings
  • /v1/rerank
  • /v1/audio/speech et /v1/audio/transcriptions — l'audio passe par le point de terminaison audio
  • /v1/messages/count_tokens

Des fournisseurs tels qu'Ollama, Cohere et Bedrock ne sont pas exposés comme protocoles natifs. Les modèles de nombreux éditeurs sont disponibles, mais toujours via l'un des six formats ci-dessus.

Limites de débit et erreurs

Les limites de débit s'appliquent par compte et par modèle. Lorsque vous en dépassez une, l'API renvoie 429.

Les points de terminaison LLM ne renvoient pas d'en-têtes X-RateLimit-*, et les réponses 429 sur ces points de terminaison ne comportent pas de Retry-After. Implémentez un backoff exponentiel côté client plutôt que de vous fier aux en-têtes de réponse.

Chaque réponse porte un en-tête X-Request-ID. Incluez-le lorsque vous contactez le support.

Voir aussi

Last updated on

On this page