Protocolos de API para LLM

Atlas Cloud habla OpenAI Chat Completions, Completions, Responses, Images, Anthropic Messages y Google Gemini. Una clave, una base URL, seis formatos de transporte.

Atlas Cloud acepta seis formatos de solicitud distintos en la misma base URL y con la misma clave de API. Apunta un SDK existente a Atlas Cloud y por lo general funciona sin cambios — sin reescrituras ni capas de adaptación propias.

https://api.atlascloud.ai

Matriz de protocolos

ProtocoloEndpointÚsalo cuando
OpenAI Chat CompletionsPOST /v1/chat/completionsOpción predeterminada. La mayor cobertura de modelos
OpenAI CompletionsPOST /v1/completionsCompletado de texto heredado. Pocos modelos lo admiten
OpenAI ResponsesPOST /v1/responsesYa usas la API Responses
OpenAI ImagesPOST /v1/images/generations, /v1/images/editsLlamadas de imagen síncronas mediante un cliente de OpenAI
Anthropic MessagesPOST /v1/messagesYa usas el SDK de Anthropic o Claude Code
Google GeminiPOST /v1beta/models/{model}:generateContentYa usas el SDK de Google GenAI

No todos los modelos hablan todos los protocolos. Cada modelo publica una lista supported_apis — revísala antes de cambiar de formato. La lista está ordenada: la primera entrada es la recomendada para ese modelo. Los modelos de la familia Gemini, por ejemplo, exponen toda su capacidad multimodal solo en el formato nativo de Gemini.

Autenticación

Tu clave de API funciona con cualquiera de los cuatro estilos de encabezado, de modo que los SDK creados para otros proveedores se autentican sin modificaciones:

-H "Authorization: Bearer $ATLASCLOUD_API_KEY"

Recomendado, y funciona con todos los protocolos.

Las claves de API de Atlas Cloud empiezan por apikey-. Consulta Claves API.

OpenAI Chat Completions

El formato con mayor compatibilidad.

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 el SDK de OpenAI — cambia dos líneas:

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)

Parámetros de muestreo. La compatibilidad varía según el modelo — cada uno publica sus propios supported_sampling_parameters. Disponibles habitualmente: 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).

Salida estructurada. response_format acepta tanto {"type": "json_object"} como una definición json_schema, en los modelos que anuncian json_mode o structured_outputs.

Llamada a herramientas. tools, tool_choice y parallel_tool_calls se transmiten en los modelos que anuncian tools.

Entrada multimodal. Las imágenes, el video y el audio pueden adjuntarse como partes de contenido:

{
  "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 es una extensión de Atlas Cloud más allá de la especificación de OpenAI. El audio debe ir en Base64 en línea — no se acepta una URL en 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"}]
  }'

Apunta el SDK de Anthropic a Atlas Cloud definiendo base_url como https://api.atlascloud.ai.

Compatible. system (cadena o array de bloques), stop_sequences, tools con input_schema, tool_choice, thinking, bloques de imagen (fuentes base64 y url), bloques document y tool_result. Los bloques thinking del asistente se corresponden con la salida de razonamiento.

Diferencias que conviene conocer:

ComportamientoDetalle
stop_sequencesSe trunca a las primeras 4 entradas
tool_choice: "any"Se traduce a required
cache_controlSe ignora cuando el modelo de destino se sirve mediante un protocolo traducido, por lo que el caché de prompts no se aplica
Herramientas de servidor integradasLas herramientas alojadas por Anthropic, como búsqueda web o uso del ordenador, no están disponibles
POST /v1/messages/count_tokensNo implementado
MultimodalSolo imágenes. Este protocolo no acepta partes de video ni de audio

El streaming sigue la secuencia de eventos de Anthropic: message_start, content_block_start, content_block_delta, content_block_stop, message_delta, message_stop. No hay centinela [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
  }'

Compatible. instructions, input en todas sus formas, tools, tool_choice, reasoning.effort, text.format (tanto json_object como json_schema), text.verbosity, temperature, top_p, stream, parallel_tool_calls.

Ignorados en silencio — se aceptan sin error pero no tienen efecto: previous_response_id, store, include, background, conversation, prompt, truncation, max_tool_calls, top_logprobs y reasoning.summary. metadata se devuelve en la respuesta, pero no se reenvía.

Como previous_response_id y store no tienen efecto, no hay estado de conversación en el servidor. Envía la conversación completa en cada solicitud.

Multimodal. Imágenes y audio. Este protocolo no admite video. Las imágenes usan {"type": "input_image", "image_url": "<url string>"} — fíjate en que el valor es una cadena simple, no un objeto.

El streaming emite el conjunto estándar de eventos de Responses y termina con response.completed, response.incomplete o response.failed. No hay centinela [DONE].

Google Gemini

# Sin 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 — el parámetro alt=sse es obligatorio
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 es obligatorio para el streaming. Sin él, la solicitud devuelve 404.

Compatible. contents[] con los roles user y model, systemInstruction, generationConfig y tools.

Multimodal. Imágenes, video y audio — en línea con inline_data, o por referencia con file_data.file_uri.

Este protocolo solo lo sirven los modelos que lo hablan de forma nativa. Los modelos cuyo identificador contiene nano, banana u omni se rechazan aquí; usa en su lugar Chat Completions o los endpoints de generación de medios.

OpenAI Images

Generación de imágenes síncrona para clientes compatibles 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 acepta multipart/form-data. Solo un pequeño número de modelos anuncia este protocolo.

Esta es una ruta distinta de la del pipeline principal de imagen. La mayoría de los modelos de imagen — y todos los de video, audio y 3D — usan los endpoints asíncronos descritos en Predicciones. Revisa el supported_apis de un modelo antes de elegir.

Comportamiento de la pasarela

La pasarela normaliza algunas cosas por el camino. No están en las especificaciones originales y te sorprenderán si estás depurando una respuesta:

ComportamientoSe aplica aDetalle
Estadísticas de uso forzadasSolicitudes en streamingstream_options.include_usage se define como true, así que siempre llega un fragmento final de uso
Prompt de sistema predeterminadoChat Completions, Messages, ResponsesSi no envías ningún prompt de sistema, se inserta "You are a helpful assistant."
max_completion_tokens reescritoChat CompletionsSe convierte en max_tokens
Indicadores de razonamiento normalizadosChat Completionsenable_thinking, thinking.type y reasoning_effort: "none" se unifican
Comentarios de keep-aliveStreamingLos streams inactivos emiten líneas de comentario SSE que empiezan por :. Los clientes deben ignorarlas
Límite del cuerpo de la solicitudTodos los endpoints50 MB. Las cargas mayores devuelven 413 — usa una URL o sube el archivo

No disponible

Estos endpoints no existen en Atlas Cloud. Las solicitudes a ellos no funcionarán, sea cual sea el modelo:

  • /v1/embeddings
  • /v1/rerank
  • /v1/audio/speech y /v1/audio/transcriptions — el audio pasa por el endpoint de audio
  • /v1/messages/count_tokens

Proveedores como Ollama, Cohere y Bedrock no se exponen como protocolos nativos. Hay modelos de muchos fabricantes disponibles, pero siempre a través de uno de los seis formatos anteriores.

Límites de tasa y errores

Los límites de tasa se aplican por cuenta y por modelo. Cuando superas uno, la API devuelve 429.

Los endpoints de LLM no devuelven encabezados X-RateLimit-*, y las respuestas 429 de estos endpoints no llevan Retry-After. Implementa un backoff exponencial en el cliente en lugar de depender de los encabezados de respuesta.

Toda respuesta lleva un encabezado X-Request-ID. Inclúyelo cuando contactes con soporte.

Relacionado

Last updated on

On this page