Skip to content
eclair's note
Go back

GitHubCopilot(VSCode/CLI)でローカルLLMを使う

Edit on GitHub
この記事は Zenn にも投稿されています。

6/1からの値上げに備えるための備忘録。

できること

GitHub CopilotのBYOK機能を使うことで、従来通りAI使い放題(?)を実現できる。
BYOKの概要の説明をしてる記事は いくつかあったものの、詳細なHow-toまで解説してる記事があまりなかったので作成。

方法

ローカルモデルを稼働させる

今回はollamaを使用した。
GitHub Copilot側の書き方的にはopenai API互換なら何でも良さそうに見えるが、以前vLLMを使用したときはうまくいって無さそうだった。原因は不明。

とりあえず、ollamaをdocker-composeで立てる。

services:
  ollama:
    image: ollama/ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama:/root/.ollama
    deploy:
      resources:
        reservations:
          devices:
            - capabilities: [gpu]
    restart: always
    environment:
      OLLAMA_HOST: 0.0.0.0:11434

volumes:
  ollama:

立てた後、docker compose exec ollama bashでコンテナの中に入ってollama pull (モデル名)でモデルを利用可能にする。

利用可能なモデル一覧はここから参照できる。
注意点として、cloudタグがついているやつはその名の通りローカルLLMではないので、それらは除外すること。
また、GH Copilotはツール呼び出しを多用するのでモデル側で対応している必要がある。

今回はglm-4.7-flashを採用した。

GitHubCopilot側から接続する(VSCode)

  1. チャット欄のモデル一覧の右上にある歯車マークで設定画面に移動。
  2. 画面右上の「モデルを追加」から「Ollama」を選択
  3. グループ名を適当に入力し、URLを「http://(your-server-ip):11434」にする

これで一覧にローカルモデルが生えてくるので、後はそれを選んでクエリを投げれば良い。

一覧にはOpenAIもあるが、残念ながらOpenAI互換のサーバーに接続することはできない様子。

GitHubCopilot側から接続する(CLI)

CLIの場合、環境変数でそのあたりの挙動を制御できる。最低限以下の変数があれば良い。

# 接続先URL。注意点として、 /v1まで指定する必要あり
COPILOT_PROVIDER_BASE_URL=http://(your-server-ip):11434/v1 \
# API種別
COPILOT_PROVIDER_TYPE=openai \
# 使用モデル
COPILOT_MODEL=glm-4.7-flash:latest \
# -- 最大トークン数を指定する場合
# COPILOT_PROVIDER_MAX_PROMPT_TOKEN=100000 \
# COPILOT_PROVIDER_MAX_OUTPUT_TOKEN=100000 \
# -- API KEYが必要な場所なら↓をCO
# COPILOT_PROVIDER_API_KEY=your-api-key \
# -- Copilotが提供するモデルをそもそも使わない場合CO
# COPILOT_OFFLINE=true \
copilot

接続は問題なくできるが、ツール呼び出しの関係でバグがある。2026/05/20時点ではまだ直っていない。

> このプロジェクトの概要を教えて

・プロジェクトの概要を把握するために、主要なファイルを読み込みます。
・Read README.md
    80 lines read
・Read docker-compose.yml
    32 lines read
(ここでセッションが切れる)

> continue
・Request failed (transient_bad_request). Retrying...
・Request failed (transient_bad_request). Retrying...
× 400 invalid message content type: <nil>

Q. ローカルLLMでエージェント呼び出しできる?

A. できる。

frontmatterのmodelにローカルモデル名を指定すれば良い。

---
name: your-skill-name
description: your-skill-description
model: glm-4.7-flash:latest
tools: [vscode, execute, read, agent, edit, search, web]
---

(your-prompt)

あとは普通にskills経由で呼び出してやるだけで、ローカルLLMを参照してagent起動してくれる。
都度指定してやる手間こそあるが、ここまでやれば遜色なく(?)使うこともできそうな雰囲気。

note

$ date -Iseconds
2026-05-20T03:33:08+00:00

$ copilot --version
GitHub Copilot CLI 1.0.49.
Run 'copilot update' to check for updates.

# ollama --version
ollama version is 0.24.0

Edit on GitHub
Share this post on:

Next Post
LLMに狙ったコードを書かせるためにLinterを自作してみたら体験が良かった