OpenCode
opencode.json で HopBase を OpenCode のカスタム OpenAI 互換プロバイダーとして追加します。
OpenCode はターミナル向けのオープンソースのコーディングエージェントです。opencode.json のカスタムプロバイダーで HopBase に接続し、内部では @ai-sdk/openai-compatible パッケージを使います。
| 設定 | 値 |
|---|---|
npm | @ai-sdk/openai-compatible |
options.baseURL | https://api.hop-base.com/v1 |
options.apiKey | {env:HOPBASE_API_KEY}(コンソールで作成したキー) |
| モデル ID | そのキーで GET /v1/models が返す ID をそのまま使います。例:deepseek-v4.1-flash-1017 |
本番環境で OpenCode 1.19 を使って検証済みです:opencode run が HopBase 経由で応答し、エージェントの組み込みツール(ファイルの読み取りなど)も動作します。
HopBase のキーが呼び出せるのは、そのキーに含まれるプランのモデルだけです。コンソールでキーを作成するときに、使いたいモデルを提供するプランを選んでください。たとえば deepseek-v4.1-flash-1017 なら DeepSeek、deepseek-v4.1-flash-1017-sg なら DeepSeek シンガポールデータセンター、gemini-3.8-flash なら Gemini 全モデル(画像生成含む) です。モデルのプランを含まないキーでは 404 model_not_found が返ります。
OpenCode を設定する
キーを環境変数に設定する
export HOPBASE_API_KEY=sk-your-key下の設定の {env:HOPBASE_API_KEY} はこの環境変数からキーを読み取るため、コミットされうるファイルにキーが残りません。
opencode.json にプロバイダーを追加する
プロジェクトディレクトリの opencode.json を作成または編集します。すべてのプロジェクトで使う場合は ~/.config/opencode/opencode.json に書きます:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"hopbase": {
"npm": "@ai-sdk/openai-compatible",
"name": "HopBase",
"options": {
"baseURL": "https://api.hop-base.com/v1",
"apiKey": "{env:HOPBASE_API_KEY}"
},
"models": {
"deepseek-v4.1-flash-1017": { "name": "DeepSeek V4.1 Flash" }
}
}
},
"model": "hopbase/deepseek-v4.1-flash-1017"
}models のキーは HopBase のモデル ID と完全に一致させ、そのキーで使えるモデルだけを並べてください。name は OpenCode に表示される名前にすぎません。model は <provider>/<モデル ID> の形式で既定のモデルを指定します。
モデル一覧を確認する
curl https://api.hop-base.com/v1/models \
-H "Authorization: Bearer $HOPBASE_API_KEY"models に並べた ID はすべてこのレスポンスに含まれている必要があります。含まれていない ID は、キーのどのプランでも提供されていません。
最初のリクエストを送る
opencode run "Reply with exactly one word: pong"opencode models hopbase で、OpenCode がこのプロバイダーから読み込んだモデルを一覧できます。対話 UI では /models で切り替えます。
モデルを追加する
models にモデル ID ごとに 1 項目追加します。1 つのキーに複数のプランを含められるので、1 つのプロバイダーで複数プランのモデルを扱えます:
"models": {
"deepseek-v4.1-flash-1017": { "name": "DeepSeek V4.1 Flash" },
"deepseek-v4.1-flash-1017-sg": { "name": "DeepSeek V4.1 Flash (Singapore)" },
"gemini-3.8-flash": { "name": "Gemini 3.8 Flash" }
}Claude モデルは Chat Completions ではなく Anthropic プロトコルを使います。Claude を使う場合は "npm": "@ai-sdk/anthropic" のプロバイダーをもう 1 つ追加し、baseURL には同じく https://api.hop-base.com/v1 を指定します(このパッケージが /messages を自動で付け加えます)。キーは Claude のプランを含むものを使ってください。
各モデルの価格は料金ページを参照してください。
トラブルシューティング
| 症状 | 原因 |
|---|---|
すべてのリクエストが 401 | OpenCode を起動したシェルで HOPBASE_API_KEY が設定されていない |
404 model_not_found | キーにモデルのプランが含まれていない、または models の ID が省略されている。GET /v1/models を確認し直してください |
route_not_found | キーがチャットエンドポイントを持たない画像・動画プランのもの |
スクリプトから opencode run を呼ぶと出力がないまま待ち続ける | 標準入力も読み取るためです。opencode run "…" < /dev/null のようにリダイレクトしてください |
次のステップ
- 利用可能なモデル:キーで使えるモデル ID を確認する
- Vercel AI SDK:同じプロバイダーパッケージを自分のコードで直接使う
- トラブルシューティング:エラーメッセージから原因を調べる