1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

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下部のモデル選択欄から次の順に選択します。

スクリーンショット 2026-07-20 16.07.24.png

Custom Endpointを追加する

Language Modelsで、次の操作を行います。

  1. 「Add Models」>「Custom Endpoint」を選択
    スクリーンショット 2026-07-20 16.15.05.png

  2. モデルグループ名を入力
    スクリーンショット 2026-07-20 16.24.51.png

  3. さくらのAI Engineのアカウントトークンを入力

    • Bearerを付けず、発行されたトークン本体だけを入力します
      スクリーンショット 2026-07-20 16.25.06.png
  4. APIタイプとして「Chat Completions」を選択
    スクリーンショット 2026-07-20 16.25.46.png

使用するモデルを指定する

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側に通知する最大出力トークン数

トークン数について

contextWindowmaxInputTokensmaxOutputTokensは、利用するモデルの実際の上限に合わせて設定してください。

contextWindow = maxInputTokens + maxOutputTokens であることを念頭に設定してください。

モデルの仕様と異なる値を設定すると、次のような問題が起きる可能性があります。

  • 長いプロンプトでAPIエラーになる
  • VS Codeが必要以上にコンテキストを送信する
  • 逆に、利用可能なコンテキストを十分に使えない
  • Agentモードの途中で出力が途切れる

さくらのAI Engineのモデルを選択する

設定ファイルを保存したら、Copilot Chatを開き、チャット画面下部のモデル名をクリックし、次のモデルを選択します。

スクリーンショット 2026-07-30 10.55.21.png

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-120bKimi-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を推奨

外部モデルを自在に組み込む、開発者の知恵の延伸。 (by preview/Qwen3-VL-30B-A3B-Instruct)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?