ドキュメント
OllamaのOpenAI互換API
Ollamaはローカルモデル向けのOpenAI互換APIを提供します。OpenAI SDKでの呼び出し方と、base_urlとmodelだけを変更して同じコードからホスト型のClaudeやGPTに接続する方法を紹介します。
Ollamaはオープンモデルを自分のマシン上で実行し、OpenAI互換APIとしてhttp://localhost:11434/v1で公開します。通信形式がOpenAIと一致するため、公式OpenAI SDKは変更せずにOllamaで動作します。また、ベースURLだけを変更すれば、同じコードからホスト型の最先端モデルを利用できます。
http://localhost:11434/v1で利用できます。OpenAIクライアントのbase_urlをそこに設定し、任意のプレースホルダーapi_keyを指定します。代わりにホスト型のClaude/GPTを使うには、base_urlをhttps://api.kunavo.com/v1に変更し、モデルのslugを指定します。それ以外は変更不要です。OllamaのOpenAI互換APIとは
Ollamaは、Llama、Qwen、Mistralなどのモデルをローカルで実行するための独立したオープンソースプロジェクトです。ネイティブAPIに加えてOpenAI互換のインターフェースを備えているため、OpenAI向けに構築されたツールを変更せずに利用できます。多くのアプリが使う以下のエンドポイントを実装しています。
| エンドポイント | 目的 |
|---|---|
POST /v1/ | チャット — 多くのアプリが使うエンドポイント |
POST /v1/ | レガシーなテキスト補完 |
POST /v1/ | ローカルモデル向けの埋め込み |
GET /v1/models | ローカルにpull済みのモデルを一覧表示 |
チャット、補完、埋め込みに対応します(マルチモーダルなローカルモデルでは画像入力にも対応)。画像、動画、音声は生成しません。Kunavoも同じ/v1/chat/completions契約を実装しています。このリファレンスにはすべてのパラメーター、ストリーミングのdelta形式、usageオブジェクトが記載されており、Ollamaのv1インターフェースとの行ごとの互換性表も掲載しています。
OpenAI SDKでOllamaを呼び出す
base_urlをhttp://localhost:11434/v1に指定します。SDKではapi_keyが必須ですが、ローカルのOllamaはその値を無視するため、任意の文字列を渡してください。modelにはpull済みのモデル(例:ollama pull llama3.2)を設定します。
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1", # Ollama's OpenAI-compatible API
api_key="ollama", # required by the SDK, ignored by local Ollama
)
resp = client.chat.completions.create(
model="llama3.2",
messages=[{"role": "user", "content": "Explain quicksort in one paragraph."}],
)
print(resp.choices[0].message.content)curlを使う場合:
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama3.2",
"messages": [{"role": "user", "content": "Hello, Ollama"}]
}'同じコードでホスト型の最先端モデルを利用
Ollamaはオフライン開発やプライバシーが重要な用途に最適ですが、難しい推論、コーディング、長いコンテキストではローカルモデルは最先端モデルに及びません。KunavoもOpenAI互換なので、base_urlとモデルのslugを変更するだけで、呼び出しをホストモデルに切り替えられます。
from openai import OpenAI
client = OpenAI(
base_url="https://api.kunavo.com/v1", # only this line changes
api_key="sk-kn-...", # a real key now
)
resp = client.chat.completions.create(
model="claude-sonnet-5", # a hosted frontier model
messages=[{"role": "user", "content": "Explain quicksort in one paragraph."}],
)
print(resp.choices[0].message.content)| Ollama(ローカル) | Kunavo(ホスト型) | |
|---|---|---|
| ベースURL | localhost: | api. |
| 実行場所 | お使いのマシン | マネージドAPI |
| モデル | ローカルのオープンモデル | Claude、GPT、Veo、Suno |
| モダリティ | テキスト + 埋め込み | テキスト、画像、動画、音声 |
| コスト | お使いのハードウェア / 電気代 | トークン単位、公開価格より低価格 |
| 最適な用途 | オフライン開発、プライバシー | 本番環境で最先端の品質 |
環境変数で切り替える
よくある構成は、ローカル開発ではOllama、本番環境ではホストモデルを使い、環境変数で選択する方法です。クライアントとリクエストのコードは同じで、異なるのはbase_urlとモデルだけです。
import os
from openai import OpenAI
# One client, switched by environment. Local for dev, hosted for prod.
if os.getenv("APP_ENV") == "production":
client = OpenAI(base_url="https://api.kunavo.com/v1",
api_key=os.environ["KUNAVO_API_KEY"])
MODEL = "claude-haiku-4-5"
else:
client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
MODEL = "llama3.2"
resp = client.chat.completions.create(
model=MODEL,
messages=[{"role": "user", "content": "ping"}],
)
print(resp.choices[0].message.content)よくある質問
OllamaにはOpenAI互換APIがありますか?
はい。Ollamaは http://localhost:11434/v1 でOpenAI互換のREST APIを公開しており、/chat/completions、/completions、/embeddings、/modelsを利用できます。公式OpenAI SDKのbase_urlにこのURLを指定し、api_keyには任意の文字列を渡してください(ローカルではOllamaが無視します)。modelには、プル済みのllama3.2のようなモデルを設定します。リクエストとレスポンスの形式はOpenAIと一致します。
OllamaのOpenAI APIではどのベースURLを使いますか?
http://localhost:11434/v1 by default. Set the OpenAI client base_url to that value. If Ollama runs on another host or port, substitute it — the /v1 suffix stays.
Ollamaからホスト型モデルに切り替えるにはどうすればよいですか?
どちらもOpenAI互換のため、変更するのはbase_urlとmodelだけです。http://localhost:11434/v1 を https://api.kunavo.com/v1 に置き換え、有効なsk-kn-キーを使い、modelにはclaude-sonnet-5やclaude-haiku-4-5などのホスト型スラッグを指定します。それ以外のコード変更は不要です。
OllamaのOpenAI APIは画像や動画に対応していますか?
OllamaのOpenAI互換APIは、チャット、補完、埋め込みに加え、マルチモーダルなローカルモデルの画像入力に対応しています。画像、動画、音声の生成には対応していません。同じOpenAI形式のAPIでホスト型の画像、動画、音声を生成するには、Kunavoの /v1/images、/v1/video、/v1/audioエンドポイントを使ってください。