Ollama OpenAI互換API:アクセス、料金、統合、本番運用ガイド
Ollama OpenAI互換APIを使用すると、アプリケーションは使い慣れたOpenAI SDKの形式を維持したまま、リクエストをローカルのOllamaサーバーまたはOllama Cloudに直接送信できます。これは便利ですが、機能が完全に1対1で互換であることを保証するものではありません。OllamaはOpenAI APIのサブセットをサポートしていると文書化しており、一部の機能は選択するエンドポイントとモデルに依存します。
このガイドでは、このインターフェースへのアクセス方法、既存のPythonまたはJavaScriptアプリケーションでの設定方法、クラウドとローカルのコストの違い、そして実運用に必要な境界を設ける方法を説明します。
簡単な回答:ローカルのOllamaサーバーには
http://localhost:11434/v1/を使用し、SDKで必須だがOllamaでは無視されるプレースホルダーAPIキーを指定します。クラウドへ直接アクセスするには、https://ollama.com/v1とOLLAMA_API_KEYを使用します。ストリーミング、ビジョン、ツール、構造化出力、Responses APIの動作に依存する前に、正確なエンドポイントとモデルを検証してください。
Ollamaにおける「OpenAI互換」とは何を意味するのか?
これはOpenAIクライアントとの統合インターフェースであり、OpenAIがホストするAPIではありません。互換クライアントをOllamaのベースURLに向け、チャット補完、埋め込み、モデル検出、ステートレスなResponsesリクエストなど、サポートされるルートを使用できます。
サポート対象のサブセットについては、Ollamaの互換性リファレンスが正確な情報源です。特に次の点に注意してください。
/v1/chat/completionsは、ストリーミング、JSONモード、ビジョン、ツール、再現可能な出力、logprobs、および互換モデルにのみ適用される制御を含む機能をサポートします。/v1/embeddingsは文字列および配列の入力をサポートします。/v1/modelsおよび/v1/models/{model}はモデル検出をサポートしますが、返されるフィールドの一部にはOllama固有の意味があります。POST /v1/responsesは利用可能ですが、ステートレスです。previous_response_idやconversationに依存しないでください。
本番環境で機能を有効にする前に、最新のOllama OpenAI compatibility referenceを確認してください。「互換」はクライアントとリクエスト形式を再利用する理由として扱うべきであり、機能テストを省略する理由ではありません。
Ollama OpenAI互換APIへのアクセス:ローカルとクラウド
最も簡単な実装上の選択は、推論を自分のマシンで実行するか、Ollamaのクラウドエンドポイントに送信するかです。
| 判断項目 | ローカルOllamaサーバー | Ollama Cloudへ直接接続 |
|---|---|---|
| OpenAI互換ベースURL | http://localhost:11434/v1/ |
https://ollama.com/v1 |
| 認証 | ローカルAPIには認証なし。OpenAI SDKには空でないプレースホルダー値が必要 | OLLAMA_API_KEYによるBearer APIキー |
| モデルのセットアップ | 使用前にローカルモデルをプルする | クラウド対応モデルを選択する。ローカルへのOllamaインストールは不要 |
| コストの形態 | Ollamaからのトークン単位のプロバイダー請求はないが、ハードウェア、電力、ストレージ、運用、容量は自分で負担する | 公開されているトークン単位料金とアカウントクレジット |
| 最初に適した用途 | ローカル開発、オフラインで制御された環境、または自ら運用するハードウェア | 迅速なホスト型評価と、自前のGPUフリートに依存すべきでないワークロード |
| 主な本番環境での懸念点 | ネットワーク公開、ホスト容量、キュー、モデルライフサイクル | キー管理、支出管理、モデルの可用性、統合上の制限 |
この区分は、OllamaのAPI introductionおよびauthentication guideで説明されています。クラウドへの直接呼び出しにはAPIキーが必要です。ローカル呼び出しには必要ありません。
ローカルセットアップ
Ollamaをインストールしてから、使用するモデルをプルします。Ollamaのドキュメントでは、以下の一般的なパターンが示されています。
ollama pull gpt-oss:20b
ollama serve
次に、ローカルエンドポイントでモデルを列挙できることを検証します。
curl http://localhost:11434/v1/models
この接続に失敗する場合は、アプリケーションコードを変更する前にローカルサーバーの問題を解決してください。APIベースURLとモデル一覧がすでに独立して機能している状態であれば、クライアント移行のデバッグははるかに容易になります。
クラウド直接接続のセットアップ
クラウドを直接使用する場合は、OllamaアカウントでAPIキーを作成し、環境変数に設定します。
export OLLAMA_API_KEY="replace-with-your-key"
クラウドのベースURLはhttps://ollama.com/v1です。Ollamaは、ホスト型APIでAuthorization: Bearerを使用すると文書化しています。長期間有効なキーをブラウザーコード、リポジトリ、またはクライアント側の設定ファイルに配置しないでください。
OpenAI SDKでOllama OpenAI互換APIを統合する
移行の要点はクライアント設定です。アプリケーションのメッセージとエラー処理は独自のインターフェースの背後に維持し、ベースURL、キー、モデル設定のみを切り替えます。
Python:ローカルサーバー
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1/",
api_key="ollama", # required by the SDK; ignored by the local server
)
response = client.chat.completions.create(
model="gpt-oss:20b",
messages=[
{"role": "user", "content": "Summarize the production risks of exposing a local API."}
],
)
print(response.choices[0].message.content)
ローカルエンドポイントはリクエストを認証しません。プレースホルダーキーは OpenAI クライアントが値を必要とするためだけに存在し、ローカルサーバーを保護するものではありません。
Python:クラウドに直接接続
import os
from openai import OpenAI
client = OpenAI(
base_url="https://ollama.com/v1",
api_key=os.environ["OLLAMA_API_KEY"],
)
response = client.chat.completions.create(
model="gemma4:31b",
messages=[
{"role": "user", "content": "Give one sentence on safe API key storage."}
],
)
print(response.choices[0].message.content)
コードの形は意図的に似せています。しかし、運用上の違いはそうではありません。クラウドへの直接呼び出しは API キーと選択したクラウドモデルに依存し、ローカル呼び出しはプルしたモデルとホストで利用可能なリソースに依存します。
JavaScript:エンドポイントを設定可能に保つ
import OpenAI from "openai";
const client = new OpenAI({
baseURL: process.env.OLLAMA_BASE_URL ?? "http://localhost:11434/v1/",
apiKey: process.env.OLLAMA_API_KEY ?? "ollama",
});
const completion = await client.chat.completions.create({
model: process.env.OLLAMA_MODEL ?? "gpt-oss:20b",
messages: [{ role: "user", content: "Return a concise health-check message." }],
});
console.log(completion.choices[0].message.content);
デプロイごとに環境変数を設定します。
# Local
OLLAMA_BASE_URL=http://localhost:11434/v1/
OLLAMA_API_KEY=ollama
OLLAMA_MODEL=gpt-oss:20b
# Direct cloud
OLLAMA_BASE_URL=https://ollama.com/v1
OLLAMA_API_KEY=replace-with-your-key
OLLAMA_MODEL=gemma4:31b
この設定により、後からルートやモデルを変更する際に、その変更が明示的かつレビュー可能になります。また、環境固有のベース URL がアプリケーションの隠れた挙動になることも防げます。
互換性マトリクス:リリース前にテストすべきこと
Ollama OpenAI 互換 APIは、互換性を前提ではなくテスト計画として扱う場合に最も役立ちます。
| 領域 | Ollama が文書化している内容 | 本番での対応 |
|---|---|---|
| Chat Completions | ストリーミング、JSON モード、ビジョン、ツール、およびその他のサポート対象フィールドを備えた /v1/chat/completions |
実際のスキーマ、ツール定義、ストリームパーサー、選択したモデルをテストする |
| Responses API | ステートレスなリクエストに対応する POST /v1/responses |
previous_response_id や conversation に依存しない。会話状態はアプリで永続化する |
| Embeddings | /v1/embeddings は文字列、文字列配列、トークン配列、次元数を受け付ける |
モデルを変更するたびに、ベクトル長、正規化に関する前提、検索品質を検証する |
| モデル検出 | /v1/models は Ollama 固有のフィールド意味論で動作する |
結果は汎用的な機能レジストリではなく、インベントリとして扱う |
| ビジョンとツール | モデルがサポートしている場合、API 表面でサポートされる | これらの機能はエンドポイント名だけでなく、モデルのテスト結果に基づいて有効化する |
| Cloud Responses の制限 | クラウドリファレンスでは、ステートフルな Responses、/v1/responses 経由の組み込み Web 検索、カスタム/自由形式のツール呼び出し再生は除外される |
機能マトリクスをソース管理し、リリース前にフォールバックパスを選択する |
チームがよく驚く点は 2 つあります。
- 状態はアプリケーションに属します。 Ollama にステートフルな Responses の挙動を期待するのではなく、アプリが必要とするメッセージまたは会話状態を保存する必要があります。
- モデル名は機能を保証するものではありません。 互換エンドポイントを使用していても、ワークフローに必要な品質やツールの挙動を提供できない場合があります。モデル、プロンプトサイズ、出力制限、ツールをまとめてテストしてください。
既存の統合でデフォルトの OpenAI モデル名がハードコードされている場合、Ollama は一時的なローカルモデルエイリアスを作成する方法として ollama cp を文書化しています。これは意図的な互換性シムとしてのみ使用し、エイリアスを文書化したうえで、設定が明示的になったら削除してください。
Ollama の料金:ローカル TCO とクラウドのトークン単価
Ollama OpenAI 互換 API の料金は、経路によって異なります。
ローカル推論はトークン課金ではないが、無料ではない
ローカルモデルの実行では、トークンごとの Ollama クラウド請求は発生しません。ただし、以下のような運用コスト特性が生じます。
- GPU または CPU の容量、RAM/VRAM、ストレージ、マシンの減価償却
- 電力と冷却
- モデルのプル時間とイメージストレージ
- キャパシティプランニング、監視、パッチ適用、インシデント対応
- 低レイテンシーのリクエストに備えてモデルをウォーム状態に維持する機会費用
個人開発者にとっては、これは優れたトレードオフになり得ます。トラフィックの急増がある製品や複数のモデルを扱う製品では、ハードウェア利用率と信頼性のための作業を、生の推論コストと併せて計算してください。
直接クラウド料金は100万トークン単位で公開されています
Ollamaのライブ料金ページには、100万トークンあたりのクラウド料金が記載されており、入力、キャッシュされた入力、出力の料金がそれぞれ分かれています。以下の例は2026年10月22日に確認したものです。調達およびデプロイの判断には、ライブ料金表を使用してください。
| クラウドモデルの例 | 入力 / 100万トークン | キャッシュされた入力 / 100万トークン | 出力 / 100万トークン |
|---|---|---|---|
gpt-oss:20b |
$0.07 | $0.035 | $0.30 |
gemma4 |
$0.14 | $0.05 | $0.40 |
deepseek-v4.1-flash |
$0.30 | $0.006 | $1.20 |
Ollamaの料金ページでは、対象エントリに対するオフピーク料金についても説明されています。モデル名だけで予算を組まないでください。実際のルート、モデル、タイミングに適用される料金行を使用してください。
実用的な月額見積もりは次のとおりです。
monthly_cloud_cost =
(input_tokens / 1,000,000 × input_rate)
+ (cached_input_tokens / 1,000,000 × cached_input_rate)
+ (output_tokens / 1,000,000 × output_rate)
たとえば、上記で公開されているgpt-oss:20b料金では、キャッシュされていない入力トークン100万件と出力トークン25万件は、料金変更やアカウント固有のクレジットを考慮する前に$0.145と見積もられます。本番環境の予測には、推測したチャットの長さではなく、観測されたトークンテレメトリーを使用してください。
本番運用ガイド:公開する前にローカルサーバーを保護する
Ollama OpenAI互換APIにおける最も重要な本番運用ルールはシンプルです。ローカルのOllamaサーバーはデフォルトで認証されていません。
Ollamaはデフォルトで127.0.0.1:11434にバインドします。ドキュメントでは、OLLAMA_HOSTでバインドアドレスを変更できること、およびNginxなどのプロキシでサーバーにトラフィックを転送できることが示されています。これらは実装上の選択肢であり、認証ではありません。サービスをlocalhostの外部に移す場合は、意図的な制御を設けてください。
本番運用チェックリスト
- 定義済みのアクセスパスがない限り、デフォルトのループバックバインディングを維持してください。ポート
11434をインターネットに直接公開しないでください。 - エッジでTLSと認証を設定してください。環境に適したリバースプロキシ、プライベートネットワーク、サービスID、およびクライアントごとの認可を使用してください。ダミーのOpenAI SDKキーはアクセス制御ではありません。
- ブラウザオリジンを狭く許可してください。Ollamaは、追加で許可するオリジン向けに
OLLAMA_ORIGINSを文書化しています。アクセスを必要とする正確なWebアプリまたは拡張機能のオリジンだけを追加し、包括的なクロスオリジン回避策にしないでください。 - モデルの許可リストを使用してください。要求される
modelは検証する入力として扱ってください。本番環境の呼び出し元が任意のモデルを取得したり、未レビューのモデルを選択したりできるべきではありません。 - キューポリシーを設定し、過負荷を処理してください。Ollamaは、過負荷のサーバーがHTTP 503を返す可能性があることを文書化しており、
OLLAMA_MAX_QUEUEを公開しています。指数バックオフとジッターを伴う上限付きリトライを使用し、その後、制御された失敗を呼び出し元に返してください。 - VRAMと同時実行性をまとめてキャパシティプランニングしてください。
OLLAMA_NUM_PARALLELはモデルごとの並列性を高めますが、それに伴ってメモリ要件も増加します。OLLAMA_MAX_LOADED_MODELSとOLLAMA_KEEP_ALIVEは、モデルがどの程度積極的にメモリを占有するかを決定します。 - 重要な経路を計測してください。レイテンシ、キュー時間、HTTP 503、アクティブなモデルのインベントリ、リクエストサイズ、ストリーム切断、ツール呼び出しエラー、GPU/CPUメモリ圧力を追跡してください。
ollama psは、ロード済みモデルがどこで実行されているかを確認するのに役立ちます。 - 再起動とコールドスタートをテストしてください。ローカルモデルは、デプロイまたは退避後にロード時間を必要とする場合があります。APIが顧客向けワークフローを支える前に、負荷、ロールバック、タイムアウトの訓練を実施してください。
- シークレットをクライアントに含めないでください。クラウドモードでは、
OLLAMA_API_KEYをフロントエンドバンドルではなく、サーバー側のシークレットマネージャーまたは保護されたランタイム環境に保存してください。 - 依存関係のバージョンだけでなく、受け入れテストスイートを固定してください。Ollamaをアップグレードする、モデルを変更する、またはルーティングレイヤーを変更するたびに、チャット、ストリーミング、ツール、JSON、ビジョン、レスポンス状態のテストを再実行してください。
OllamaのFAQには、これらの推奨事項の背景となるバインドアドレス、CORS設定、キュー動作、同時実行設定、およびローカル/クラウド制御が文書化されています。
より安全な導入パス
ローカルで開始し、後にホスト型モデルを使用する可能性があるアプリケーションでは、次の順序を使用してください。
- ローカルエンドポイントを検証する。 モデルを1つプルし、モデルを一覧表示して、非ストリーミングのチャット補完を送信します。
- OpenAIクライアント設定を安定化する。 ベースURL、APIキー、モデルを、コードベース全体に散在するリテラルではなく環境変数にします。
- 互換性スイートを作成する。 JSON出力、ストリーミング、すべてのツールスキーマ、該当する場合は画像入力、タイムアウト動作、不正なリクエストを含めます。
- ホストを負荷テストする。 レイテンシ、キュー深度、VRAM/RAM、および503が発生し始める時点を記録します。
- リモートアクセスの前に認証済みエッジを追加する。 Ollamaはアプリケーションサービスまたは信頼できるプロキシの背後に置き、非公開に保ちます。
- クラウドモードは別途評価する。 専用のクラウドキー、許可リストに登録したモデル、予算アラート、クラウド固有のResponses制限をカバーするテストケースを使用します。
- プロバイダーの選択をビジネスロジックから切り離す。 プロダクトでホスト型モデルの比較やフォールバック経路の追加が必要な場合は、OpenAIクライアントの契約を小さなアダプターの背後に維持します。
最後のステップでは、OpenAI互換APIゲートウェイ移行チェックリストが、クライアント統合をモデルプロバイダーの選択から分離するのに役立ちます。プロバイダーごとに新しいクライアントパターンを追加せずに複数のホスト型プロバイダーを評価したい場合は、Flatkey APIクイックスタートと、AI APIゲートウェイが有用となる場面を判断するガイドをご覧ください。
Ollama OpenAI互換APIでよくある間違い
localhostサーバーを保護されたサービスのように扱う
ローカルリクエストが機能するのは、アクセスが認証されているからではなく、プロセスが同じマシン上にあるためかもしれません。バインドアドレス、トンネル、プロキシ、コンテナポートのいずれかが変わったら、ID、ネットワークポリシー、TLS、監査ログを見直してください。
OpenAIとの機能同等性を前提にする
Ollamaは、OpenAI APIのサブセットを明示的にサポートしています。CIに機能チェックを組み込み、単なる200レスポンスだけでなくセマンティクスもテストしてください。ローカルでパースできるツール定義でも、モデルを切り替えた後には異なる動作をする可能性があります。
クラウドの価格表示を予算として扱う
入力、キャッシュ済み入力、出力の料金は大きく異なる場合があります。トークンフィールドをログに記録し、成功したタスクあたりの実効コストを計算し、固定予算を確定する前に料金ページを再確認してください。
メモリモデルなしに並列性を上げる
並列リクエストを増やすと、コンテキストとメモリの要件が増加する可能性があります。並行性設定を変更する前に、代表的なプロンプトで実際のホスト負荷を監視してください。
ブラウザにクラウドキーを渡す
ブラウザからクラウドへの直接呼び出しでは、キーのローテーション、予算管理、不正利用防止がはるかに困難になります。クラウドキーは信頼できるバックエンドに保持し、アプリケーションに必要な操作のみを公開してください。
FAQ
OllamaのOpenAI互換APIはOpenAI APIと同じですか?
いいえ。Ollamaの互換性レイヤーは、互換クライアントがOllamaに接続できるよう、文書化されたOpenAI APIのサブセットをサポートしています。機能を移植可能なものとして扱う前に、Ollamaの互換性リファレンスで個々のエンドポイントとフィールドを確認してください。
ローカルのOllama APIにはAPIキーが必要ですか?
いいえ。Ollamaによると、ローカルAPIに認証は必要ありません。SDKの例にあるapi_key="ollama"の値は、空でない値を求めるクライアント要件であり、認証情報ではありません。ローカルサーバーはlocalhost上に保持するか、リモート公開前に実際の制御を追加してください。
Ollama CloudにはAPIキーが必要ですか?
はい。https://ollama.com/v1への直接クラウドアクセスには、Bearerトークンとして渡すAPIキーが必要です。サーバー側に保存してください。
/v1/responsesは使用できますか?
はい。ステートレスなResponsesリクエストに対して使用できます。previous_response_idやconversationには依存しないでください。クラウドドキュメントでは、組み込みWeb検索およびカスタム/フリーフォームのツール呼び出し再生に関する制限も示されています。
Ollama OpenAI互換APIは無料ですか?
ローカル推論にはOllama Cloudのトークン単位料金はかかりませんが、実行するハードウェアと運用には引き続き費用がかかります。直接クラウド推論では、公開されているトークン単位の料金とアカウントクレジットが使用されます。
代わりにゲートウェイを使用すべきなのはどのような場合ですか?
ローカル/クラウドの経路がワークロードのモデル、プライバシー、運用上のニーズを満たす場合は、Ollamaを直接使用してください。プロダクトで複数のホスト型プロバイダーにわたる一貫した統合、モデル評価ワークフロー、または別のフォールバック経路が必要な場合は、ゲートウェイを検討してください。まず明確な統合AI APIの判断から始め、その後も同じアプリケーションレベルのクライアントアダプターを維持してください。
結論
Ollama OpenAI互換APIは、開発者がローカルまたはクラウドで提供されるモデルでOpenAI SDKを再利用するための実用的な方法を提供します。安全な実装は、単なるベースURLの変更ではありません。テスト済みの機能マトリックス、明確なローカルとクラウドのコストモデル、非公開のローカルデプロイメント境界、キューとモデルメモリに対する負荷テスト済みの計画が必要です。
制御が必要で、ハードウェアを運用できる場合はローカルから始めましょう。同じクライアント形式でホスト型推論を利用したい場合は、直接クラウドを使用してください。いずれの場合も、エンドポイントの選択を設定可能にし、サポートする各機能が本番テストスイートで採用されるだけの価値を持つようにしてください。



