ブログに戻る

AI入門ガイド

OpenAI互換API: base_urlとは何か、切り替え方法

OpenAI互換APIはOpenAIと同じリクエストを受け付けます。base_url、キー、モデルIDを変更するだけで、コードはCheapTokensへ最初のリクエストを送信します。

投稿者: CheapTokens Team公開日 更新日 読了時間 6 分

OpenAI互換APIに切り替えるときに変更する3つの値: base_url、APIキー、モデルID
このページの内容
  1. 「OpenAI互換」とはどういう意味ですか?
  2. base_urlとは何ですか?
  3. 変更する3つの値
  4. Pythonでの最初のリクエスト
  5. curlでの同じリクエスト
  6. 表示されるべきもの
  7. コストはいくらですか?
  8. うまくいかない場合
  9. 次のステップ

OpenAI互換APIとは、OpenAIのChat Completions APIと同じ形式でリクエストを受け付け、同じ形式で応答するAPIです。アプリを別のプロバイダーに移行するには、通常3つの値を変更します: base_url(リクエストの送信先)、APIキー、モデルIDです。メッセージリストや応答の読み取り方を含む残りのコードはそのままです。

このガイドでは考え方を平易な言葉で説明し、最後にPythonとcurlでCheapTokensへの最初のリクエストを実際に動かします。CheapTokensに関する事実は、2026年10月22日時点のドキュメントで確認しました。

「OpenAI互換」とはどういう意味ですか?#

APIとは、インターネット経由でサービスと通信するためのルールの集合です(この言葉が初めてなら、最初のAPIリクエストの仕組みから始めてください)。OpenAIのチャット形式は共通標準となり、多くのプロバイダーやツールが同じリクエストボディを受け付け、同じ応答形状を返します。そのようなAPIはOpenAI互換と呼ばれます。

実際には、互換プロバイダーでは次の3点が同じです:

  • リクエスト: modelフィールドとmessagesリストを持つJSONボディ。各メッセージにはrole(system、user、assistant)とcontentがあります。
  • エンドポイントパス: ベースURLの後に付加される/chat/completions。
  • 応答: 生成されたテキストがchoices[0].message.contentに入ったJSONオブジェクト。

形式が共有されているため、公式SDKや多くのアプリは互換プロバイダーと通信できます。必要なのはリクエストの送信先を知ることだけです。

base_urlとは何ですか?#

base_urlは、すべてのリクエストの先頭に付くアドレスです。SDKは呼び出しのパスを付加して完全なアドレスを構築します。

部分 例
base_url https://api.cheaptokens.dev/v1
SDKが付加するパス /chat/completions
リクエストの完全なアドレス https://api.cheaptokens.dev/v1/chat/completions

つまり、別のbase_urlを設定すると、同じコードが同じ種類のリクエストを別のサーバーに送信します。CheapTokensのベースURLはhttps://api.cheaptokens.dev/v1です。そのAPIはOpenAI Chat CompletionsおよびAnthropic Messagesと互換性があり、1つの前払い残高ですべてのモデルをカバーします。

変更する3つの値#

値 内容 取得元
base_url APIのアドレス https://api.cheaptokens.dev/v1
APIキー API用の秘密パスワード CheapTokensアカウント。APIキーとは何か、安全に保管する方法を参照
モデルID modelフィールド内のモデルの正確な名前 CheapTokensドキュメント

モデルIDには注意が必要です。プロバイダーによって同じモデルに異なるIDが付くため、他のサービスのIDはここでは機能しません。IDはCheapTokensドキュメントから取得してください。現在利用可能なID:

モデル モデルID コンテキスト 応答あたりの最大出力
GLM-5.3-Flash zai-org/GLM-5.3-Flash 390K 8,192トークン
DeepSeek-V4-Flash deepseek-ai/DeepSeek-V4-Flash-0731 380K 32,768トークン
MiniMax-M2.7 MiniMaxAI/MiniMax-M2.7 180K 8,192トークン

DeepSeek-V4-Flashは応答あたり最大32,768トークンを返し、コンテキストは380Kです。GLM-5.3-Flashのコンテキストは390K、MiniMax-M2.7は180Kです。3つとも同じ残高から課金されるため、切り替えはモデルIDの変更だけで済みます。

Pythonでの最初のリクエスト#

openaiパッケージをインストールし、キーをコードに書かず環境変数に保存します:

bash
pip install openai
export CHEAPTOKENS_API_KEY="YOUR_CHEAPTOKENS_KEY"

次にコードです。標準的なOpenAIの例との違いはbase_url引数、キー、モデルIDだけです:

python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",   # 1. where requests go
    api_key=os.environ["CHEAPTOKENS_API_KEY"],   # 2. your CheapTokens key
)

response = client.chat.completions.create(
    model="MiniMaxAI/MiniMax-M2.7",                # 3. model id from the docs
    messages=[
        {"role": "system", "content": "You answer briefly."},
        {"role": "user", "content": "Explain base_url in one sentence."},
    ],
)

print(response.choices[0].message.content)

例のキーはプレースホルダーです: YOUR_CHEAPTOKENS_KEYを自分のキーに置き換え、実際のキーをリポジトリにコミットしないでください。

既存のアプリが設定ファイルや環境変数から設定を読み込む場合、コードを編集する必要はまったくありません。base URL、API base、endpointといったフィールドを探し、同じ3つの値をそこに入力してください。

curlでの同じリクエスト#

curlはSDKが裏で行っていることを示します: ベースURLとパスの結合、Authorizationヘッダーのキー、JSONボディです。

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMaxAI/MiniMax-M2.7",
    "messages": [
      {"role": "user", "content": "Explain base_url in one sentence."}
    ]
  }'

表示されるべきもの#

すべてが正しく設定されていれば、Pythonスクリプトは短いテキストの応答を出力し、curlはJSONオブジェクトを出力します。choicesリストを探してください: 応答のテキストはchoices[0].message.contentにあります。それが表示されれば、CheapTokensへの最初のリクエストは成功しており、実際のアプリに進めます。

コストはいくらですか?#

課金はトークン単位で、入力と出力は別々にカウントされます(入力トークンと出力トークンを参照)。例えば、MiniMax-M2.7は現在、入力100万トークンあたり$0.05、出力100万トークンあたり$0.15です。以下の表は常にすべてのモデルの現在価格を示し、ピーク時間の割増はありません。

モデル コンテキスト 入力 $/1M 出力 $/1M OpenRouter 入力 OpenRouter 出力
GLM-5.3-Flash reasoning 390K $0.02 $0.04 $0.0413 $0.0758
DeepSeek-V4-Flash 380K $0.015 $0.10 $0.0475 $0.1568
MiniMax-M2.7 180K $0.05 $0.15 $0.30 $1.20

価格は100万トークンあたりのUSD表記です。OpenRouterの数値は比較用であり、変更される可能性があります。

全モデルの価格はCheapTokens料金ページにもあります。

うまくいかない場合#

  • 認証エラー(通常401): キーがない、入力ミス、余分なスペースがある。環境変数がスクリプトを実行するのと同じターミナルで設定されているか確認してください。
  • 「Not found」(通常404): base_urlを確認してください。/v1で終わる必要があり、SDKを使う場合は/chat/completionsを自分で追加しないでください。パスが二重になります。
  • 不明なモデル: 上の表またはドキュメントからモデルIDを正確にコピーしてください。大文字とスラッシュより前の部分も含めてください。
  • 接続できない、またはタイムアウト: 一般的な接続エラーとその修正方法を参照してください。
  • 応答が途中で切れる: max_tokensの上限に達しています。AIの応答が途中で止まる理由で説明しています。

次のステップ#

最初のリクエストが成功したら、Pythonでのストリーミングを追加したり、同じ3つの値をエディターやエージェントに設定したり、AIモデル名の読み方を読んだりできます。セットアップの詳細と全モデルリストはCheapTokensドキュメントにあります。