Introduction

掲題の通り。
インラインのコード補完には使えないが、チャットペインからのコード生成には十分活用できる。

How to do?

環境は下記

vLLM の起動パラメータ変更

vLLM の起動パラメータに

  • --tool-call-parser
  • --enable-auto-tool-choice

を追加する。
この両方がないと Visual Studio Code 側で

1
sorry, your request failed. Please try again. Client Request Id: df0180b9-6e7b-4186-8c40-dc27fd2bbe9e Reason: Request Failed: 400 {"error":{"message":""auto" tool choice requires --enable-auto-tool-choice and --tool-call-parser to be set","type":"BadRequestError","param":null,"code":400}}: Error: Request Failed: 400 {"error":{"message":""auto" tool choice requires --enable-auto-tool-choice and --tool-call-parser to be set","type":"BadRequestError","param":null,"code":400}} at LG._provideLanguageModelResponse (/home/t-takeuchi/.vscode-server/cli/servers/Stable-7e7950df89d055b5a378379db9ee14290772148a/server/extensions/copilot/dist/extension.js:1690:14355) at process.processTicksAndRejections (node:internal/process/task_queues:104:5) at async LG.provideLanguageModelResponse (/home/t-takeuchi/.vscode-server/cli/servers/Stable-7e7950df89d055b5a378379db9ee14290772148a/server/extensions/copilot/dist/extension.js:1690:15320)

のようなエラーが出てしまう。
--tool-call-parser はモデルによって指定する値が異なる。

Gemma を使うので Gemma 4 Usage Guide を参考にした。
最終的に下記のようなパラメータで起動した。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
export model="google/gemma-4-26B-A4B-it"
export parser="gemma4"
export gpu_memory_utilization=0.65
export max_num_batched_tokens=16384
export max_model_len=131072

sudo docker run --gpus all -d -it -p 11435:8000 \
--add-host=host.docker.internal:host-gateway \
-v $HOME/.cache/huggingface:/root/.cache/huggingface \
--name vllm \
--restart always \
vllm/vllm-openai:latest \
--model $model \
--max_model_len ${max_model_len} \
--max_num_batched_tokens ${max_num_batched_tokens} \
--gpu-memory-utilization ${gpu_memory_utilization} \
--tool-call-parser ${parser} \
--enable-auto-tool-choice

Visual Studio Code 側の設定

正直、今の VSCode の UI の設定はわかりづらい。
コマンドパレットから移動すれば一発なんだけど。
コマンドパレットから Chat: Manage Language Models を選択…と言いたいが、この先の Language Model ダイアログからの設定はわかりづらいし、設定にエラーが出るとバグなのかほかの選択肢が出なくなるので手動で入力する。

%USERPROFILE%\AppData\Roaming\Code\User\chatLanguageModels.json をエディタで開く。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[
{
"name": "Local vLLM",
"vendor": "customendpoint",
"apiKey": "vscode-local-key",
"apiType": "chat-completions",
"models": [
{
"id": "google/gemma-4-26B-A4B-it",
"name": "Gemma 4 26B A4B IT via vLLM",
"url": "http://192.168.11.45:11435/v1/chat/completions",
"toolCalling": true,
"vision": false,
"maxInputTokens": 30000,
"maxOutputTokens": 4096,
"streaming": true
}
]
}
]

カスタイマイズ箇所は

  • name
    • モデルのカテゴリ。自由に設定できる
  • models.id
    • モデルの名前。vLLM に渡す起動パラメータ --model と合わせる
  • models.name
    • モデルの表示名。VSCode 上に表示される名前
  • models.url
    • vLLM の待ち受けエンドポイント。

maxInputTokensmaxOutputTokens は自由に。
toolCallingtrue にすること。v1/chat/completions まで含めること。

ファイルを保存後、コマンドパレットから Chat: Manage Language Models に移動すると下記のようになっていることを確認。

Language Model

あとはチャットペインでモデルを選択しプロンプトを投げるだけ。

Chat

きちんと指定したモデルで推論していることがわかる。