OpenAI互換のAPI endpointとは何ですか?
OpenAI互換のAPI endpointとは、OpenAI APIと全く同じrequestおよびresponseの形式(同じ/v1/chat/completions schema、同じstreaming format、同じtool-call fields)に対応しているものです。そのため、公式のOpenAI SDKは、base URLとkeyを変更するだけで動作します。UberLLMはOpenAI互換(そして/v1/messagesではAnthropic互換)なので、切り替えはたった1行の変更で済みます。
簡潔な定義
endpoint が「OpenAI-compatible」であるとは、OpenAI API と同じ HTTP リクエストを受け付け、同じレスポンスの形を返す場合です。実際には、次のことを意味します:
POST /v1/chat/completionsのリクエストボディ(model、messages、temperature、tools、stream、…)がそのまま受け付けられます;- レスポンスは同じ
choices[].messageオブジェクトで、同じusagetoken 数です; - streaming は同じ server-sent-events の
data:チャンクを使い、最後は[DONE]で終わります; - tool / function calling は同じ
tool_callsフィールドを使います。
契約が一致しているので、公式の OpenAI SDK は — Python、JavaScript、その他のどの言語でも — base URL と API key だけを変更すれば、この endpoint に対して動作します。アプリケーションコードは違いを意識しません。
なぜ重要なのか
OpenAI互換性により、あるベンダーのAPIは事実上の標準となりました。互換性のあるendpointがあれば、すでに使用しているSDK、ツール、フレームワークの統合(LangChain、Vercel AI SDK、LlamaIndex、多数のagent framework)を維持したまま、それらの背後にあるものを変更できます。
それがUberLLMへの移行のすべてです。
from openai import OpenAI
client = OpenAI(
base_url="https://api.uberllm.dev/v1", # the only line that changes
api_key="ull_your_key_here",
)
resp = client.chat.completions.create(
model="deepseek/deepseek-v4-flash",
messages=[{"role": "user", "content": "Hello!"}],
stream=True,
)
サポートされているすべてのparametersについては、OpenAI SDK doc] を参照してください。
互換性 vs. 完全なドロップイン
「互換性」はスペクトラムです。リクエストの形式は受け入れるものの、ストリーミングに対応しなかったり、ツール呼び出しを無視したり、非標準の usage を返すエンドポイントには注意してください。UberLLM はストリーミング、ツール呼び出し、トークン使用量を含む chat-completions の契約を実装しており、さらに /v1/messages に Anthropic 互換のエンドポイントを公開しています。そのため、Anthropic SDK や Claude Code も変更なしで動作します — Anthropic SDK ドキュメント。
標準のendpointの裏側でUberLLMが提供するもの
endpointは標準的ですが、その背後のルーティングはそうではありません。指定されたモデルに対して、最も安価で健全な販売者にすべてのリクエストが送られ、出力前の失敗は次の販売者で再試行され、表示される価格(追加料金なし)がお客様が支払う価格となります。/modelsでモデルを、/llm-api-pricingでリアルタイム価格をご覧ください。