CLOVER🍀

That was when it all began.

LiteLLM Proxy(LLM Gateway)を使って、Claude CodeからGitHub Copilotのモデルを使う

これは、なにをしたくて書いたもの?

こちらのエントリーで、LiteLLM Proxy(LLM Gateway)を使ってOllamaへのプロキシサーバーを作ることを試してみました。

LiteLLM Proxy(LLM Gateway)でOllamaへのプロキシサーバーを立ててみる - CLOVER🍀

今回は、GitHub Copilotへのプロキシサーバーを作り、Claude Codeから使ってみたいと思います。

Claude CodeからGitHub Copilotのモデルを使う?

簡単に言うと、LiteLLMのモデルプロバイダーをGitHub Copilotとして

GitHub Copilot | liteLLM

Claude Codeから使ってみましょう、という話です。

Claude Code Quickstart | liteLLM

環境

今回の環境はこちら。

$ claude --version
2.1.74 (Claude Code)

$ python3 --version
Python 3.12.3


$ uv --version
uv 0.10.9

GitHub Copilot向けのLiteLLM Proxy(LLM Gateway)を作る

まずはGitHub CopilotをモデルプロバイダーとしたLiteLLM Proxy(LLM Gateway)を作りましょう。

uvプロジェクトを作成して、LiteLLM Proxy(LLM Gateway)を追加。

$ uv init --vcs none .
$ uv add 'litellm[proxy]'

バージョン。

$ uv run litellm --version

LiteLLM: Current Version = 1.82.1

依存関係など。

pyproject.toml

[project]
name = "llmproxy-copilot"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
    "litellm[proxy]>=1.82.1",
]
$ uv pip list
Package                   Version
------------------------- ------------
aiohappyeyeballs          2.6.1
aiohttp                   3.13.3
aiosignal                 1.4.0
annotated-doc             0.0.4
annotated-types           0.7.0
anyio                     4.12.1
apscheduler               3.11.2
attrs                     25.4.0
azure-core                1.38.2
azure-identity            1.25.2
azure-storage-blob        12.28.0
backoff                   2.2.1
boto3                     1.42.66
botocore                  1.42.66
certifi                   2026.2.25
cffi                      2.0.0
charset-normalizer        3.4.5
click                     8.3.1
croniter                  6.0.0
cryptography              46.0.5
distro                    1.9.0
dnspython                 2.8.0
email-validator           2.3.0
fastapi                   0.135.1
fastapi-sso               0.16.0
fastuuid                  0.14.0
filelock                  3.25.2
frozenlist                1.8.0
fsspec                    2026.2.0
gunicorn                  23.0.0
h11                       0.16.0
hf-xet                    1.4.0
httpcore                  1.0.9
httpx                     0.28.1
httpx-sse                 0.4.3
huggingface-hub           1.6.0
idna                      3.11
importlib-metadata        8.7.1
isodate                   0.7.2
jinja2                    3.1.6
jiter                     0.13.0
jmespath                  1.1.0
jsonschema                4.26.0
jsonschema-specifications 2025.9.1
litellm                   1.82.1
litellm-enterprise        0.1.34
litellm-proxy-extras      0.4.54
markdown-it-py            4.0.0
markupsafe                3.0.3
mcp                       1.26.0
mdurl                     0.1.2
msal                      1.35.1
msal-extensions           1.3.1
multidict                 6.7.1
oauthlib                  3.3.1
openai                    2.26.0
orjson                    3.11.7
packaging                 26.0
polars                    1.38.1
polars-runtime-32         1.38.1
propcache                 0.4.1
pycparser                 3.0
pydantic                  2.12.5
pydantic-core             2.41.5
pydantic-settings         2.13.1
pygments                  2.19.2
pyjwt                     2.11.0
pynacl                    1.6.2
pyroscope-io              0.8.16
python-dateutil           2.9.0.post0
python-dotenv             1.2.2
python-multipart          0.0.22
pytz                      2026.1.post1
pyyaml                    6.0.3
redis                     7.3.0
referencing               0.37.0
regex                     2026.2.28
requests                  2.32.5
rich                      13.9.4
rpds-py                   0.30.0
rq                        2.7.0
s3transfer                0.16.0
shellingham               1.5.4
six                       1.17.0
sniffio                   1.3.1
soundfile                 0.12.1
sse-starlette             3.3.2
starlette                 0.52.1
tiktoken                  0.12.0
tokenizers                0.22.2
tqdm                      4.67.3
typer                     0.24.1
typing-extensions         4.15.0
typing-inspection         0.4.2
tzlocal                   5.3.1
urllib3                   2.6.3
uvicorn                   0.41.0
uvloop                    0.21.0
websockets                15.0.1
yarl                      1.23.0
zipp                      3.23.0

設定ファイルはこんな感じで用意。

config.yaml

model_list:
  - model_name: claude-haiku-4.5
    litellm_params:
      model: github_copilot/claude-haiku-4.5
  - model_name: gpt-5-mini
    litellm_params:
      model: github_copilot/gpt-5-mini
  - model_name: gpt-4.1
    litellm_params:
      model: github_copilot/gpt-4.1
  - model_name: gpt-4o
    litellm_params:
      model: github_copilot/gpt-4o

litellm_settings:
  master_key: sk-1234

LiteLLM Proxy(LLM Gateway)向けのGitHub Copilotモデルプロバイダーのページを見ても、今ひとつモデル名のルールが
わからないのですが。

GitHub Copilot | liteLLM

Visual Studio Codeのモデルを選択するところから、「Other Models」 → 「Manage Models」と選択して

モデル名にフォーカスして確認できる名前を使うのがよさそうですね。

モデル名のprefixはgithub_copilot/です。

Provider Route on LiteLLM: github_copilot/

またマスターキーの設定が必要です。

litellm_settings:
  master_key: sk-1234

では、起動してみます。

$ uv run litellm --config config.yaml

起動すると認証を求められるので、https://github.com/login/deviceにアクセスしてコードを入力しましょう。

LiteLLM: Proxy initialized with Config, Set models:
    claude-haiku-4.5
    gpt-5-mini
    gpt-4.1
    gpt-4o
11:01:03 - LiteLLM:WARNING: authenticator.py:149 - Error reading API endpoint from file: [Errno 2] No such file or directory: '/home/user/.config/litellm/github_copilot/api-key.json'
11:01:03 - LiteLLM:WARNING: authenticator.py:105 - No API key file found or error opening file
11:01:03 - LiteLLM:WARNING: authenticator.py:60 - No existing access token found or error reading file
Please visit https://github.com/login/device and enter code XXXX-XXXX to authenticate.

起動しました。

INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:4000 (Press CTRL+C to quit)

これで準備は完了です。

Claude Codeから使う

では、Claude Codeから使ってみましょう。こちらのドキュメントに従います。

Claude Code Quickstart | liteLLM

まずは環境変数を設定します。ANTHROPIC_BASE_URLでアクセス先をLiteLLM Proxy(LLM Gateway)に変更し、
認証トークンはマスターキーに指定します。

$ export ANTHROPIC_BASE_URL=http://0.0.0.0:4000
$ export ANTHROPIC_AUTH_TOKEN=sk-1234

そしてこのまま使おうとすると

$ claude

デフォルトのClaude Sonnet 4.6を使おうとして失敗します。

❯ 自己紹介してください
  ⎿  API Error: 400 {"error":{"message":"400: {'error': 'anthropic_messages: Invalid model name passed in model=claude-sonnet-4-6. Call `/v1/models` to view available models
      for your key.'}","type":"None","param":"None","code":"400"}}

使うモデルを指定して起動しましょう。

$ claude --model gpt-5-mini
❯ 自己紹介してください

● はじめまして。AIアシスタントです。簡単に自己紹介します。

  - できること
    - 質問への回答・情報検索の補助(知識に基づく説明・要約)
    - 文章作成・校正・要約(メール、レポート、企画書など)
    - コード作成・レビュー・デバッグ(多くの言語に対応)
    - 翻訳(日本語⇄英語ほか)と語学学習のサポート
    - アイデア出し、設計・計画作成、学習支援、タスク整理
    - 手順説明や問題解決のためのステップ提示
  - 制約と注意点
    - 知識は主に20246月までに学んだ内容が中心です(最新情報は確認が必要な場合があります)。
    - 実際の物理操作や外部サービスへの直接アクセスはできません(必要なら手順やコマンドは提示します)。
    - 個人情報や機密情報は送らないでください。誤情報を出すことがあるため重要な内容は必ず検証してください。
  - 対応言語:日本語・英語を中心に多数対応します。

  何を手伝いしましょうか?(例:「履歴書を添削して」「PythonでAPIクライアントを書いて」「プレゼン用に短いスライド原稿を作って」など)

/modelコマンドでモデルを指定してもOKです。Claude Haiku 4.5に切り替えてみます。

─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
❯ /model claude-haiku-4.5
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────


❯ /model claude-haiku-4.5
  ⎿  Set model to claude-haiku-4.5

ただ、Claude Haiku 4.5ではthinkingをサポートしていないようで、実行に失敗します…。

❯ 自己紹介してください
  ⎿  API Error: 400 {"error":{"message":"litellm.UnsupportedParamsError: github_copilot does not support parameters: ['thinking'], for model=claude-haiku-4.5. To drop these,
      set `litellm.drop_params=True` or for proxy:\n\n`litellm_settings:\n drop_params: true`\n. \n If you want to use these params dynamically send
     allowed_openai_params=['thinking'] in your request.. Received Model Group=claude-haiku-4.5\nAvailable Model Group
     Fallbacks=None","type":"None","param":null,"code":"400"}}

Claude Haiku 4.5を使う場合は、Alt+tでthinkingを無効にしましょう。

─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  Toggle thinking mode
  Enable or disable thinking for this session.

    1. Enabled     Claude will think before responding
  ❯ 2. Disabled ✔  Claude will respond without extended thinking

  Enter to confirm · Esc to exit

Interactive mode - Claude Code Docs

これでClaude Haiku 4.5でも使えます。

❯ 自己紹介してください

● こんにちは。Claude Haikuです。簡潔な自己紹介をします。

  基本情報
  - Anthropic社が開発したAIアシスタント(Claude Haikuモデル)
  - 軽量で高速な処理が特徴です

  得意なこと
  - プログラミング支援(コード作成・デバッグ・レビュー)
  - 文章作成・編集・要約
  - 質問への回答と情報検索
  - ファイル操作とコード分析
  - 日本語を含む多言語対応

  できないこと
  - インターネット接続(リアルタイム情報は別途必要)
  - ファイルシステムへの直接的な実行
  - 20246月以降の新しい情報

  その他
  - 誤った情報を提供する可能性があるため、重要な内容は検証してください
  - 個人情報や機密情報は共有しないでください

  何かお手伝いできることがあればお知らせください!

モデルについては、環境変数で指定してもOKです。

$ export ANTHROPIC_DEFAULT_SONNET_MODEL=gpt-5-mini
$ export ANTHROPIC_DEFAULT_HAIKU_MODEL=gpt-5-mini
$ export ANTHROPIC_DEFAULT_OPUS_MODEL=gpt-5-mini
$ claude

ただ、1度/modelで指定するとそのモデルを覚えてしまうようなので、/modelコマンドは使わずオプションか環境変数で
指定するのがよさそうです。

リクエストの利用状況はGitHubのWebページで見るか

https://github.com/settings/copilot/features

Visual Studio Codeで見ましょう、という感じでしょうね。

こんなところでしょうか。

おわりに

LiteLLM Proxy(LLM Gateway)を使って、Claude CodeからGitHub Copilotのモデルを使ってみました。

モデル名の調べ方がわからなかったり、マスターキーが必須だと思っていなかったり、実は使えないモデルがあったりと
意外とハマりましたが、1度Ollamaで通していたからかそれ以外はそこまで困りませんでした。

リクエストの消費はとても早いので、どこまで使うかは微妙ですけどね。