「OpenAI互換」とは、OpenAIの/v1/chat/completionsと同じ通信形式をAPIが使用することです。そのため、base_urlだけを変更すれば、任意のOpenAI SDKまたはツールを利用できます。Ollamaはマシン上でローカル実行されるモデル向けにOpenAI互換エンドポイントを提供します。Kunavoは、Claude、GPT、画像・動画・音声モデルなどのホスト型最先端モデル向けに、1つのBearerトークンで利用できるエンドポイントを提供します。このガイドでは、そのパターンと、コードを書き換えずに両者を切り替える方法を説明します。
「OpenAI互換」の意味
OpenAI Chat Completions形式は事実上の標準になりました。messages配列を入力し、choices[].messageを出力し、ストリーミングにはServer-Sent Events、関数呼び出しにはtoolsを使用します。この契約に準拠するエンドポイントは「OpenAI互換」です。公式のopenai SDK(Python、Node、および各種コミュニティポート)は、base_urlを設定することでそのエンドポイントを利用できます。
Ollamaパターン(ローカル)
Ollamaはオープンモデルをローカルで実行し、http://localhost:11434/v1で提供します。
from openai import OpenAI
# Ollama exposes an OpenAI-compatible endpoint on localhost
client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
resp = client.chat.completions.create(
model="llama3.1",
messages=[{"role": "user", "content": "Summarize this changelog."}],
)
print(resp.choices[0].message.content)同じコード、ホスト型の最先端モデル(Kunavo)
まったく同じSDKをKunavoに向けて、最先端モデルを選択します。変更するのはbase_url、api_key、modelだけで、呼び出しはバイト単位で同一です。
import os
from openai import OpenAI
# Same SDK, same call shape — only base_url, api_key and model change
client = OpenAI(
base_url="https://api.kunavo.com/v1",
api_key=os.environ["KUNAVO_API_KEY"],
)
resp = client.chat.completions.create(
model="claude-sonnet-5", # or claude-haiku-4-5, gpt-5-5, gpt-5-6-terra...
messages=[{"role": "user", "content": "Summarize this changelog."}],
)
print(resp.choices[0].message.content)/app/keysでキーを取得してください。クイックスタートにはNodeとcurlの形式があります。
ローカルとホスト型 — どちらを使うべきか
| Ollama(ローカル) | Kunavo(ホスト型) | |
|---|---|---|
| モデル品質 | オープンモデル(Llama、Qwen、Mistral) | 最先端:Claude、GPT |
| ハードウェア | お使いのGPU / RAM | なし — 完全ホスト型 |
| コスト | 無料(ご自身の電気代) | 従量課金、定価未満 |
| プライバシー | 完全オフライン | 米国でホストされ、モデルプロバイダーへ転送されます。プロバイダーの保持ポリシーが適用され、DPAやZDRはありません。 |
| マルチモーダル | 限定的 | 画像、動画、音声を1つのキーで利用 |
一般的な構成は、オフライン開発にはlocalhostでOllamaを使い、本番環境のホスト型品質にはKunavoを使う方法です。環境変数を1つ変更するだけで切り替えられます。両端が実装するフィールド単位の契約 — パラメータ、ストリーミングデルタ、tool_calls、usageオブジェクト、Ollamaのv1サーフェスとのパリティ表 — については、/v1/chat/completionsリファレンスと、そのOllama OpenAI互換性セクションをご覧ください。
実行時にモデルを検出する
Ollamaの/api/tagsと同様に、KunavoはOpenAI形式のカタログを公開しています。ハードコードせず、実行時にスラッグを解決してください。
# Discover every enabled model (OpenAI-shaped, like Ollama's /api/tags)
curl https://api.kunavo.com/v1/models \
-H "Authorization: Bearer $KUNAVO_API_KEY"チャット以外
同じキーで画像(/v1/images/generations)、動画(/v1/video/generations)、音声エンドポイントにアクセスできます。すべてOpenAI形式です。Kunavoが他のゲートウェイとどう異なるかは、マルチモーダルAIガイドとOpenRouterとの比較をご覧ください。
通常の「互換性」の定義を超える、知っておく価値のあるサーフェスが1つあります。それがPOST /v1/responsesです。Codex CLIはResponses API経由でのみカスタムプロバイダーを受け付けるため、多くのOpenAI互換ゲートウェイではまったく動かせません。Codexのトークン単価では、実行可能な設定ブロックを使ってこの仕組みを詳しく説明しています。キャッシュ済み入力を含むGPTワークロードの料金を計算するには、OpenAI API料金計算ツールにご自身のトークン数を入力してください。
よくある質問
OpenAI互換APIとは何ですか?
OpenAIの/v1/chat/completionsと同じ通信形式を使用するAPIです。リクエスト本文、レスポンス形式、ストリーミングが同じです。base_urlとapi_keyだけを変更すれば、任意のOpenAI SDKまたはツールを利用できます。Ollamaはローカルモデル向けに、Kunavoはホスト型の最先端モデル向けに提供しています。
Ollamaがローカルモデル向けに提供しているような、ホスト型モデル向けのOpenAI互換APIはありますか?
はい。OllamaのOpenAI互換エンドポイントは、ローカルモデルをマシン上で実行します。Kunavoは、ホスト型のClaude、GPT、さらに画像・動画・音声モデルを、1つのbase_url(https://api.kunavo.com/v1)と1つのBearerトークンの背後で実行します。呼び出しコードは同一です。
Ollamaをローカルで使い続けながら、本番環境ではKunavoを使えますか?
はい。一般的なパターンです。どちらもOpenAI互換なので、base_urlとmodelを入れ替えるだけで環境を切り替えられます。オフライン開発ではlocalhost上のOllama、本番ではホスト型の最先端品質を提供するKunavoを使います。SDKの変更は不要です。
OpenAI互換エンドポイント経由で呼び出せるモデルはどれですか?
有効化されているすべてのモデルです。チャット向けのClaude、GPTなどに加え、画像、動画、音声も、それぞれOpenAI形式のエンドポイントで利用できます。GET /v1/modelsは最新の一覧を返します。IDをハードコードせず、実行時にスラッグを解決してください。モデルカタログをご覧ください。
レート制限について教えてください。
各プロバイダーが独自の上限を計測します。429はその上限を超えたことを意味します。どの制限が発動したかの読み取り方と、それを解消するバックオフについてはOpenAI APIのレート制限、Anthropicの場合はClaude API 429 rate_limit_errorをご覧ください。