コアガイド
移行ガイド
OpenAI、Anthropic、Gemini、およびメディアワークロードを、本番環境で安全かつ最小限の変更でTokenLabへ移行する方法を解説します。
TokenLabはマルチフォーマットに対応しています。OpenAI互換クライアント、AnthropicネイティブのMessages呼び出し、GeminiネイティブのREST呼び出し、そしてメディアエンドポイントを、それぞれの自然な形式のまま維持できます。最も安全な移行方法は、すべてのワークロードを一つの汎用フォーマットに変換しようとしないことです。アプリケーションが必要とする動作を保持するルートを選択してください。
ルートマッピング
| 既存のワークロード | TokenLabベースURL | プライマリエンドポイント | 移行の注意点 |
|---|---|---|---|
| OpenAI Chat Completions | https://api.tokenlab.sh/v1 | /chat/completions | OpenAI互換のチャットおよび関数呼び出しへの最小限の変更 |
| OpenAI Responses | https://api.tokenlab.sh/v1 | /responses | アプリがResponses固有の入力、ツール、または出力処理に依存している場合に使用 |
| Anthropic SDK | https://api.tokenlab.sh | /v1/messages | SDKのベースURLに /v1 を追加しないでください |
| Gemini REST | https://api.tokenlab.sh | /v1beta/models/:model:generateContent | GeminiネイティブのフィールドはGeminiルートで維持してください |
| メディア生成 | https://api.tokenlab.sh/v1 | /images, /videos, /music, /3d | recommended_for でモデルを検索し、ドキュメントに従って非同期ポーリングを想定してください |
| 管理および請求 | https://api.tokenlab.sh/v1 | /management/... | サーバーサイドでの利用や請求照合には管理用トークンを使用してください |
クイック移行レシピ
OpenAIからTokenLabへ
SDKの base_url / baseURL を https://api.tokenlab.sh/v1 に変更するだけです。ロールアウトを容易にするため、既存のOpenAI APIキーの環境変数名はそのまま使用可能です。モデルIDは GET /v1/models を確認した後に置き換えてください。
OpenRouterからTokenLabへ
以前OpenRouterのOpenAI互換ベースURLを使用していた箇所で https://api.tokenlab.sh/v1 を使用してください。プロバイダー接頭辞付きのモデルIDを削除し、/v1/models から取得したTokenLabのパブリックモデルIDを使用します。ワークロードがClaude MessagesやGeminiの generateContent を必要とする場合は、OpenAI互換チャット経由で無理に実行せず、ネイティブのTokenLabエンドポイントへ移行してください。
LiteLLMからTokenLabへ
LiteLLMの custom_openai/<model> ルートを使用し、api_base: https://api.tokenlab.sh/v1 を設定してください。LiteLLMのエイリアスと実際のTokenLabモデルIDを分離しておくことで、アプリケーションのプロンプトを変更することなくルーティングポリシーを変更できます。
TokenLab経由のClaude Messages
Anthropic SDKクライアントの接続先を https://api.tokenlab.sh に設定し、messages.create を呼び出します。SDKのベースURLに /v1 を追加しないでください。SDKが /v1/messages パスを管理します。
TokenLab経由のGeminiネイティブ
Geminiのペイロードは https://api.tokenlab.sh/v1beta/models/{model}:generateContent に維持してください。アプリがGeminiの動作に依存している場合、Geminiネイティブの contents、parts、ファイル、キャッシュされたコンテンツ、関数宣言、および組み込みツールはこのルートで維持する必要があります。
OpenAI互換の移行
from openai import OpenAI
client = OpenAI(
api_key="sk-your-tokenlab-key",
base_url="https://api.tokenlab.sh/v1",
)
response = client.chat.completions.create(
model="gpt-5.6-terra",
messages=[{"role": "user", "content": "Hello from TokenLab"}],
)既存のリトライ、タイムアウト、ストリーミングコードはそのまま維持できますが、本番環境のトラフィックを流す前に GET /v1/models でモデルIDを検証してください。画像生成については、model を明示的に送信し、画像ガイドを確認してください。画像モデルはチャットモデルよりも差異が大きいためです。
Anthropicの移行
from anthropic import Anthropic
client = Anthropic(
api_key="sk-your-tokenlab-key",
base_url="https://api.tokenlab.sh",
)
message = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Reply with: Connected to TokenLab."}],
)Claudeネイティブのツール使用、思考フロー、およびAnthropicのメッセージセマンティクスには /v1/messages を使用してください。OpenAI互換の動作変更を意図的に行いたい場合を除き、Anthropic専用フィールドをChat Completions経由で変換しないでください。
Geminiの移行
curl "https://api.tokenlab.sh/v1beta/models/gemini-3.5-flash:generateContent" \
-H "Authorization: Bearer sk-your-tokenlab-key" \
-H "Content-Type: application/json" \
-d '{"contents":[{"parts":[{"text":"Hello"}]}]}'アプリがGeminiネイティブの動作に依存している場合は、Geminiの組み込みツール、File API参照、キャッシュされたコンテンツ、関数宣言、およびネイティブのコンテンツパーツを /v1beta で維持してください。
メディアの移行
GET /v1/models?recommended_for=image|video|music|3dをクエリします。- リストレスポンス内の
GET /v1/modelsおよび利用可能な場合は完全なGET /v1/models/{model}を読み取ります。 - 特に画像エンドポイントでは、
modelを明示的に送信します。 - 非同期ジョブ用に
task_id、poll_url、エンドポイント、モデル、および独自のジョブIDを保存します。 - 費用の照合はプロバイダーのタスクIDではなく、使用量レコードと
billing_transaction_idを通じて行います。
メディアワークロードは、レイテンシ、リトライ、最終的なアセットの挙動がチャット補完とは異なるため、独自のロールアウト計画が必要です。
本番環境ロールアウト計画
| フェーズ | 目標 | チェック項目 |
|---|---|---|
| 1. インベントリ | エンドポイント、モデル、リクエストフィールド、ストリーミング/非同期動作、請求所有者をリスト化 | プロバイダー固有の隠れたフィールドがパブリックであると想定されていないか |
| 2. 単一ルートのパイロット | 1つのエンドポイントと1つのモデルファミリーを移行 | レスポンスの形状、コスト、ログが期待通りか |
| 3. シャドウまたはサンプル | 選択した出力を以前のプロバイダーと比較 | ユーザーから見える品質とレイテンシが許容範囲内か |
| 4. 段階的ロールアウト | キー、組織、またはフィーチャーフラグごとにトラフィックを増加 | 4xx、5xx、レイテンシ、残高、重複する非同期ジョブを監視 |
| 5. クリーンアップ | 安定稼働を確認した後にのみ古いプロバイダーのパスを削除 | ロールバックパスとサポートプレイブックが文書化されているか |
移行の落とし穴
- アプリがネイティブのAnthropic、Gemini、またはResponsesの動作を必要とする場合、すべてのモデルを1つのOpenAI Chat Completionsパスの背後に配置しないでください。
- 古い画像のデフォルト設定を前提としないでください。
modelは明示的に送信してください。 - タスクが既に作成されているかを確認せずに、非同期作成リクエストをリトライしないでください。
- プロバイダー固有の識別子をログやUIに公開しないでください。
- 請求額をプロバイダーのタスクIDで比較しないでください。TokenLabの使用量レコードを使用してください。
APIリファレンス
| トピック | リファレンス |
|---|---|
| マルチフォーマットAPI | Multi-Format API |
| OpenAI SDK | OpenAI SDK |
| Anthropic SDK | Anthropic SDK |
| Geminiネイティブ | Gemini Native API |
| 画像生成 | 画像生成 |
| 非同期ジョブとポーリング | 非同期ジョブとポーリング |