HopBase への移行
3 つの値を変えるだけで、OpenAI・OpenRouter・Anthropic API から HopBase へ移行できます。
移行で変えるのは Base URL、キー、必要に応じてモデル ID の 3 つだけです。リクエストボディ、ストリーミング処理、エラー処理のコードは変わりません。
変更する項目
| OpenAI | OpenRouter | Anthropic | HopBase | |
|---|---|---|---|---|
| Base URL | https://api.openai.com/v1 | https://openrouter.ai/api/v1 | https://api.anthropic.com | OpenAI プロトコル:https://api.hop-base.com/v1Anthropic プロトコル: https://api.hop-base.com(/v1 なし) |
| キー | OpenAI のキー | 1 つの OpenRouter キーで全モデル | Anthropic のキー | 「APIキー」で作成する sk-…。1〜10 個のグループを含められる |
| モデル ID | gpt-5.5 | openai/gpt-5.5、anthropic/claude-sonnet-5 | claude-sonnet-5 | ベンダー接頭辞なし。GET /v1/models が返す ID をそのまま使用:gpt-5.5、claude-sonnet-5 |
モデルファミリーごとのプロトコルは Base URL とプロトコルを参照してください。
必要なグループをキーに追加してください。OpenRouter のキーは全モデルを呼び出せますが、HopBase のキーが呼び出せるのは、キーに含まれるグループ(プラットフォームをまたいで 1〜10 個)のモデルです。GET /v1/models はそれらのグループのモデルの和集合を返し、どのグループにもないモデルは 404 model_not_found になります。Claude と GPT の両方を使うアプリは、Claude グループと Codex Plus または Codex Pro グループを含む 1 つのキーで済み、各リクエストはそのモデルを処理するグループで課金されます。モデルが重複するグループ(Codex Plus と Codex Pro など)は同じキーに入れられず(GPT 公式ダイレクト(Azure)と Codex グループ・GPT Image 全モデルの併用は例外。グループの選び方を参照)、サブスクリプション型のグループは単独でキーにする必要があります。
OpenAI SDK
Base URL を設定し、キーを差し替えます。gpt-5.5 などの OpenAI モデル ID は、キーの GET /v1/models に含まれていればそのままで構いません。
import os
from openai import OpenAI
client = OpenAI(
- api_key=os.environ["OPENAI_API_KEY"],
+ base_url="https://api.hop-base.com/v1",
+ api_key=os.environ["HOPBASE_OPENAI_API_KEY"],
)
resp = client.chat.completions.create(
model="gpt-5.5",
messages=[{"role": "user", "content": "Hello"}],
)コードを変えたくない場合、どちらの SDK も環境変数 OPENAI_BASE_URL と OPENAI_API_KEY を読み込みます。それぞれ https://api.hop-base.com/v1 と HopBase のキーを設定してください。ほかの例は OpenAI SDK にあります。
Anthropic SDK
Claude は Anthropic Messages API のまま使います。Base URL は /v1 を付けず、キーは「Claude Max エンタープライズ版」グループのものを使ってください。「Claude Max(ccmax)」グループのキーは Claude Code クライアント専用で、SDK からの呼び出しは失敗します。
import os
from anthropic import Anthropic
client = Anthropic(
- api_key=os.environ["ANTHROPIC_API_KEY"],
+ base_url="https://api.hop-base.com",
+ api_key=os.environ["HOPBASE_CLAUDE_API_KEY"],
)
msg = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}],
)こちらも環境変数だけで切り替えられます:ANTHROPIC_BASE_URL=https://api.hop-base.com。詳細は Anthropic SDK を参照してください。
OpenRouter
Base URL とキーを変え、モデル名からベンダー接頭辞を外し、OpenRouter の帰属ヘッダーを削除します。HopBase では不要です。
import os
from openai import OpenAI
client = OpenAI(
- base_url="https://openrouter.ai/api/v1",
- api_key=os.environ["OPENROUTER_API_KEY"],
- default_headers={"HTTP-Referer": "https://your-app.example", "X-Title": "Your App"},
+ base_url="https://api.hop-base.com/v1",
+ api_key=os.environ["HOPBASE_OPENAI_API_KEY"],
)
resp = client.chat.completions.create(
- model="openai/gpt-5.5",
+ model="gpt-5.5",
messages=[{"role": "user", "content": "Hello"}],
)OpenRouter の OpenAI 互換エンドポイント経由で Claude を呼んでいた場合、HopBase には Claude 用のその経路はありません。前節のとおり、Claude グループのキーで Anthropic SDK に切り替えてください。その他のファミリー(Gemini、GLM、Qwen、DeepSeek、Kimi、Grok)は OpenAI SDK のまま、各ファミリーのグループを含むキーを使います。
非対応の機能
| 使っている可能性があるもの | HopBase での扱い |
|---|---|
/v1/chat/completions または /v1/responses での Claude | 404。Anthropic Messages を使用:Anthropic SDK |
Gemini SDK ネイティブパス(:generateContent)での Gemini | 「Gemini 公式ダイレクト(エンタープライズ)」で対応:SDK の Base URL を https://api.hop-base.com に変更するだけです。「Gemini 特価版(AI Studio / Vertex)」は非対応:Gemini チャット |
/v1/responses・/v1/messages での Kimi K3 | Chat Completions のみ:Kimi K3 |
| Embeddings、音声文字起こし、Files、Batch、Assistants、ファインチューニング、モデレーション | 提供なし。これらのパスは 404 |
| 1 つのキーで全モデル | モデルが重複しない限り(GPT 公式ダイレクト(Azure)と Codex グループ・GPT Image 全モデルの併用は例外)、1 つのキーにプラットフォームをまたいで最大 10 個のグループを含められます(上記参照) |
OpenRouter のモデルフォールバック一覧(models)、provider ルーティング、:online / :free などのモデル接尾辞 | 非対応。削除して単一のモデル ID を送信 |
エンドポイントの一覧は Base URL とプロトコルにあります。
移行後の確認
キーのモデル一覧を取得
新しいキーで GET https://api.hop-base.com/v1/models を呼び、レスポンスに含まれる ID だけを使います。
小さなリクエストを 1 つ送信
「ok とだけ返答して」と依頼し、200 を確認します。404 の多くは、モデルがこのキーのどのグループにも無いか、Base URL のプロトコルが違うことが原因です。エラーコードと再試行を参照してください。
キーの利用可能額を確認
GET https://api.hop-base.com/v1/usage がキーの利用可能残高を返します。項目の説明はアカウント・カタログ APIにあります。
次のステップ
- クイックスタート: キーを作成して最初のリクエストを送る
- 利用可能なモデル: キーで使えるモデル ID を確認する
- アカウント・カタログ API: API で残高・使用量・モデルカタログを確認する
- エラーコードと再試行: 各エラーコードの意味と再試行の要否