はじめに
VS CodeのGitHub Copilot Chatでは、GitHub Copilotから用意されているモデルだけでなく、外部のAIモデルを登録できます。
今回は、VS Codeの「Custom Endpoint」機能を利用し、GitHub Copilot ChatからさくらのAI Engineのモデルを呼び出します。
構成
今回の構成は次のとおりです。
VS Code
└─ GitHub Copilot Chat
└─ Custom Endpoint
└─ さくらのAI Engine
└─ AIモデル
この記事では、Chat Completions APIを使用します。
https://api.ai.sakura.ad.jp/v1/chat/completions
前提条件
- 最新版のVisual Studio Code
- GitHub Copilot Chat拡張機能
- さくらインターネットの会員
- さくらのクラウドのプロジェクト
- さくらのAI Engineの利用プラン
- さくらのAI Engineのアカウントトークン
Language Models画面を開く
コマンドパレット (Ctrl+Shift+P または ⌘⇧P) を開きます。
次のコマンドを実行します。
Chat: Manage Language Models
または、Copilot Chat下部のモデル選択欄から次の順に選択します。
Custom Endpointを追加する
Language Modelsで、次の操作を行います。
-
さくらのAI Engineのアカウントトークンを入力
使用するモデルを指定する
Custom Endpointの追加を進めると、VS CodeがchatLanguageModels.jsonを開きます。使用したいモデルを登録します。
また、コマンドパレットから以下のコマンドを実行することで開くことができます。
Chat: Open Language Models(JSON)
使用可能なモデルはコントロールパネルの「利用可能なモデル」で確認できます。
タグ「コーディング」がついているモデルを中心に指定します。
[
{
"name": "sakura ai",
"vendor": "customendpoint",
"apiKey": "${input:chat.lm.secret.xxxxx}",
"apiType": "chat-completions",
"models": [
{
"id": "gpt-oss-120b",
"name": "gpt-oss-120b",
"url": "https://api.ai.sakura.ad.jp/v1",
"toolCalling": true,
"vision": false,
"contextWindow": 131072,
"maxOutputTokens": 16384
},
{
"id": "preview/Kimi-K2.7-Code",
"name": "preview/Kimi-K2.7-Code",
"url": "https://api.ai.sakura.ad.jp/v1",
"toolCalling": true,
"vision": true,
"streaming": false,
"contextWindow": 262144,
"maxOutputTokens": 32000
},
{
"id": "preview/Qwen3.6-35B-A3B",
"name": "preview/Qwen3.6-35B-A3B",
"url": "https://api.ai.sakura.ad.jp/v1",
"toolCalling": true,
"vision": true,
"contextWindow": 131072,
"maxOutputTokens": 16384
},
{
"id": "preview/gemma-4-31B-it",
"name": "preview/gemma-4-31B-it",
"url": "https://api.ai.sakura.ad.jp/v1",
"toolCalling": true,
"vision": true,
"contextWindow": 262144,
"maxOutputTokens": 32000
}
]
}
]
各項目の意味
| 項目 | 内容 |
|---|---|
name |
VS Code上で表示するプロバイダーグループ名 |
vendor |
Custom Endpointではcustomendpointを指定 |
apiKey |
さくらのAI Engineのアカウントトークン |
apiType |
利用する互換APIの種類 |
models[].id |
さくらのAI Engineのおけるモデル名 |
models[].name |
VS Codeのモデル選択欄に表示する名前 |
models[].url |
APIエンドポイント または Chat Completions APIのURL |
toolCalling |
Agentモードからツール呼び出しを許可するか |
vision |
画像入力を利用するか |
contextWindow |
VS Code側に通知する処理1回あたりの同時に記憶・参照できるテキストの最大量 |
maxInputTokens |
VS Code側に通知する最大入力トークン数(contextWindowが指定されている場合は任意) |
maxOutputTokens |
VS Code側に通知する最大出力トークン数 |
トークン数について
contextWindowやmaxInputTokens、maxOutputTokensは、利用するモデルの実際の上限に合わせて設定してください。
contextWindow = maxInputTokens + maxOutputTokens であることを念頭に設定してください。
モデルの仕様と異なる値を設定すると、次のような問題が起きる可能性があります。
- 長いプロンプトでAPIエラーになる
- VS Codeが必要以上にコンテキストを送信する
- 逆に、利用可能なコンテキストを十分に使えない
- Agentモードの途中で出力が途切れる
さくらのAI Engineのモデルを選択する
設定ファイルを保存したら、Copilot Chatを開き、チャット画面下部のモデル名をクリックし、次のモデルを選択します。
Askモードを試す
Copilot Chatのモードを「Ask」にして、次のような質問を入力します。
Rubyで、HTTP GETリクエストを送信する最小構成のコードを作成してください。
コードが返ってくれば、基本的なChatは成功です。
さらに、次のように現在のワークスペースに関する質問をします。
このプロジェクトのディレクトリ構成を説明してください。
ちなみに私は、過去の記事で作成したオセロゲームのディレクトリで質問をしました。
Copilotがワークスペースの内容を参照して回答できれば、VS CodeのコンテキストとさくらのAI Engineのモデルが組み合わされて動作しています。
Agentモードを試す
Copilot Chatのモードを「Agent」に変更し、例えば次のように依頼して、ツールを使ってエージェントが対応してくれたら、さくらのAI Engineがエージェントとして動作しています。
このプロジェクトに`docs/Outline_by_{AIのモデル名}.md`を作成してください。
プロジェクトの概要、起動方法、テスト方法を記載してください。
つまづき
preview/Kimi-K2.7-Code を選択してエージェントに依頼したとき、指定した内容のファイルが生成される場合もあれば、タイムアウトで生成されない場合もありました。また、ファイル生成後にエージェントが作業を完了せずずっと動いているような状態でした。
以下の記事で、VS Codeが一部のフィールドを処理できていないことが示されていました。
こちらを参考にして、streaming: false としてレスポンス全体を受け取ってから処理するようにしたところ、ファイル生成後に作業を締めくくる場合もあれば、
現在のモデル名(preview/Kimi-K2.7-Code)でドキュメントを作成します。
と表示されてファイル生成する前に作業が終了する場合もありました。
Inline Chatでも利用する
エディター内でコードを選択し、Inline Chatを開きます。
一般的には次のショートカットを使用します。
macOS
Command + I
Windows・Linux
Ctrl + I
例えば、コードを選択して次のように入力します。しばらくしてコードに変更内容が反映されたら、Inline Chat機能とさくらのAI Engineのモデルが組み合わされて動作しています。
メソッドコメントを追加してください
まとめ
VS Codeの「Custom Endpoint」機能を使い、GitHub Copilot Chatから気軽にさくらのAI Engineのモデルを呼び出すことができるようになりました。
Chat Completions APIを経由し、gpt-oss-120bやKimi-K2.7-Codeなど、複数のモデルを使用可能です。
OpenAIやClaudeの最先端AIと比較して性能が劣ることはあるとしても、さくらのAI Engineは毎月3000リクエスト使えてしまうので、何度も試行錯誤して最終到着点までの道を模索できるでしょう。
設定はシンプル。
-
Chat: Manage Language Modelsから「Custom Endpoint」を追加 - トークンとAPIタイプを指定
- chatLanguageModels.json にモデルを定義
- Askモードでコード生成、Agentモードでツールを用いた作業が可能
- ただし、Kimi-K2.7-Codeなど一部モデルではエージェントの終了がVS Codeとの相性が悪く不安定なため、
streaming: falseを推奨
- ただし、Kimi-K2.7-Codeなど一部モデルではエージェントの終了がVS Codeとの相性が悪く不安定なため、
外部モデルを自在に組み込む、開発者の知恵の延伸。 (by preview/Qwen3-VL-30B-A3B-Instruct)





