LLM API プロトコル

Atlas Cloud は OpenAI Chat Completions、Completions、Responses、Images、Anthropic Messages、Google Gemini に対応。キー 1 つ、ベース URL 1 つで 6 つのワイヤーフォーマットを扱えます。

Atlas Cloud は、同じベース URL と同じ API キーで 6 種類のリクエスト形式を受け付けます。既存の 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/editsOpenAI クライアントから同期的に画像を呼び出す場合
Anthropic MessagesPOST /v1/messagesすでに Anthropic SDK や Claude Code を使っている場合
Google GeminiPOST /v1beta/models/{model}:generateContentすでに Google GenAI SDK を使っている場合

すべてのモデルがすべてのプロトコルに対応しているわけではありません。各モデルは supported_apis のリストを公開しているので、形式を切り替える前に確認してください。リストは順序付きで、先頭がそのモデルの推奨プロトコルです。たとえば Gemini 系のモデルは、マルチモーダル機能をフルに使えるのはネイティブの Gemini 形式だけです。

認証

API キーは 4 種類のヘッダー形式のいずれでも利用できるため、他プロバイダー向けに作られた SDK でも変更なしで認証できます:

-H "Authorization: Bearer $ATLASCLOUD_API_KEY"

推奨。すべてのプロトコルで利用できます。

Atlas Cloud の API キーは 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 を使う場合 — 変更するのは 2 行だけです:

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)。

構造化出力。 json_mode または structured_outputs を公開しているモデルでは、response_format に {"type": "json_object"} と json_schema 定義の両方を指定できます。

ツール呼び出し。 tools を公開しているモデルでは、tools、tool_choice、parallel_tool_calls がそのまま渡されます。

マルチモーダル入力。 画像、動画、音声をコンテンツパートとして添付できます:

{
  "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 は OpenAI の仕様を拡張した Atlas Cloud 独自の機能です。音声はインラインの Base64 である必要があり、input_audio に 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"}]
  }'

Anthropic SDK の base_url を https://api.atlascloud.ai に設定すれば、Atlas Cloud に向けられます。

サポート対象。 system(文字列またはブロック配列)、stop_sequences、input_schema 付きの tools、tool_choice、thinking、画像ブロック(base64 と url の両方のソース)、document ブロック、tool_result。アシスタントの thinking ブロックは推論出力にマッピングされます。

知っておくべき差異:

挙動詳細
stop_sequences先頭 4 件に切り詰められます
tool_choice: "any"required にマッピングされます
cache_control対象モデルが変換されたプロトコル経由で提供される場合は無視されるため、プロンプトキャッシュは適用されません
組み込みサーバーツールWeb 検索、コンピュータ操作など、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.format(json_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 を返します。

サポート対象。 user と model ロールを含む contents[]、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 に設定され、最後に必ず使用量チャンクが届きます
デフォルトのシステムプロンプトChat Completions、Messages、Responsesシステムプロンプトを送らない場合、"You are a helpful assistant." が挿入されます
max_completion_tokens の書き換えChat Completionsmax_tokens に変換されます
推論フラグの正規化Chat Completionsenable_thinking、thinking.type、reasoning_effort: "none" が統一されます
キープアライブコメントストリーミングアイドル状態のストリームは : で始まる SSE コメント行を送出します。クライアントはこれを無視する必要があります
リクエストボディの上限すべてのエンドポイント50 MB。これを超えると 413 が返るので、URL を使うか ファイルをアップロード してください

利用できないもの

以下のエンドポイントは Atlas Cloud には存在しません。どのモデルを指定してもリクエストは通りません:

  • /v1/embeddings
  • /v1/rerank
  • /v1/audio/speech と /v1/audio/transcriptions — 音声は 音声エンドポイント を経由します
  • /v1/messages/count_tokens

Ollama、Cohere、Bedrock などのプロバイダーは、ネイティブプロトコルとしては提供していません。多数のベンダーのモデルを利用できますが、必ず上記 6 形式のいずれかを経由します。

レート制限とエラー

レート制限はアカウント単位およびモデル単位で適用されます。上限を超えると API は 429 を返します。

LLM エンドポイントは X-RateLimit-* ヘッダーを 返しません。またこれらのエンドポイントの 429 レスポンスに Retry-After は含まれません。レスポンスヘッダーに頼らず、クライアント側で指数バックオフを実装してください。

すべてのレスポンスには X-Request-ID ヘッダーが付きます。サポートに問い合わせる際は、この値を添えてください。

関連ドキュメント

Last updated on

On this page