Protocolos de API para LLM

O Atlas Cloud fala OpenAI Chat Completions, Completions, Responses, Images, Anthropic Messages e Google Gemini. Uma chave, uma base URL, seis formatos de transporte.

O Atlas Cloud aceita seis formatos de requisição diferentes na mesma base URL e com a mesma chave de API. Aponte um SDK existente para o Atlas Cloud e ele geralmente funciona sem alterações — sem reescrita, sem camada de adaptação própria.

https://api.atlascloud.ai

Matriz de protocolos

ProtocoloEndpointUse quando
OpenAI Chat CompletionsPOST /v1/chat/completionsEscolha padrão. Maior cobertura de modelos
OpenAI CompletionsPOST /v1/completionsComplemento de texto legado. Poucos modelos suportam
OpenAI ResponsesPOST /v1/responsesVocê já usa a API Responses
OpenAI ImagesPOST /v1/images/generations, /v1/images/editsChamadas síncronas de imagem por um cliente da OpenAI
Anthropic MessagesPOST /v1/messagesVocê já usa o SDK da Anthropic ou o Claude Code
Google GeminiPOST /v1beta/models/{model}:generateContentVocê já usa o SDK do Google GenAI

Nem todo modelo fala todos os protocolos. Cada modelo publica uma lista supported_apis — verifique-a antes de trocar de formato. A lista é ordenada: a primeira entrada é a recomendada para aquele modelo. Modelos da família Gemini, por exemplo, expõem toda a sua capacidade multimodal apenas no formato nativo do Gemini.

Autenticação

Sua chave de API funciona com qualquer um dos quatro estilos de cabeçalho, de modo que SDKs feitos para outros provedores autenticam sem modificação:

-H "Authorization: Bearer $ATLASCLOUD_API_KEY"

Recomendado, e funciona com todos os protocolos.

As chaves de API do Atlas Cloud começam com apikey-. Consulte Chaves API.

OpenAI Chat Completions

O formato com maior suporte.

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

Usando o SDK da OpenAI — mude duas linhas:

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 amostragem. O suporte varia por modelo — cada modelo publica seus próprios supported_sampling_parameters. Comumente disponíveis: 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).

Saída estruturada. O response_format aceita tanto {"type": "json_object"} quanto uma definição json_schema, em modelos que anunciam json_mode ou structured_outputs.

Chamada de ferramentas. tools, tool_choice e parallel_tool_calls são repassados em modelos que anunciam tools.

Entrada multimodal. Imagens, vídeo e áudio podem ser anexados como partes de conteúdo:

{
  "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 é uma extensão do Atlas Cloud além da especificação da OpenAI. O áudio precisa ser Base64 embutido — uma URL não é aceita em 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"}]
  }'

Aponte o SDK da Anthropic para o Atlas Cloud definindo base_url como https://api.atlascloud.ai.

Suportado. system (string ou array de blocos), stop_sequences, tools com input_schema, tool_choice, thinking, blocos de imagem (fontes base64 e url), blocos document e tool_result. Blocos thinking do assistente são mapeados para a saída de raciocínio.

Diferenças que você precisa conhecer:

ComportamentoDetalhe
stop_sequencesTruncado para as 4 primeiras entradas
tool_choice: "any"Mapeado para required
cache_controlIgnorado quando o modelo de destino é servido por um protocolo traduzido, então o cache de prompt não se aplica
Ferramentas de servidor integradasFerramentas hospedadas pela Anthropic, como busca na web e uso do computador, não estão disponíveis
POST /v1/messages/count_tokensNão implementado
MultimodalApenas imagens. Partes de vídeo e áudio não são aceitas neste protocolo

O streaming segue a sequência de eventos da Anthropic: message_start, content_block_start, content_block_delta, content_block_stop, message_delta, message_stop. Não há sentinela [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
  }'

Suportado. instructions, input em todas as suas formas, tools, tool_choice, reasoning.effort, text.format (tanto json_object quanto json_schema), text.verbosity, temperature, top_p, stream, parallel_tool_calls.

Ignorados silenciosamente — aceitos sem erro, mas sem efeito: previous_response_id, store, include, background, conversation, prompt, truncation, max_tool_calls, top_logprobs e reasoning.summary. O metadata é devolvido na resposta, mas não é encaminhado.

Como previous_response_id e store não têm efeito, não há estado de conversa no servidor. Envie a conversa completa em cada requisição.

Multimodal. Imagens e áudio. Sem vídeo neste protocolo. As imagens usam {"type": "input_image", "image_url": "<url string>"} — observe que o valor é uma string simples, não um objeto.

O streaming emite o conjunto padrão de eventos do Responses, terminando com response.completed, response.incomplete ou response.failed. Não há sentinela [DONE].

Google Gemini

# Sem 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 — o parâmetro alt=sse é obrigatório
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"}]}]}'

O ?alt=sse é obrigatório para streaming. Sem ele, a requisição retorna 404.

Suportado. contents[] com os papéis user e model, systemInstruction, generationConfig e tools.

Multimodal. Imagens, vídeo e áudio — embutidos via inline_data ou por referência via file_data.file_uri.

Este protocolo é servido apenas por modelos que o falam nativamente. Modelos cujo identificador contém nano, banana ou omni são rejeitados aqui; use o Chat Completions ou os endpoints de geração de mídia para eles.

OpenAI Images

Geração síncrona de imagens para clientes compatíveis com 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"}'

O /v1/images/edits recebe multipart/form-data. Apenas um pequeno número de modelos anuncia este protocolo.

Este é um caminho diferente do pipeline principal de imagem. A maioria dos modelos de imagem — e todos os de vídeo, áudio e 3D — usa os endpoints assíncronos descritos em Predições. Verifique o supported_apis de um modelo antes de escolher.

Comportamento do gateway

O gateway normaliza algumas coisas no caminho. Elas não constam das especificações originais e vão surpreender você se estiver depurando uma resposta:

ComportamentoAplica-se aDetalhe
Estatísticas de uso forçadasRequisições em streamingstream_options.include_usage é definido como true, então um bloco final de uso sempre chega
Prompt de sistema padrãoChat Completions, Messages, ResponsesSe você não enviar um prompt de sistema, "You are a helpful assistant." é inserido
max_completion_tokens reescritoChat CompletionsConvertido em max_tokens
Sinalizadores de raciocínio normalizadosChat Completionsenable_thinking, thinking.type e reasoning_effort: "none" são unificados
Comentários de keep-aliveStreamingStreams ociosos emitem linhas de comentário SSE começando com :. Os clientes devem ignorá-las
Limite do corpo da requisiçãoTodos os endpoints50 MB. Cargas maiores retornam 413 — use uma URL ou envie o arquivo

Não disponível

Estes endpoints não existem no Atlas Cloud. Requisições para eles não funcionarão, independentemente do modelo:

  • /v1/embeddings
  • /v1/rerank
  • /v1/audio/speech e /v1/audio/transcriptions — o áudio passa pelo endpoint de áudio
  • /v1/messages/count_tokens

Provedores como Ollama, Cohere e Bedrock não são expostos como protocolos nativos. Modelos de muitos fornecedores estão disponíveis, mas sempre por um dos seis formatos acima.

Limites de taxa e erros

Os limites de taxa se aplicam por conta e por modelo. Quando você excede um deles, a API retorna 429.

Os endpoints de LLM não retornam cabeçalhos X-RateLimit-*, e as respostas 429 nesses endpoints não trazem Retry-After. Implemente backoff exponencial no cliente em vez de depender dos cabeçalhos da resposta.

Toda resposta traz um cabeçalho X-Request-ID. Inclua-o ao entrar em contato com o suporte.

Relacionado

Last updated on

On this page