コーディングツール
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 を追加する
- Chat ビューでモデルピッカーを開き、Manage Language Models(歯車アイコン)を選択します。またはコマンドパレットで Chat: Manage Language Models を実行します。
- Add Models → Custom Endpoint を選択します。
- VS Code が Group Name の入力を求めます。欄には
Custom Endpointが入力済みなので、TokenLabに書き換えて Enter を押します。 - 続けて TokenLab: API Key という入力欄がすぐに開きます。TokenLab API キーを貼り付けて Enter を押します。VS Code はキーをシークレットストレージに保存します。
- VS Code が API の種類を尋ねてきたら、Chat Completions を選択します。この手順は表示されない場合があります。どちらの場合も、下のファイルの
apiTypeで設定されます。 - 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 の残高から課金されます。
確認する
- モデルピッカーで GPT-5.6 Luna (TokenLab) を選択します(低コストのモデルで、最初のテストに向いています)。
- まず読み取り専用の質問をします。例:
Summarize the top-level structure of this workspace. Do not modify files. - エージェントタスクを実行する前に、返答と対応するリクエスト記録を確認します。
設定の保存やモデル一覧の表示だけでは、キーが有効かどうかはわかりません。プロンプトを送ると 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:...} を残してください。