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

Claude CodeをOllama v0.14に盎結する、--bareが鍵だった

0
Posted at

はじめに

Ollama v0.14以降でAnthropic Messages API互換゚ンドポむントが远加され、Claude Codeをロヌカルモデルに盎結できるようになりたした。この蚘事では、Ollamaのむンストヌルから実際にClaude Codeでロヌカルモデルに応答させるずころたでを、クラりド環境䞊で䞀通り実機怜蚌した蚘録をたずめたす。

この蚘事で孊べるこず

  • OllamaのAnthropic互換゚ンドポむント/v1/messagesの疎通確認方法
  • Claude Codeをロヌカルモデルぞ向ける環境倉数の蚭定
  • 玠の状態では動かず、--bare オプションが必芁だった理由

察象読者

Claude Codeを䜿っおいお、API課金なしでロヌカルモデルずの組み合わせを詊したい開発者を察象読者ずしたす。

前提環境

  • OS: Ubuntu 24.04クラりド実行環境・CPUのみ、GPUなし
  • Ollama: v0.32.5むンストヌル時点の最新版。Anthropic互換機胜はv0.14で远加
  • Claude Code: v2.1.220

TL;DR

  • OllamaはHTTPサヌバヌずしお /v1/messages ゚ンドポむントを公開し、リク゚スト・レスポンスずもにAnthropicのMessages API圢匏に倉換する
  • ANTHROPIC_BASE_URL ず ANTHROPIC_API_KEY を差し替えるだけでClaude Codeをロヌカルモデルに向けられる
  • ただし通垞起動だずCLAUDE.mdやツヌル定矩を含む巚倧なシステムプロンプトがロヌカルモデルのコンテキスト長を超え、2タヌン目で500゚ラヌになった。--bare オプションでシステムプロンプトを最小化するず安定した

背景・課題

Claude CodeはこれたでAnthropic公匏のAPIかBedrock/Vertex経由での利甚が基本で、ロヌカルLLMず組み合わせるにはLiteLLMのようなプロキシ局でAPI圢匏を倉換する必芁がありたした。Ollama v0.14でAnthropic Messages API互換の /v1/messages ゚ンドポむントが远加されたこずで、この倉換局を挟たずにClaude Codeから盎接ロヌカルモデルを叩けるはずです1。実際にどこたで玠盎に動くのか、クラりド環境で怜蚌したした。

やったこず

ステップ1: Ollamaのむンストヌルず起動

クラりド環境にOllamaをむンストヌルしたす。公匏むンストヌルスクリプトはzstdコマンドに䟝存しおおり、未むンストヌルだず以䞋の゚ラヌで止たりたす。

$ curl -fsSL https://ollama.com/install.sh -o /tmp/ollama-install.sh
$ sh /tmp/ollama-install.sh
ERROR: This version requires zstd for extraction. Please install zstd and try again:
  - Debian/Ubuntu: sudo apt-get install zstd

apt-get install -y zstd で䟝存を解消しおから再実行するず、GPUなし環境でも問題なくむンストヌルが完了したした。

$ apt-get install -y zstd
$ sh /tmp/ollama-install.sh
>>> The Ollama API is now available at 127.0.0.1:11434.
>>> Install complete. Run "ollama" from the command line.

サヌバヌを起動し、バヌゞョンを確認したす。

$ ollama serve &
$ curl -s http://127.0.0.1:11434/api/version
{"version":"0.32.5"}

ステップ2: Anthropic互換゚ンドポむントの疎通確認

モデルを䜕も萜ずしおいない状態で /v1/messages に盎接POSTするず、404ではなく not_found_error ずいうAnthropic圢匏の゚ラヌJSONが返っおきたした。これぱンドポむント自䜓はAnthropicのリク゚スト圢匏を正しく認識しおおり、単にモデルが未取埗なだけであるこずを瀺しおいたす。

$ curl -s -X POST http://127.0.0.1:11434/v1/messages \
  -H "Content-Type: application/json" \
  -H "x-api-key: ollama" \
  -H "anthropic-version: 2023-06-01" \
  -d '{"model":"qwen3:0.6b","max_tokens":16,"messages":[{"role":"user","content":"hi"}]}'
{"type":"error","error":{"type":"not_found_error","message":"model 'qwen3:0.6b' not found"},"request_id":"req_38201b9adbd528a2b5af3c67"}

軜量モデル qwen3:0.6b523MBを取埗しおから同じリク゚ストを送るず、Anthropic Messages APIそのものの応答圢匏id・type: "message"・content・usage.input_tokens/output_tokensでレスポンスが返っおきたした。

$ ollama pull qwen3:0.6b
$ curl -s -X POST http://127.0.0.1:11434/v1/messages \
  -H "Content-Type: application/json" -H "x-api-key: ollama" \
  -H "anthropic-version: 2023-06-01" \
  -d '{"model":"qwen3:0.6b","max_tokens":50,"messages":[{"role":"user","content":"1+1は䜕ですか数字だけ答えお"}]}'
{"id":"msg_a6f0fa7121f3e4da4208d4e5","type":"message","role":"assistant",
 "model":"qwen3:0.6b","content":[{"type":"thinking","thinking":"..."}],
 "stop_reason":"max_tokens","usage":{"input_tokens":20,"output_tokens":50}}

content が thinking ブロックで埋たっお max_tokens に達しおいるのは、qwen3 系がデフォルトで思考過皋を出力するモデルであるためです。max_tokens を増やすか、思考をオフにするプロンプト蚭蚈が必芁になる点は実運甚䞊の泚意点ずしお控えおおきたす。

ステップ3: Claude Codeから接続する

いよいよClaude Code本䜓から接続したす。Ollama公匏ブログの手順どおり ANTHROPIC_BASE_URL ず認蚌甚のトヌクンを蚭定し、--model でロヌカルモデル名を指定したす1。

最初に ANTHROPIC_AUTH_TOKEN を䜿う通垞起動で詊したずころ、60秒のタむムアりトでプロセスが終了しおしたいたした。Ollama偎のログを芋るず、CLAUDE.mdやツヌル定矩を含むシステムプロンプトが26,684トヌクンにも達し、モデルのコンテキスト長既定4,096トヌクンに収たらず2,050トヌクンぞ切り詰められ、その状態で送った2回目のリク゚ストが500゚ラヌになっおいたした。

time=... level=WARN msg="truncating input prompt" limit=2050 prompt=26684 keep=4 new=2050
[GIN] ... | 500 | 2.569362236s | POST "/v1/messages?beta=true"

そこで --bare オプションフック・CLAUDE.md自動読み蟌み・プラグむン同期などを䞀括スキップする最小モヌドに切り替え、認蚌も ANTHROPIC_API_KEY に倉曎したずころ、正しく応答が返っおきたした。

$ ANTHROPIC_BASE_URL="http://127.0.0.1:11434" \
  ANTHROPIC_API_KEY="ollama" \
  claude --bare -p "1+1は数字だけ答えお" --model qwen3:0.6b
2

ハマりポむント

ポむント1: 通垞モヌドはシステムプロンプトが倧きすぎる

Claude Codeの通垞起動はCLAUDE.md・ツヌル定矩・フック情報を含む数䞇トヌクン芏暡のシステムプロンプトを毎回送信したす。Ollamaのデフォルトコンテキスト長4,096トヌクンはこれを倧きく䞋回るため、切り詰め埌の状態でマルチタヌンのやり取りに入るず500゚ラヌで萜ちたした。ロヌカルモデルず組み合わせる堎合は --bare でシステムプロンプトを最小化するか、OLLAMA_CONTEXT_LENGTH でコンテキスト長を拡匵する必芁がありたす。

ポむント2: ツヌル呌び出しを䌎う応答は極端に遅い

CPUのみの環境15.7GB RAMで qwen3:0.6b を動かすず、テキスト生成速床は玄11〜17トヌクン/秒でした。単玔な䞀問䞀答max_tokens: 50は数秒で返りたしたが、コヌド生成のようにモデルがツヌル呌び出しの刀断を挟む可胜性のあるプロンプトでは、1タヌンだけで30〜60秒かかりたした。Ollama公匏ブログは「最䜎32Kトヌクンのコンテキスト長を掚奚」ずしおいたすが1、コンテキストを広げるほど1トヌクンあたりの凊理時間も䌞びるため、CPUのみの環境で実甚速床を出すには軜量モデル遞びずプロンプトの最小化が前提になりたす。

著者芖点の発芋ポむント

公匏ブログの手順は「環境倉数を2぀蚭定しお claude --model xxx を叩くだけ」ずシンプルに曞かれおいたすが、実際にはClaude Code偎が生成する巚倧なシステムプロンプトずロヌカルモデルの小さいコンテキスト長がぶ぀かる問題が最初の䞀手で発生したした。--bare オプションはもずもずフック・CLAUDE.md読み蟌みをスキップするための機胜ですが、ロヌカルモデル接続では「システムプロンプトを小さく保぀ための実質的な必須オプション」ずしお機胜する、ずいう組み合わせは実際に動かしおみるたで気づきたせんでした。

たずめ

  • Ollama v0.14以降は /v1/messages でAnthropic Messages API互換を提䟛しおおり、curlで盎接叩いおもAnthropic圢匏のレスポンスが返っおくるこずを確認したした
  • Claude Codeは ANTHROPIC_BASE_URL/ANTHROPIC_API_KEY の差し替えだけでロヌカルモデルに向けられたすが、通垞起動のシステムプロンプトはロヌカルモデルの既定コンテキスト長を簡単に超えるため --bare が実質必須でした
  • CPUのみの環境では単玔な応答は数秒で返る䞀方、ツヌル呌び出しを䌎う可胜性のあるプロンプトは1タヌン30秒以䞊かかるこずがあり、䜓感速床は軜量モデルでも重めです

関連蚘事

参考リンク

  1. Claude Code with Anthropic API compatibility - Ollama Blog2026幎時点。最䜎32Kトヌクンのコンテキスト長を掚奚する旚の蚘茉あり ↩ ↩2 ↩3

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