0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

lmstudioでgpt-oss-120bとgpt-oss-20bを使ってclaude codeを動かす

Posted at

Claude Code と LM Studio をローカルモデルで使う方法

はじめに

本稿では、Claude Code のリクエストを claude2openai‑proxy で OpenAI 互換 API に変換し、ローカルで起動した gpt‑oss‑120b / gpt‑oss‑20b と LM Studio を接続する手順をまとめます。

localでホストしているgpt-oss-120bを使ってコーディングをするならcodexを使っても良いのですが、ところどころ使い勝手が異なるので使い慣れているclaude codeを動かしてみたいという背景になります

前提条件

  • macOS (Linux/WSL でも同様)
  • Python 3.10+ がインストール済み
  • Git が利用できる環境
  • LM Studio(最新版)と Claude Code の UI が手元にあること
  • ローカルで動作させるモデル (gpt‑oss‑120b または gpt‑oss‑20b) と、そのモデルを OpenAI 互換エンドポイントとして公開できるサーバ(例: LM Studio)
  • ハードウェア要件:VRAM 80 GB (Unified Memoryの場合100GBぐらい) が推奨されます

1. ローカルモデルサーバの起動

手順

  1. LM Studio アプリを起動。

  2. 探索gpt‑oss‑120bgpt‑oss‑20b(GGUF 形式など)のモデルをダウンロードします

    image.png

  3. 開発者タブで、モデルを選択します。先ほどダウンロードしたモデルを二つとも起動します。

    image.png

    Server Portは適当に1234などで設定し、CORSは無効としておきます

  4. 起動後、http://127.0.0.1:1234/v1/chat/completions にリクエストすれば LM Studio 経由でローカルモデルを利用できます。

2. claude2openai‑proxy のセットアップ

LM Studioは OpenAIのAPI互換のサーバーは建てられるのですが、Claude CodeはAnthropicの仕様のAPIリクエストを行います。そのため、Anthropicの仕様のリクエスト/レスポンスをOpenAIの仕様のリクエスト/レスポンスに変換する仕組みが必要になります。

それらを実現するライブラリはいくつか見つけたのですが、今回はclaude2openai‑proxyを使います。こちらを採用した理由は、ファイル一つで動く、機能が必要最小限のシンプルな構成だったためです。利用する際は、セキュリティチェックは忘れないようにしてください。

リポジトリをクローンし、ローカルモデルサーバへリバースプロキシするよう設定します。

# リポジトリの取得
git clone https://github.com/ziozzang/claude2openai-proxy.git
cd claude2openai-proxy

export OPENAI_BASE_URL="http://localhost:1234/v1"
export OPENAI_API_KEY="dummy"

プロキシを起動します(デフォルトは 8080 番ポート)。

uv run uvicorn server:app --host 0.0.0.0 --port 8082 --reload

起動後、http://127.0.0.1:8082/Claude Code 用の エンドポイント として機能します。

3. Claude Code 側の設定

Claude Code 側は LLM ゲートウェイの機能を使って以下のように設定します

export ANTHROPIC_BASE_URL="http://localhost:8082" # proxyのURL
export ANTHROPIC_AUTH_TOKEN="lm-studio" # 任意の値で問題ない
export ANTHROPIC_MODEL="openai/openai/gpt-oss-120b" # lm studioのモデル名にopenai/のprefixをつける
export ANTHROPIC_SMALL_FAST_MODEL="openai/openai/gpt-oss-20b"
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
  • prefixにopenaiが二つ入っているのは誤りではなく、一つ目のprefixは proxy用のもので、二つ目のprefixはLM Studioのモデル名にopenaiのprefixが入っているためです。
  • claude codeは、小さくて速いモデルと賢いモデルを使い分ける仕組みがあるので、小さくて速いに20bを使い、賢いモデルに120bを使うようにしています

設定ファイル (~/.claude/setting.json) の使用

環境変数ではなく、以下のように ~/.claude/setting.json に設定を書き込むことでも同様に構成できます。ファイルが存在しない場合は作成してください。

{
  "permissions": {
    "allow": [
      "Read(~/.zshrc)"
    ],
    "deny": [
      "Bash(curl:*)",
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)"
    ]
  },
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "0",
    "ANTHROPIC_BASE_URL": "http://localhost:8082",
    "ANTHROPIC_AUTH_TOKEN": "lm-studio",
    "ANTHROPIC_MODEL":"openai/openai/gpt-oss-120b",
    "ANTHROPIC_SMALL_FAST_MODEL": "openai/openai/gpt-oss-20b",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
  }
}

設定を保存したら、通常通り claude コマンドで Claude Code を起動できます。

4. Claude Code の起動

$ claude

デフォルトで openai/gpt‑oss‑120b が設定されており、上記コマンドで起動します。

で起動する。デフォルトでopenai/gpt-oss-120bが設定されている

image.png

5. コーディング

hello worldを表示するindex.htmlを作って というプロンプトを実行してみた結果

image.png

6. まとめ

今回はgpt-oss-120bを使ってLocalでclaude codeを動かす事例を紹介しました。
APIを使う時ほど速度は出ないものの Mac Studio (M3 Ultra)だと、50 ~ 80 tpsぐらいの速度で生成されるので、コーディング用のエージェントとしてはそこそこ使い物になる印象です。

参考になれば幸いです。

参考資料

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?