LLM APIのトークン課金を徹底解説:コスト計算と最適化の実践ガイド
LLMのAPIを使ってプロダクトを開発するなら、トークン課金の仕組みを正確に理解しておくことは必須です。「なんとなく安い」「なんとなく高い」ではなく、入力と出力の単価差、キャッシュの効果、バッチ処理の割引率まで把握しておけば、設計段階からコストを最適化できます。この記事では、トークン課金の全体像と、実務で使える削減テクニックを具体的な数字とともに解説します。
トークンとは何か
トークンは、モデルがテキストを処理する際の最小単位です。1文字でも1単語でもなく、トークナイザーというアルゴリズムが決定する「テキストの断片」です。
英語の場合、1トークン ≈ 4文字、約0.75単語に相当します。"ChatGPT is great" はおよそ4トークンです。
日本語の場合は事情が異なります。Unicode上の文字コードが複雑なため、漢字やひらがな1文字が1〜2トークンに分割されるのが一般的です。同じ意味の文章でも、日本語は英語より30%〜80%多くのトークンを消費します。
- 英語 "Hello, how are you?" ≈ 6トークン
- 日本語 "こんにちは、お元気ですか?" ≈ 10〜13トークン
日本語ユーザー向けのサービスを構築する場合、この差をコスト見積もりに織り込んでおかないと、想定外の請求に繋がります。
課金の基本構造:入力トークンと出力トークン
APIの課金は、入力トークン(Input Tokens)と出力トークン(Output Tokens)の2本立てで、それぞれ単価が異なります。
入力トークンは、モデルに送信するすべてのテキストが対象です。システムプロンプト、会話履歴、ユーザーのメッセージ、注入したコンテキストなどが含まれます。
出力トークンは、モデルが生成した応答テキストです。テキスト生成は推論コストが高いため、出力トークンの単価は入力の3〜5倍が相場です。
主要モデルの価格帯(100万トークンあたり):
| モデルクラス | 入力価格 | 出力価格 | |---|---|---| | 軽量モデル(Claude Haikuなど) | $0.25 – $0.80 | $1.00 – $4.00 | | 標準モデル(Claude Sonnetなど) | $3.00 | $15.00 | | フラッグシップ(Claude Opusなど) | $15.00 | $75.00 |
クラス間の価格差は最大60倍に達します。タスクに応じたモデル選択が、コスト管理の最重要ポイントです。
トークン消費量の見積もり方
請求書で驚かないために、リクエストあたりのトークン消費を事前に見積もりましょう。
合計トークン = システムプロンプト + 会話履歴 + ユーザー入力 + モデル出力
カスタマーサポートBotの例:
- システムプロンプト(役割定義、応答ルール):約500トークン
- 直近の会話履歴(5ターン分):約1,000トークン
- ユーザーの現在の入力:約100トークン
- モデルの応答:約300トークン
1リクエストあたり約1,900トークン(入力1,600、出力300)。
Claude Sonnetの単価で計算すると:
入力:1,600 / 1,000,000 × $3.00 = $0.0048
出力: 300 / 1,000,000 × $15.00 = $0.0045
1リクエストあたり合計 ≈ $0.0093
1回あたりは微々たる金額ですが、1日10,000件の対話を処理すると月額約$2,790。積み上がると無視できない数字です。
プロンプトキャッシュ:見落とされがちな最大の節約手段
プロンプトキャッシュ(Prompt Caching)は、近年各プラットフォームが提供し始めた強力なコスト削減機能です。連続するリクエストが同じプレフィックス(システムプロンプトなど)を共有している場合、前回の計算結果を再利用し、再処理を省略します。キャッシュが効いた入力トークンは、通常価格の約10%で課金されます。
先ほどのサポートBotで試算:
- キャッシュ対象500トークン(システムプロンプト):$0.30/100万トークン → $0.00015
- 非キャッシュの入力1,100トークン:$3.00/100万トークン → $0.0033
- 出力300トークン:$15.00/100万トークン → $0.0045
1リクエストあたり約$0.0080に低下。約14%の削減です。システムプロンプトにナレッジベースや詳細な指示を含めて2,000〜5,000トークンに達する場合、入力コストの30%〜50%削減も現実的です。
キャッシュヒット率を高めるコツは、メッセージ配列の先頭に固定コンテンツ(システムプロンプト、不変のコンテキスト)を配置し、末尾に可変コンテンツ(ユーザー入力)を置くことです。順序が重要です。
APIコストを下げる6つの実践テクニック
1. プロンプトを削ぎ落とす
肥大化したシステムプロンプトは、トークン浪費の最大要因です。重複する指示、過剰な例示、細かすぎるフォーマット指定を見直しましょう。丁寧に設計された200トークンのプロンプトが、800トークンの冗長版と同等の性能を発揮するケースは珍しくありません。
2. タスクの複雑さでモデルを使い分ける
すべてのリクエストにフラッグシップモデルを使う必要はありません。ルーティングレイヤーを設けて振り分けましょう。
- 分類・抽出・フォーマット変換 → 軽量モデル
- 要約・Q&A → 標準モデル
- 複雑な推論・創作 → フラッグシップモデル
対象トラフィックのコストを10〜60倍削減できる可能性があります。
3. キャッシュヒット率を最大化する
すべてのリクエストで静的プレフィックスが同一になるよう構造化します。マルチターン会話では、メッセージ配列の先頭部分の一貫性を維持してください。
4. 非同期処理にはBatch APIを活用する
大量の翻訳、要約、分析を一括処理する場合、Batch APIを使えば約50%の割引が適用されます。レスポンスは最大24時間かかりますが、リアルタイム性が不要なパイプラインには最適です。
5. 出力長を制御する
max_tokensパラメータで出力の上限を設定し、不必要に長い応答を防ぎます。プロンプト内で「簡潔に回答してください」と指示を加えれば、出力トークンの削減効果がさらに高まります。
6. プリペイド(前払い)クレジットを検討する
多くのプロバイダーが、前払いで5%〜20%の割引を提供しています。優良なプラットフォームでは、クレジットに有効期限がなく、月末リセットもありません。使い切るまで自分のペースで消化できます。月額$500以上を安定的に利用するチームなら、従量課金よりほぼ確実にお得です。
実際のユースケース別・月額コスト試算
以下はすべてClaude Sonnetクラスの価格で、キャッシュ最適化を適用した試算です。
カスタマーサポートBot
- 1日あたりの対話数:5,000件
- 1回あたり入力約1,500トークン、出力約300トークン
- キャッシュヒット率:60%
- 月額見積もり:$950 – $1,200
コンテンツ生成プラットフォーム
- 1日あたりの生成タスク:1,000件
- 1回あたり入力約800トークン、出力約1,500トークン
- キャッシュヒット率:30%
- 月額見積もり:$780 – $950
ドキュメント分析・要約
- 1日あたりの処理文書数:200件
- 1回あたり入力約3,000トークン、出力約500トークン
- Batch API適用(50%割引)
- 月額見積もり:$180 – $250
モデルの使い分け、キャッシュ、バッチ処理を組み合わせることで、実際のコストは単純計算より30%〜60%低くなるのが一般的です。
まとめ
トークン課金の最適化で押さえるべきポイントは4つです。
- トークンの内訳を把握する — コストがどこに集中しているかを知る。
- タスクに合ったモデルを選ぶ — 単純な処理にフラッグシップの料金を払わない。
- キャッシュを最大限活用する — 繰り返されるプレフィックスのコストをほぼゼロにする。
- ボリュームディスカウントを使う — バッチ割引とプリペイドクレジットで単価を下げる。
APIプロバイダーを比較する際は、トークン単価だけでなく、キャッシュ機能の成熟度、バッチ処理の割引率、そしてプリペイドクレジットに有効期限があるかどうかを確認してください。これらの細部が、長期的な実質コストを左右します。