コアガイド

API 形式

Chat Completions、Responses、Messages、Gemini の選び方

1 つの TokenLab API キーを 4 種類の API 形式で利用できます。アプリが使っている形式を優先し、モデルページまたは GET /v1/models/{model} の tokenlab.accepted_request_formats を確認してください。すべてのモデルが 4 形式に対応するわけではありません。

Chat Completions

POST /v1/chat/completions · openai_chat_completions

既存の OpenAI 互換チャットクライアント、会話履歴、ストリーミング、モデルが対応する関数呼び出しに適しています。他形式固有のフィールドは利用できるとは限りません。

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["TOKENLAB_API_KEY"],
    base_url="https://api.tokenlab.sh/v1",
)

response = client.chat.completions.create(
    model="gpt-5.6-luna",
    messages=[{"role": "user", "content": "Hello!"}],
)

print(response.choices[0].message.content)

Responses

POST /v1/responses · openai_responses

モデルの accepted_request_formats に openai_responses がある場合に使用します。作成、取得、圧縮、削除、ストリーミング、WebSocket での作成と継続、対応モデルのバックグラウンド応答を扱えます。保存済み応答の削除は実行中の応答をキャンセルしません。

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["TOKENLAB_API_KEY"],
    base_url="https://api.tokenlab.sh/v1",
)

response = client.responses.create(
    model="gpt-5.6-terra",
    input="Explain why the sky is blue in two sentences.",
)

print(response.output_text)

Anthropic Messages

POST /v1/messages · anthropic_messages

Anthropic SDK の base URL は TokenLab のホストを指定し、/v1 を付けません。Claude のツール呼び出し、thinking ブロック、プロンプトキャッシュのフィールドは Messages 形式で使用します。

import os
from anthropic import Anthropic

client = Anthropic(
    api_key=os.environ["TOKENLAB_API_KEY"],
    base_url="https://api.tokenlab.sh",
)

message = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=512,
    messages=[{"role": "user", "content": "Hello!"}],
)

print(message.content[0].text)

Gemini

POST /v1beta/models/:model:generateContent · gemini_generate_content

既存の Gemini contents、parts、ファイル、キャッシュ、ツールを使う場合に適しています。ProtoJSON の lowerCamelCase と元の snake_case の両方を受け付けますが、同じフィールドを両方の表記で送信しないでください。

curl "https://api.tokenlab.sh/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "Authorization: Bearer $TOKENLAB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{"parts": [{"text": "Hello!"}]}]
  }'

会話の形式を統一する

会話状態とツール結果の表現は形式ごとに異なります。会話全体で同じ形式を使い、履歴を移行する際はアプリ内で変換して検証してください。

未知のフィールド

フィールドが転送されても、モデルが対応しているとは限りません。選択したモデルに明記された機能を使い、未対応フィールドのエラーを処理してください。

関連ドキュメント

このページの内容