本文へスキップ

OpenCode

opencode.json で HopBase を OpenCode のカスタム OpenAI 互換プロバイダーとして追加します。

OpenCode はターミナル向けのオープンソースのコーディングエージェントです。opencode.json のカスタムプロバイダーで HopBase に接続し、内部では @ai-sdk/openai-compatible パッケージを使います。

設定値
npm@ai-sdk/openai-compatible
options.baseURLhttps://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 のプランを含むものを使ってください。

各モデルの価格は料金ページを参照してください。

トラブルシューティング

症状原因
すべてのリクエストが 401OpenCode を起動したシェルで HOPBASE_API_KEY が設定されていない
404 model_not_foundキーにモデルのプランが含まれていない、または models の ID が省略されている。GET /v1/models を確認し直してください
route_not_foundキーがチャットエンドポイントを持たない画像・動画プランのもの
スクリプトから opencode run を呼ぶと出力がないまま待ち続ける標準入力も読み取るためです。opencode run "…" < /dev/null のようにリダイレクトしてください

次のステップ