AI入門ガイド
OpenAI互換API: base_urlとは何か、切り替え方法
OpenAI互換APIはOpenAIと同じリクエストを受け付けます。base_url、キー、モデルIDを変更するだけで、コードはCheapTokensへ最初のリクエストを送信します。

このページの内容
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].に入ったJSONオブジェクト。message. content
形式が共有されているため、公式SDKや多くのアプリは互換プロバイダーと通信できます。必要なのはリクエストの送信先を知ることだけです。
base_urlとは何ですか?#
base_urlは、すべてのリクエストの先頭に付くアドレスです。SDKは呼び出しのパスを付加して完全なアドレスを構築します。
テーブルを右にスクロールしてください →
| 部分 | 例 |
|---|---|
base_url |
https:/ |
| SDKが付加するパス | / |
| リクエストの完全なアドレス | https:/ |
つまり、別のbase_urlを設定すると、同じコードが同じ種類のリクエストを別のサーバーに送信します。CheapTokensのベースURLはhttps:/です。そのAPIはOpenAI Chat CompletionsおよびAnthropic Messagesと互換性があり、1つの前払い残高ですべてのモデルをカバーします。
変更する3つの値#
テーブルを右にスクロールしてください →
| 値 | 内容 | 取得元 |
|---|---|---|
base_url |
APIのアドレス | https:/ |
| APIキー | API用の秘密パスワード | CheapTokensアカウント。APIキーとは何か、安全に保管する方法を参照 |
| モデルID | modelフィールド内のモデルの正確な名前 |
CheapTokensドキュメント |
モデルIDには注意が必要です。プロバイダーによって同じモデルに異なるIDが付くため、他のサービスのIDはここでは機能しません。IDはCheapTokensドキュメントから取得してください。現在利用可能なID:
テーブルを右にスクロールしてください →
| モデル | モデルID | コンテキスト | 応答あたりの最大出力 |
|---|---|---|---|
| GLM-5.3-Flash | zai- |
390K | 8,192トークン |
| DeepSeek-V4-Flash | deepseek- |
380K | 32,768トークン |
| MiniMax-M2.7 | MiniMaxAI/ |
180K | 8,192トークン |
DeepSeek-V4-Flashは応答あたり最大32,768トークンを返し、コンテキストは380Kです。GLM-5.3-Flashのコンテキストは390K、MiniMax-M2.7は180Kです。3つとも同じ残高から課金されるため、切り替えはモデルIDの変更だけで済みます。
Pythonでの最初のリクエスト#
openaiパッケージをインストールし、キーをコードに書かず環境変数に保存します:
pip install openai
export CHEAPTOKENS_API_KEY="YOUR_CHEAPTOKENS_KEY"次にコードです。標準的なOpenAIの例との違いはbase_url引数、キー、モデルIDだけです:
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_を自分のキーに置き換え、実際のキーをリポジトリにコミットしないでください。
既存のアプリが設定ファイルや環境変数から設定を読み込む場合、コードを編集する必要はまったくありません。base URL、API base、endpointといったフィールドを探し、同じ3つの値をそこに入力してください。
curlでの同じリクエスト#
curlはSDKが裏で行っていることを示します: ベースURLとパスの結合、Authorizationヘッダーのキー、JSONボディです。
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].にあります。それが表示されれば、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ドキュメントにあります。



