Протоколы LLM API

Atlas Cloud понимает OpenAI Chat Completions, Completions, Responses, Images, Anthropic Messages и Google Gemini. Один ключ, один базовый URL, шесть форматов обмена.

Atlas Cloud принимает шесть разных форматов запросов на одном базовом URL с одним и тем же API-ключом. Направьте существующий SDK на Atlas Cloud — и он, как правило, заработает без изменений: без переписывания кода и без собственного слоя адаптации.

https://api.atlascloud.ai

Матрица протоколов

ПротоколЭндпоинтКогда использовать
OpenAI Chat CompletionsPOST /v1/chat/completionsВыбор по умолчанию. Самый широкий охват моделей
OpenAI CompletionsPOST /v1/completionsУстаревшее текстовое дополнение. Поддерживают немногие модели
OpenAI ResponsesPOST /v1/responsesВы уже используете Responses API
OpenAI ImagesPOST /v1/images/generations, /v1/images/editsСинхронные вызовы генерации изображений через клиент OpenAI
Anthropic MessagesPOST /v1/messagesВы уже используете Anthropic SDK или Claude Code
Google GeminiPOST /v1beta/models/{model}:generateContentВы уже используете Google GenAI SDK

Не каждая модель понимает каждый протокол. Каждая модель публикует список supported_apis — проверьте его перед сменой формата. Список упорядочен: первая запись рекомендована для этой модели. Например, модели семейства Gemini раскрывают всю свою мультимодальность только в нативном формате Gemini.

Аутентификация

Ваш API-ключ работает с любым из четырёх стилей заголовков, поэтому SDK, написанные для других провайдеров, аутентифицируются без доработок:

-H "Authorization: Bearer $ATLASCLOUD_API_KEY"

Рекомендуется и работает со всеми протоколами.

API-ключи Atlas Cloud начинаются с apikey-. См. API-ключи.

OpenAI Chat Completions

Самый широко поддерживаемый формат.

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

С OpenAI SDK нужно изменить две строки:

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)

Параметры сэмплирования. Поддержка различается от модели к модели — каждая модель публикует собственный список supported_sampling_parameters. Обычно доступны: 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).

Структурированный вывод. Параметр response_format принимает как {"type": "json_object"}, так и определение json_schema — на моделях, объявляющих json_mode или structured_outputs.

Вызов инструментов. Поля tools, tool_choice и parallel_tool_calls передаются моделям, объявляющим tools.

Мультимодальный ввод. Изображения, видео и аудио можно прикреплять как части содержимого:

{
  "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 — это расширение Atlas Cloud за пределами спецификации OpenAI. Аудио должно передаваться встроенным Base64 — URL для 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"}]
  }'

Чтобы направить Anthropic SDK на Atlas Cloud, задайте base_url равным https://api.atlascloud.ai.

Поддерживается. system (строка или массив блоков), stop_sequences, tools с input_schema, tool_choice, thinking, блоки изображений (источники base64 и url), блоки document и tool_result. Блоки thinking от ассистента отображаются в вывод рассуждений.

Отличия, о которых стоит знать:

ПоведениеПодробности
stop_sequencesОбрезается до первых 4 записей
tool_choice: "any"Преобразуется в required
cache_controlИгнорируется, если целевая модель обслуживается через транслированный протокол, поэтому кэширование промптов не сработает
Встроенные серверные инструментыВеб-поиск, работа с компьютером и другие инструменты, размещённые у Anthropic, недоступны
POST /v1/messages/count_tokensНе реализован
МультимодальностьТолько изображения. Видео- и аудиочасти в этом протоколе не принимаются

Стриминг следует последовательности событий Anthropic: message_start, content_block_start, content_block_delta, content_block_stop, message_delta, message_stop. Маркера [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
  }'

Поддерживается. instructions, input во всех его формах, tools, tool_choice, reasoning.effort, text.formatjson_object, и json_schema), text.verbosity, temperature, top_p, stream, parallel_tool_calls.

Молча игнорируется — принимается без ошибки, но не даёт эффекта: previous_response_id, store, include, background, conversation, prompt, truncation, max_tool_calls, top_logprobs и reasoning.summary. Поле metadata возвращается в ответе, но не передаётся дальше.

Поскольку previous_response_id и store не действуют, состояние диалога на стороне сервера недоступно. Отправляйте полный диалог с каждым запросом.

Мультимодальность. Изображения и аудио. Видео в этом протоколе нет. Изображения передаются как {"type": "input_image", "image_url": "<url string>"} — обратите внимание, что значение здесь обычная строка, а не объект.

Стриминг выдаёт стандартный набор событий Responses и завершается событием response.completed, response.incomplete или response.failed. Маркера [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 обязателен для стриминга. Без него запрос вернёт 404.

Поддерживается. contents[] с ролями user и model, systemInstruction, generationConfig и tools.

Мультимодальность. Изображения, видео и аудио — встроенно через inline_data или по ссылке через file_data.file_uri.

Этот протокол обслуживают только модели, которые понимают его нативно. Модели, в идентификаторе которых есть nano, banana или omni, здесь отклоняются: для них используйте Chat Completions или эндпоинты генерации медиа.

OpenAI Images

Синхронная генерация изображений для клиентов, совместимых с 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 принимает multipart/form-data. Этот протокол объявляет лишь небольшое число моделей.

Это другой путь, отличный от основного конвейера изображений. Большинство моделей изображений — и все модели видео, аудио и 3D — используют асинхронные эндпоинты, описанные в разделе Предсказания. Перед выбором проверьте supported_apis модели.

Поведение шлюза

Шлюз нормализует несколько вещей по пути. Этого нет в исходных спецификациях, и это может удивить вас при отладке ответа:

ПоведениеОтносится кПодробности
Принудительная статистика использованияПотоковые запросыstream_options.include_usage выставляется в true, поэтому финальный чанк с usage приходит всегда
Системный промпт по умолчаниюChat Completions, Messages, ResponsesЕсли системный промпт не передан, подставляется "You are a helpful assistant."
Переписывание max_completion_tokensChat CompletionsПреобразуется в max_tokens
Нормализация флагов рассужденийChat Completionsenable_thinking, thinking.type и reasoning_effort: "none" приводятся к единому виду
Keep-alive-комментарииСтримингВ простое потоки отправляют SSE-строки-комментарии, начинающиеся с :. Клиенты обязаны их игнорировать
Лимит тела запросаВсе эндпоинты50 МБ. Более крупные полезные нагрузки возвращают 413 — используйте URL или загрузите файл

Что недоступно

Этих эндпоинтов на Atlas Cloud не существует. Запросы к ним не сработают вне зависимости от модели:

  • /v1/embeddings
  • /v1/rerank
  • /v1/audio/speech и /v1/audio/transcriptions — аудио идёт через аудио-эндпоинт
  • /v1/messages/count_tokens

Провайдеры вроде Ollama, Cohere и Bedrock не представлены как нативные протоколы. Модели многих вендоров доступны, но всегда через один из шести форматов выше.

Лимиты запросов и ошибки

Лимиты действуют на уровне аккаунта и на уровне модели. При превышении API возвращает 429.

Эндпоинты LLM не возвращают заголовки X-RateLimit-*, а ответы 429 на этих эндпоинтах не содержат Retry-After. Реализуйте экспоненциальное отступление на стороне клиента, а не полагайтесь на заголовки ответа.

Каждый ответ содержит заголовок X-Request-ID. Указывайте его при обращении в поддержку.

Связанные материалы

Last updated on

On this page