Visual Studio Codeをローカルおよびリモートのモデルエンドポイントに接続する

Visual Studio CodeはチャットビューをローカルホストモデルのOpenAI互換推論エンドポイントに接続できます。 エンドポイントはVisual Studio Codeと同じWindows 11デバイス上で動作するか、1つ以上のリモートWindows 11クライアントからアクセスするためにWindows Server上で動作可能です。 これらのトポロジーにより、開発者デバイス上で推論を保持したり、Windows ServerでVisual Studio Codeを動かさずにモデル計算を集中管理したりできます。

この記事では、既存のエンドポイントをVisual Studio Codeのカスタムエンドポイントとして追加し、そのモデルを選択して、モデルが応答しているかを確認します。 この手続きは、推論エンドポイントがすでに実行されており、Visual Studio Codeからアクセス可能であることを前提としています。

ローカルおよびリモートモデルエンドポイントの前提条件

  • Visual Studio Codeの最新安定版をダウンロードし、チャットビューにアクセスできることを確認してください。
  • 既存のOpenAI互換エンドポイントで、チャットコンプリートAPIをサポートし、Visual Studio Codeを実行しているコンピュータからアクセス可能です。
  • Windows Server上でホストされたリモートエンドポイントの場合、Windows 11クライアントからサーバーへのネットワーク接続とエンドポイントポートが関係します。 Windowsのファイアウォールと、接続を許可する中間ファイアウォールやプロキシを設定してください。 エンドポイントをループバックアドレスだけでなく、リモートクライアントが到達可能なネットワークインターフェースで受信するように設定してください。
  • ホスト名を使用するリモートエンドポイントの場合、Windows 11クライアントがWindows Serverホストに解決できるドメインネームシステム(DNS)レコードがあります。
  • リモートHTTPSエンドポイントの場合、Windows 11クライアントが信頼し、その件名または代替件名がエンドポイントのURL内のホスト名と一致する有効なTLS証明書です。
  • エンドポイントアクセス制御により、Windows 11クライアントがチャットコンプリートルートを呼び出せるようになります。 エンドポイント管理者から必要なAPIキーやトークンを取得してください。
  • 同一デバイス推論の場合、エンドポイントが公開するループバックURL(例えば http://localhost:<port>/v1/chat/completions)。
  • リモート推論には、 https://<server-name>:<port>/v1/chat/completionsのような信頼できるHTTPSURLが使われます。
  • 正確なモデルID;モデル表示名(Visual Studio Codeが言語モデルピッカーで表示)、コンテキスト制限;およびエンドポイント所有者やモデルドキュメントから提供されるサポート機能。
  • エンドポイントの認証ヘッダー要件。
  • もしあなたの組織がGitHub Copilotを管理しているなら、VS Codeで「Bring Your Own Language Model Key」ポリシーを有効にする必要があります。 詳細については、VS Code で独自の言語モデル キーを使用するを参照してください。

チャットで「自分で持ってくる鍵」モデルを使うのに、GitHubアカウントやGitHub Copilotプランは必要ありません。 カスタムエンドポイントは、GitHub Copilotサービスに依存したインライン提案、セマンティックサーチ、埋め込みなどの機能を提供していません。

カスタムのローカルまたはリモートモデルエンドポイントを追加してください

同じ手続きは、同じWindows 11デバイス上のエンドポイントや、Windows Server上のリモートOpenAI互換エンドポイントをサポートしています。 Visual Studio Codeは1つのエンドポイントURLに接続し、エンドポイントサービスはバックエンドの推論配信を管理します。

  1. Visual Studio Codeでチャットビューを開きます。

  2. 言語モデルピッカーを開き、「言語モデル管理」(歯車アイコン)を選択します。

    また、 コマンドパレット を開いて「 Chat: Manage Language Models」を実行することもできます。

  3. 言語モデルエディターで「モデルを追加」を選択し、その後「カスタムエンドポイント」を選択してください。

  4. グループ名を入力してください。 この名前は 、言語モデルピッカー および 言語モデル エディターでエンドポイントのモデルを識別します。

  5. モデルの表示名とエンドポイントのAPIキーを入力します。

  6. APIタイプについては「 チャット完了」を選択してください。

  7. Visual Studio Code開いたchatLanguageModels.jsonファイルでモデルプロパティを設定し、ファイルを保存します。

    エンドポイントとモデルのドキュメントを使ってプロパティを設定してください。 最低限、以下の値を確認してください:

    プロパティ 価値
    id エンドポイントが期待する正確なモデルIDです。
    name Visual Studio Codeが言語モデルピッカーで表示するモデルの表示名。
    url https://<server-name>:<port>/v1/chat/completionsのようなフルルート。
    apiType chat-completions
    toolCalling true エンドポイントとモデルがツール呼び出しをサポートしている場合のみです。
    vision true エンドポイントとモデルが画像入力をサポートしている場合のみです。
    maxInputTokens モデルがサポートする最大入力トークン数。
    maxOutputTokens モデルでサポートされる最大出力トークン数。

    APIキーを直接chatLanguageModels.jsonに入れるのではなく、生成されたapiKey入力参照を保持してください。 Visual Studio Code は、Chat Completions のカスタム エンドポイントに対して、既定で Authorization: Bearer <api-key> ヘッダー内にキーを送信します。

    エンドポイントが異なる認証ヘッダーを必要とする場合は、モデルの requestHeaders プロパティを設定し、 ${apiKey} トークンをヘッダー値として使用します。 設定ファイルに生の秘密情報を入れないでください。 サポートされたプロパティと認証動作については、 カスタムエンドポイント設定リファレンスを参照してください。

ローカルまたはリモートのエンドポイントモデルを選択して検証します

  1. チャットビューに戻り、言語モデルピッカーを開きます。

  2. 設定したグループ名のモデルを選択します。

  3. 例えば、短いテストプロンプトを挿入してください。

    Reply with one sentence that confirms you received this request.
    
  4. チャットビューに選択したモデルからの応答が表示されているか確認してください。

  5. 推論エンドポイントログにアクセスできる場合は、エンドポイントが設定済みモデルIDのリクエストを受け取ったか確認してください。

選択したモデルが応答を返し、エンドポイントがリクエストを記録した時点で、設定は動作しています。

注:

モデルはチャット内のエージェントが利用できるツールコールをサポートしなければなりません。 エンドポイントやモデルがその機能をサポートしていない限り、 toolCalling を true に設定しないでください。

Visual Studio Codeにおけるローカルおよびリモートモデルエンドポイントのトラブルシューティング

問題 確認すべきこと
カスタムエンドポイント は利用できません Visual Studio Codeの最新安定版へのアップデート。 もしあなたの組織がGitHub Copilotを管理しているなら、組織が「Bring your-Own Key」ポリシーを有効にしているか確認してください。
モデルはモデルピッカーに表示されません chatLanguageModels.json保存してから再起動Visual Studio Code。 制限モードのワークスペースでは、ワークスペースがモデルリスト全体を復元することを信頼してください。 エージェント使用の場合、モデルがツール呼び出しをサポートしていること、 toolCalling が trueであることも確認してください。
エンドポイントは認証エラーを返します APIキーが最新であること、そしてその認証ヘッダーがエンドポイントの要件と一致しているかを確認してください。 エンドポイントが別のヘッダーを必要とする場合は、${apiKey}トークンでrequestHeadersを設定します。
エンドポイントはルートまたはAPIエラーを返します apiTypeが chat-completions であること、そしてurlがチャット完了ルート全体を含むこと、そしてエンドポイントがそのルートを公開した際の /v1/chat/completions が含まれているかを確認してください。
リモートクライアントはエンドポイントに接続できません Windows 11クライアントがサーバーホスト名を解決し、エンドポイントポートに到達できるか確認してください。 エンドポイントリスナーアドレス、Windowsファイアウォール、そして中間のファイアウォールやプロキシを確認してください。
リモートエンドポイントはTLSまたは証明書エラーを返します 証明書が有効であること、Windows 11クライアントが信頼していること、そしてエンドポイントURLにホスト名が含まれていることを確認しましょう。
エンドポイントはリモートクライアントの対応を拒否します エンドポイントのアクセス制御がクライアントがChat Completionsルートを呼び出すことを許可し、設定された認証情報が要求されたモデルにアクセスできるかを確認してください。
リクエストはエンドポイントに到達しますが、推論は失敗します モデルIDがエンドポイントのモデルIDと正確に一致し、エンドポイントが要求されたモデル機能をサポートしているかを確認してください。 リクエスト失敗のエンドポイントログを確認してください。