JA ▾
API キーを取得

Ollama APIとOpenAI API:エンドポイントとコード

Ollama api vs openai apiの質問は、2つのリクエスト形式とモデルを実行する2つの場所に集約されます。Ollamaには独自のネイティブAPIとOpenAI互換レイヤーがあり、ホストされたOpenAIスタイルのエンドポイントへの移行は、Base URLとキーの変更になる場合があります。

更新

2つの光ブリッジで接続されたデスクトップマシンとクラウドサーバー
光るケーブルでローカルコンピュータとクラウドサーバーに接続されたチャットウィンドウ

カード不要。サインアップ後、ワンクリックで $0.50 の無料トライアルクレジットを付与します(1 人 1 回限り)。

API キーを取得

主要ポイント

  • Ollamaは/api以下のネイティブルートと/v1以下のOpenAI互換レイヤーを持ちます。OpenAI SDK向けに書かれたクライアントは通常、どちらでも動作します。
  • ネイティブな Ollama は改行区切りの JSON をストリーミングしますが、OpenAI 形式は SSE(サーバー送信イベント)をストリーミングします。
  • ローカルからホスト型へ移行しても、変更するのはベース URL、キー、モデル名だけで、コードは変更不要です。
  • ローカルならデータはあなたのマシン上に残りますが、ホスト型ならハードウェアの負担がなくなり、トークン単位の課金になります。

簡易版

どちらもメッセージのリストを POST してテキストを返すことを求めます。違いはリクエストの形状、サーバーの場所、GPU の支払い主体です。Ollama はあなたのコンピュータ上でモデルを実行し、ポート 11434 で待ち受けます。OpenAI API は独自の有料モデルを持つホストサービスです。ollama api vs openai api の比較では、Ollama が OpenAI 互換ルートも公開しており、2 つの形式が重複するという第三の事実が見落とされがちです。

この重複が移行コストを低くします。アプリがすでに OpenAI SDK を使用している場合、ローカルの Ollama を指すように設定し、明日にはホスト型の OpenAI 互換 URL を指すことができます。このサイトのホストエンドポイントはその一つです。単一のモデルuncensoredをhttps://api.ollamansfw.com/v1で提供しており、OpenAI、Meta、その他のラボの公式製品ではありません。

エンドポイントごとの違い

タスクOllama ネイティブOpenAIスタイル
チャットPOST /api/chatPOST /v1/chat/completions
単一プロンプトPOST /api/generatePOST /v1/responses またはチャット補完エンドポイント
モデル一覧GET /api/tagsGET /v1/models
認証デフォルトなしAuthorization: Bearer key
ストリーミング改行区切りのJSONサーバー送信イベント(SSE)、done マーカーで終了
モデル名llama3など、pullしたモデル名などプロバイダがリストするもの

Ollamaは同じポートで/v1/chat/completionsと/v1/modelsも提供し、これによりOpenAIクライアントが動作します。デフォルトはストリーミングなので、単一JSON応答にはstream: falseを設定してください。

ホストエンドポイントはPOST /v1/chat/completions、POST /v1/responses、GET /v1/modelsを実装し、さらにGET /v1/balanceで残高確認を行います。完全なリストはAPIドキュメントをご覧ください。

同じリクエスト、3つの方法

PythonからネイティブにOllamaにアクセス:

import requests

r = requests.post(
    "http://localhost:11434/api/chat",
    json={
        "model": "llama3",
        "messages": [{"role": "user", "content": "Say hello in five words."}],
        "stream": False,
    },
)
print(r.json()["message"]["content"])

ローカル設定とホスト設定を並べたOpenAI SDKのコード例。コメント行のみが変更されます:

from openai import OpenAI

# Local Ollama through its OpenAI-compatible layer:
# client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

# Hosted endpoint, same code from here on:
client = OpenAI(base_url="https://api.ollamansfw.com/v1", api_key="YOUR_KEY")

resp = client.chat.completions.create(
    model="uncensored",   # local would be e.g. "llama3"
    messages=[{"role": "user", "content": "Say hello in five words."}],
)
print(resp.choices[0].message.content)

ストリーミングオンでホストエンドポイントに対するcurl:

curl https://api.ollamansfw.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"uncensored","messages":[{"role":"user","content":"Hello"}],"stream":true}'

ネイティブ側での解析は異なります:ストリーミングされた各行はmessage.contentを含む JSON オブジェクトであり、最後の行にはdone: trueが含まれます。OpenAI 形式では、各イベントはdata: で始まり、choices[0].delta.contentのデータ部分を持ち、ストリームは[DONE]で終了します。SDK を使用すれば、これらを見る必要はありません。

それぞれが適している場所

プライバシーが最優先の場合、モデルに必要なメモリを持つGPUがある場合、または多くのモデルで実験する場合は、ローカルのOllamaが最適です。データはマシンから離れず、トークンごとの請求もありません。コストはハードウェア、電力、あなたの時間として現れます。このルートの親しみやすい側面については、GUI付きのOllamaの利用に関するガイドをご覧ください。

ハードウェアがない場合、多くの同時リクエストが必要な場合、他の人のためのボットやサービスを実行する場合、またはラップトップが稼働していることに依存しない安定したURLを望む場合は、OpenAI互換のホストエンドポイントがより適しています。フルキーは8つの同時リクエストと1分あたり300のリクエストを許可します。コンテキストウィンドウは100,000トークンで、多くのローカルセットアップがメモリに保持できる量を超えています。

多くの人が両方を使用しています。実験用にはローカル環境を、常に稼働させる必要があるものにはホスティングサービスを利用します。他のローカルツールを検討している場合は、Ollamaソフトウェアの代替案をお読みください。

ローカルのOllamaからホストへの移行

  1. まずOpenAI形式に切り替えます。 コードが/api/chatを呼び出す場合、Ollamaの/v1ルートを指すOpenAI SDKに移動します。ローカルでまだ動作することを確認します。
  2. キーを取得します。 登録して、APIキーページで$0.50のトライアルを申請してください。支払い不要で、7日間有効です。
  3. 3つの値を変更します。 Base URLをhttps://api.ollamansfw.com/v1、キーをあなたのもの、モデルをuncensoredに変更します。
  4. パラメータを確認してください。 Temperature、top_p、stop、seed、ペナルティはそのまま渡されます。ローカル固有のオプション、例えば Ollama の num_ctx や keep_alive は適用されません。ウィンドウは 100,000 トークンで固定です。
  5. リトライロジックを追加します。 ホストAPIは制限を超えた場合にrate_limitedまたはconcurrencyで429を返し、一時的な過負荷中はRetry-After: 5で429を返します。ローカルサーバーは通常これを行わないため、既存のコードはこれを処理しない場合があります。

切り替え後にエラーが発生した場合は、一般的なOllama APIの間違いの記事で、ポートの誤りやモデル名の不足などの一般的な原因をカバーしています。

ホストのコストとできないこと

請求は前払いクレジットからの従量制です:入力トークン1Mあたり$0.15、出力トークン1Mあたり$0.50。1,000入力トークンと400出力トークンのチャットターンは$0.00015 + $0.0002 = $0.00035かかり、$20で約57,000回のそのようなターンがカバーされます。失敗または拒否されたリクエストは課金されず、クレジットは期限切れになりません。チャージは$20から$500まで行え、$50以上で+5%、$100以上で+10%、$200以上で+15%のボーナスがあります。支払いには暗号資産のみ(TRC20上のUSDTまたはBase上のUSDC)を使用します。詳細は料金ページをご覧ください。

知っておくべき制限:テキストのみなので、埋め込み、画像生成、ファインチューニングはありません。ローカルの埋め込みに依存している場合は、それらをローカルに維持してください。このモデルは法的な成人利用に対してコンテンツ拒否なしで回答するように調整されています。未成年者を含む性的コンテンツは常に禁止されています。プロンプトはトレーニングに使用されません。

質問と回答

Ollama APIはOpenAI APIと互換性がありますか?

部分的です。Ollamaには/api以下のネイティブルートがあり、/v1/chat/completionsのようなOpenAIスタイルのルートも提供するため、OpenAI SDKクライアントはこれと通信できます。

ローカルのOllamaからホストエンドポイントに移行するには何を変更すればよいですか?

Base URL、API キー、モデル名です。コードがすでにOpenAI SDKを使用している場合、それ以外の変更は必要ありません。

ホスト型APIはOllamaのような埋め込みに対応していますか?

いいえ。テキスト生成のみで、チャット完了とレスポンスに対応しますが、埋め込み、画像、ファインチューニングは対応していません。

Ollamaは無料ですか?

ソフトウェアのダウンロードと実行は無料です。ただし、ハードウェアと電力のコストは自己負担となり、ホスト型APIはトークンごとに課金されます。