コーディングツール

Visual Studio Code

Custom Endpoint プロバイダーを使って VS Code のチャットで TokenLab のモデルを使う

概要

VS Code のチャットでは、Custom Endpoint(BYOK、自分のキーを持ち込む方式)で独自のモデルプロバイダーを使えます。このページでは Chat Completions API で TokenLab に接続します。

  • チャットに Copilot プランは不要です。 VS Code の BYOK モデルは GitHub にサインインしなくても使えます。
  • 一部の機能には引き続き GitHub が必要です: インライン候補(コード補完)、セマンティック検索、その他の埋め込み(embedding)ベースの機能は BYOK モデルでは提供されません。TokenLab のキーでは代替できません。
  • Copilot Business または Enterprise のユーザー:管理者が Bring Your Own Language Model Key in VS Code ポリシーを許可している必要があります。

必要なもの

  • Chat ビューを備えた最新の安定版 VS Code。
  • TokenLab API キー(取得する)。
  • openai_chat_completions を受け付け、ツール呼び出しに対応したモデル(エージェントモードにはツール呼び出し対応モデルだけが表示されます)。モデルの詳細ページでは、API 形式に Chat Completions API、機能に Tool use と表示されます。例:GPT-5.6 Luna。

TokenLab を追加する

  1. Chat ビューでモデルピッカーを開き、Manage Language Models(歯車アイコン)を選択します。またはコマンドパレットで Chat: Manage Language Models を実行します。
  2. Add Models → Custom Endpoint を選択します。
  3. VS Code が Group Name の入力を求めます。欄には Custom Endpoint が入力済みなので、TokenLab に書き換えて Enter を押します。
  4. 続けて TokenLab: API Key という入力欄がすぐに開きます。TokenLab API キーを貼り付けて Enter を押します。VS Code はキーをシークレットストレージに保存します。
  5. VS Code が API の種類を尋ねてきたら、Chat Completions を選択します。この手順は表示されない場合があります。どちらの場合も、下のファイルの apiType で設定されます。
  6. VS Code が chatLanguageModels.json を開きます。ウィザードが生成した apiKey の行(シークレットストレージ内のキーを指します)はそのまま残し、apiType が chat-completions であることを確認して、models のリストを下の内容に合わせて編集し、保存します。

キーはウィザードで入力してください。chatLanguageModels.json に直接書いたキーは送信されず、Authorization ヘッダーがないためにリクエストが失敗します。

[
  {
    "name": "TokenLab",
    "vendor": "customendpoint",
    "apiKey": "${input:tokenlabApiKey}",
    "apiType": "chat-completions",
    "models": [
      {
        "id": "gpt-5.6-luna",
        "name": "GPT-5.6 Luna (TokenLab)",
        "url": "https://api.tokenlab.sh/v1/chat/completions",
        "toolCalling": true,
        "vision": true,
        "maxInputTokens": 200000,
        "maxOutputTokens": 32000
      },
      {
        "id": "claude-sonnet-5-5",
        "name": "Claude Sonnet 5.5 (TokenLab)",
        "url": "https://api.tokenlab.sh/v1/chat/completions",
        "toolCalling": true,
        "vision": true,
        "maxInputTokens": 200000,
        "maxOutputTokens": 32000
      },
      {
        "id": "gpt-6.1-sol",
        "name": "GPT-6.1 Sol (TokenLab)",
        "url": "https://api.tokenlab.sh/v1/chat/completions",
        "toolCalling": true,
        "vision": false,
        "maxInputTokens": 200000,
        "maxOutputTokens": 32000
      }
    ]
  }
]

補足:

  • URL は /chat/completions まで含めて完全に書いてください。API パスを明示した URL は、VS Code がそのまま使います。
  • Chat Completions タイプでは、VS Code は Authorization: Bearer <key> を送信します。これは TokenLab が想定している形式です。独自の認証ヘッダーは追加しないでください。
  • id はリクエストで送信される TokenLab のモデル ID です。accepted_request_formats に openai_chat_completions を含む提供中のモデルであれば使えます。
  • トークン上限:VS Code は maxInputTokens + maxOutputTokens をコンテキストウィンドウとして扱います。上の値は控えめな設定です。モデル詳細ページに記載された上限まで引き上げられます。コンテキストが大きいほど、1 リクエストあたりの費用は高くなります。
  • モデルがピッカーに表示されない場合は、VS Code を再起動してください。

GitHub にサインインしない場合

タイトル生成、コミットメッセージなどのバックグラウンドの「utility」タスクは、既定で GitHub Copilot のモデルを使います。Copilot にサインインしていない場合は、chat.utilityModel と chat.utilitySmallModel に TokenLab のモデル(small には高速で安価なモデル)を設定するか、chat.byokUtilityModelDefault を Main Agent Model に設定してください。これらのバックグラウンド呼び出しは TokenLab の残高から課金されます。

確認する

  1. モデルピッカーで GPT-5.6 Luna (TokenLab) を選択します(低コストのモデルで、最初のテストに向いています)。
  2. まず読み取り専用の質問をします。例:Summarize the top-level structure of this workspace. Do not modify files.
  3. エージェントタスクを実行する前に、返答と対応するリクエスト記録を確認します。

設定の保存やモデル一覧の表示だけでは、キーが有効かどうかはわかりません。プロンプトを送ると TokenLab の残高を消費します。

トラブルシューティング

  • Authorization ヘッダーがない: キーがシークレットストレージにありません。Add Models → Custom Endpoint をもう一度実行し、JSON ファイルではなくウィザードでキーを入力してください。
  • 401 / 認証失敗: Manage Language Models → TokenLab グループの横の歯車アイコンから、キーを入力し直してください。
  • モデルが見つからない: id は TokenLab のモデル ID と完全に一致している必要があります。モデル詳細ページで確認してください。
  • エージェントモードにモデルが出ない: "toolCalling": true を設定し、ツール使用に対応したモデルを使ってください。
  • Messages または Responses の API タイプ: このページではまだ扱っていません。Chat Completions を使ってください。

API キーを chatLanguageModels.json や Git で管理しているファイルにコミットしないでください。ファイルには ${input:...} を残してください。

このページの内容