OllamaのAPI活用ガイド|OpenAI・Anthropic互換でローカルLLMをコードから使う

AI・テクノロジー
スポンサーリンク

Ollamaはチャットアプリとして使うだけでなく、ローカルで動くLLM APIサーバーとしても機能します。つまり、普段OpenAIやAnthropicのAPIを叩いているコードを、ほぼそのままローカルLLMに向けられるということです。API課金なし・レート制限なし・データは社外に出ない、という開発環境が手に入ります。

この記事では、OllamaのAPIの基本から、OpenAI/Anthropic互換APIの使い方、Claude Codeなどのコーディングエージェントとの連携までをまとめます。

OllamaのAPIの基本

Ollamaをインストールすると、アプリの起動中はバックグラウンドでAPIサーバーが動いていて、デフォルトで以下のエンドポイントを公開しています。

http://localhost:11434

ネイティブAPIはRESTで、チャットなら /api/chat を叩きます。

curl http://localhost:11434/api/chat -d '{
  "model": "gemma4",
  "messages": [
    { "role": "user", "content": "自己紹介してください" }
  ],
  "stream": false
}'

指定したモデルがダウンロード済みであれば、これだけでJSONのレスポンスが返ります。認証は不要です(ローカルマシンからのアクセスのみを受け付ける設定がデフォルトのため)。

公式ライブラリを使う

PythonとJavaScriptには公式ライブラリがあります。Pythonならこうです。

pip install ollama
from ollama import chat

response = chat(
    model="gemma4",
    messages=[{"role": "user", "content": "自己紹介してください"}],
)
print(response.message.content)

ストリーミングも stream=True を渡すだけで、チャンクを順次受け取れます。

OpenAI互換APIとして使う

実務で一番うれしいのがこれです。OllamaはOpenAIのChat Completions APIと互換のエンドポイントを持っているため、既存のOpenAI SDKのコードを書き換えずに、接続先の変更だけでローカルLLMに切り替えられます。

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="ollama",  # ダミーでOK。必須項目なので何か入れる
)

response = client.chat.completions.create(
    model="gemma4",
    messages=[{"role": "user", "content": "自己紹介してください"}],
)
print(response.choices[0].message.content)

環境変数 OPENAI_BASE_URL を差し替える運用にしておけば、開発中はローカル、本番はクラウド、という切り替えが環境変数1つで済みます。LangChainなどOpenAI互換を前提にしたフレームワークも、同じ要領で接続できます。

Anthropic互換APIにも対応

比較的新しい動きとして、OllamaはAnthropicのMessages APIとも互換になりました(v0.14以降)。環境変数を次のように設定すると、Anthropic SDKを使っているツールやコードの接続先が、Anthropicのサーバーからローカルのモデルに切り替わります。コード側の変更は不要です。

export ANTHROPIC_BASE_URL=http://localhost:11434
export ANTHROPIC_AUTH_TOKEN=ollama
export ANTHROPIC_API_KEY=""

この互換性が、後述するClaude Code連携の土台になっています。

構造化出力とツールコール

アプリに組み込む場合に重要な機能も一通り揃っています。

構造化出力:リクエストの format にJSON Schemaを渡すと、スキーマに従ったJSONだけを返させることができます。LLMの出力をプログラムでパースする処理が安定します。

ツールコール(Function Calling):OpenAI互換の形式でツール定義を渡せば、対応モデルが関数呼び出しを返します。ストリーミングとツールコールの併用にも対応済みです。

ただし、これらの機能への対応はモデル次第です。モデル一覧ページの「tools」タグがついているモデルを選んでください。

コーディングエージェントとの連携(Launch機能)

OllamaにはLaunch機能があり、Claude Code、Codex、OpenCodeといったコーディングエージェントを、ローカルLLMをバックエンドにして起動できます。

# Claude Codeをローカルモデルで起動
ollama launch claude

# モデルを指定する場合
ollama launch claude --model qwen3-coder

本来必要な環境変数の設定、設定ファイルの生成、モデルのダウンロードまでを、このコマンド1つで自動処理してくれます。AnthropicやOpenAIのAPIキーは不要です。

エージェントは「読んで・考えて・修正して・確認する」のループを大量に回すため、API課金だと費用が膨らみがちですが、ローカルならループを何回回してもコストゼロ。エージェントの試行錯誤を気兼ねなく回せるのは、ローカルLLMならではの開発体験です。コーディング用途ならqwen3-coderやgpt-oss:20bクラスのモデルが前提になる点は覚えておいてください。

実務での注意点

  • 品質はクラウド最上位に一歩譲る:ローカルモデルの実力は急速に上がっていますが、複雑な設計判断などは本家が安定です。「定型作業やプロトタイピングはローカル、勝負どころはクラウド」の使い分けが現実的です
  • 同時リクエストとマシン負荷:APIサーバーといってもマシンは1台です。チームで共有したり大量の並列リクエストを投げたりする用途には向きません
  • 外部公開はしない:デフォルトはローカルからのアクセスのみですが、設定を変えてLAN公開する場合は認証の仕組みがない点に注意してください

まとめ

  • Ollamaは localhost:11434 で動くローカルLLM APIサーバー
  • OpenAI互換・Anthropic互換のため、既存コードは接続先の変更だけで移行できる
  • 構造化出力・ツールコール・ストリーミングなど実用機能も対応(モデルのタグを確認)
  • Launch機能でClaude Codeなどのエージェントも、ローカルLLMをバックエンドにして動かせる

「APIの叩き方を試したい」「課金を気にせずエージェントを回したい」「機密コードを外に出せない」。どれか1つでも当てはまるなら、ローカルにOllamaを立てておく価値は十分にあります。

コメント

タイトルとURLをコピーしました