AI入門ガイド
入力トークンと出力トークン:AI APIが課金するもの
AI APIが入力トークンと出力トークンを別々に数える理由、usageフィールドでの確認場所、1リクエストのコスト計算方法を説明します。

言語モデルへの最初のAPI呼び出しを行ったばかりなら、レスポンスに含まれるusageブロックを見て、これが正確に何を数えているのか疑問に思ったことでしょう。簡単に言えば、すべてのリクエストには2つのメーターがあります。1つは送信したトークン(入力)を数え、もう1つはモデルが書き戻したトークン(出力)を数えます。各メーターにはそれぞれの価格があり、リクエストのコストは両方の合計です。
このガイドでは、数値の確認場所、ドルへの換算方法、支出を減らすために変更できる点を説明します。「トークン」という言葉がまだ曖昧な場合は、AIにおけるトークンとは?から始めてください。
入力と出力の境界#
入力トークンは、モデルがあなたに答えるために読む必要があるすべてのものです:
- 最新のメッセージ;
- システムプロンプト(「簡潔に英語で答えて」などの指示);
- 会話の以前のメッセージ(再送信する場合);
- リクエストに貼り付けたドキュメント、コード、検索結果。
出力トークンは、モデルが返信として生成するすべてのものです。OpenAI互換形式では、これはchoices[0].内のテキストです。一部のモデルは思考モードで最終回答の前に推論トークンを生成します。出力として課金されるかどうかは、モデルの料金ページを確認してください。
初心者にとって重要な点:モデルはリクエスト間でチャットを記憶しません。チャットアプリは毎回履歴全体を再送信するため、長い会話の入力はターンごとに増加します。新しいメッセージが1行であってもです。
数値の確認場所:usageブロック#
OpenAI互換APIからの非ストリーミングレスポンスは、必ずusageオブジェクトで終わります。これはその形状を示す教育用の例です:
{
"choices": [
{ "message": { "role": "assistant", "content": "..." }, "finish_reason": "stop" }
],
"usage": {
"prompt_tokens": 2000,
"completion_tokens": 500,
"total_tokens": 2500
}
}テーブルを右にスクロールしてください →
| フィールド | 意味 | 課金区分 |
|---|---|---|
prompt_tokens |
送信したすべてのトークン数 | 入力 |
completion_ |
モデルが生成したトークン数 | 出力 |
total_tokens |
prompt_tokens + completion_ |
別価格ではなく、単なる合計 |
初心者がよくする間違いは、total_tokensに1つの価格を掛けることです。入力と出力は価格が異なるため、2つの数値を別々に扱う必要があります。
一部のプロバイダーは追加フィールドを加えます。例えば、DeepSeekの独自APIはprompt_tokensをprompt_とprompt_に分割し、思考モードではreasoning_tokensを報告します(出典:DeepSeek APIドキュメント、2026年10月21日確認)。表の3つのフィールドは、OpenAI互換レスポンスで信頼できるものです。
回答をストリーミングする場合、usageは最初にはわかりません。DeepSeekの独自APIでは、data: [DONE]の前の最後のコンテンツチャンクで届きます(DeepSeek APIドキュメント、2026年10月21日確認)。他のAPIは異なる方法で送信するか、リクエスト時のみ送信する場合があるため、クライアントが何を受け取るか確認してください。ストリーミング自体はPythonでのストリーミングレスポンスで扱っています。
入力と出力で価格が異なる理由#
プロンプトを読むことと回答を書くことは、異なる種類の作業です。モデルはプロンプト全体を1回のパスで処理しますが、回答は1トークンずつ生成する必要があり、新しい各トークンは前のトークンに依存します。そのためプロバイダーは通常、出力を入力より高く価格設定し、どの料金表でもモデルごとに2つの数値が表示されます。
以下の例で使用するモデルMiniMax-M2.7(id minimax-m2.7)はこのパターンに従います。現在の1Mトークンあたりの価格は、入力$0.05、出力$0.15です。
計算式#
価格は100万トークンあたりで提示されるため、1リクエストのコストは:
cost = input_tokens × input_price ÷ 1,000,000
+ output_tokens × output_price ÷ 1,000,000以下は計算方法を示すための架空の丸い価格での例です(例であり、現在の価格は下の表から置き換えてください):
# example, substitute current prices from the table
price_in = 0.20 # USD per 1M input tokens
price_out = 0.80 # USD per 1M output tokens
prompt_tokens = 2000
completion_tokens = 500
cost = (prompt_tokens * price_in + completion_tokens * price_out) / 1_000_000
# 2000 × 0.20 ÷ 1,000,000 = 0.0004 (input)
# 500 × 0.80 ÷ 1,000,000 = 0.0004 (output)
# 0.0004 + 0.0004 = 0.0008 USD実モデルでの計算例#
上のusageの例のリクエストを取ります:入力2,000トークン、出力500トークン。CheapTokens経由のMiniMax-M2.7では$0.00018かかります。この数値はページが表示されるたびに現在の料金表から計算されます。
1回のリクエストはごく小さいため、スケールアップするとわかりやすくなります。このサイズのリクエストを10,000回送信する小さなアプリは、入力20,000,000トークンと出力5,000,000トークンを使用し、$1.75になります。
同じリクエストを当社リストの他のモデルで実行した場合:
| モデル | 入力 $/1M | 出力 $/1M | コスト | OpenRouter |
|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.00006 | $0.00012 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.00008 | $0.00017 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.00018 | $0.0012 |
合計 2,000 入力トークンと 500 出力トークン。100万トークンあたりの価格は現行のもので、当社の料金体系に合わせて変動します。OpenRouter 列は同じワークロードの参考価格を示しています。
ここで出力はトークン数ではわずかな部分(2,500中500)ですが、トークンシェアより請求額の割合が大きいことに注意してください。出力トークンの価格が高いためです(表を参照)。このモデルでは、OpenRouterの参照価格に対する節約が出力側で確認できることも重要です。アプリが長い回答を書く場合に役立ちます。
コードでの使用#
公式openai Pythonパッケージからusageを読み取るには、CheapTokensのベースURLを指定します:
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key="YOUR_API_KEY",
)
response = client.chat.completions.create(
model="MiniMaxAI/MiniMax-M2.7",
messages=[{"role": "user", "content": "Explain input and output tokens in two sentences."}],
)
usage = response.usage
print("input:", usage.prompt_tokens)
print("output:", usage.completion_tokens)
print("total:", usage.total_tokens)
# example, substitute current prices from the table above
price_in, price_out = 0.20, 0.80
cost = (usage.prompt_tokens * price_in + usage.completion_tokens * price_out) / 1_000_000
print(f"approx. cost: ${cost:.6f}")まだリクエストを送信していない場合は、先にCheapTokensでの最初のAPIリクエストに従ってください。
トークン消費を減らす方法#
- プロンプトを短くする。 システムプロンプトを削り、モデルに不要な指示を削除します。送信するすべてのトークンは毎回のリクエストで課金されます。
- 履歴を削る。 長いチャットでは、会話全体ではなく最後の数ターンまたは短い要約を保持します。
- ドキュメントの関連部分のみを送信する。 1ページのテキストはファイル全体より安価です。
- 必要な形式を指定する。 「3つの箇条書きで答えて」は、自由形式のエッセイより出力トークンが少なくなります。
max_tokensを意図的に設定する。 これは出力のみを制限します。低すぎると回答が途切れます。詳細はAIの回答が途中で止まるのはなぜ?にあります。CheapTokensのMiniMax-M2.7は回答あたり最大8,192出力トークンを許可し、180Kのコンテキストウィンドウを持ちます。
より大きなワークフローのコスト見積もりについては、AIエージェントのコストを見積もる方法を参照してください。
覚えておくべきこと#
- すべてのリクエストには入力トークン(
prompt_tokens)と出力トークン(completion_)があります。tokens - それぞれ別の価格があり、通常は出力が高くなります。
- コスト = 入力トークン × 入力価格 + 出力トークン × 出力価格(価格は1Mトークンあたり)。
- 推測せず、レスポンスの
usageから数値を読み取ります。
CheapTokensでは、1つの前払い残高ですべてのモデルをカバーし、モデルごとの価格は固定でピーク時間料金はなく、APIはOpenAI Chat CompletionsとAnthropic Messagesに互換です。上の例を試すには、APIキーを取得して最初のリクエストを送信してください。
すべてのモデルの現在価格:CheapTokensの料金。



