メインコンテンツへスキップ
#AI活用 約5分で読めます

LLM APIの料金感覚がつかめないので、見積もり用の計算機を作った

Claude APIの請求で学んだ料金の落とし穴3つ(出力単価・思考トークン・履歴の再送)と、月額をざっくり見積もる方法。自作の無料計算機も公開しています。

先月、検証用に回していたバッチ処理の請求を見て、一瞬固まった。想定の3倍だったからだ。

計算間違いというより、そもそも計算していなかった。「1リクエスト数円でしょ」という雑な感覚で回して、あとから請求で答え合わせをする。LLM APIを使い始めた頃の自分は、ずっとこれをやっていた。

同じ失敗をする人が減るように、請求書から学んだことをまとめておく。ついでに、毎回スプレッドシートを作るのが嫌になって計算機も作ったので、それも最後に紹介する。

請求が想定とズレる原因は、だいたい3つ

1. 出力トークンは入力の5倍高い

料金表を見ると「入力 $3 / 出力 $15」のように書いてある(Claude Sonnet 5の場合。100万トークンあたり)。この非対称を意識せずに「合計トークン数×単価」で見積もると、出力が多いワークロードで盛大に外す。

要約タスクなら出力は入力より短いから誤差で済む。でも記事生成やコード生成は逆で、コストの大半が出力側に乗る。私の場合、ブログのメタデータ一括生成で「入力は短いプロンプトだけだし安いはず」と思っていたら、出力のJSONが毎回長くて、請求の8割が出力トークンだった。

2. 思考トークンも課金される

最近のモデルは回答の前に「考える」。この思考(thinking)部分も出力トークンとして課金される。難しいタスクを高い思考努力で回すと、目に見える回答は10行でも、裏で数千トークン考えていたりする。

これは悪い話ではなくて、考えさせた方が結果の品質は上がる。ただ「見えているテキスト量」から料金を逆算すると絶対に合わない、ということは知っておいた方がいい。

3. 会話は長くなるほど加速度的に高くなる

一番見落としやすいのがこれ。チャット形式のAPIはステートレスなので、ターンごとにそれまでの履歴を全部入力として送り直す。

つまり10ターン目の入力には、1〜9ターン目の全部が含まれる。会話が2倍の長さになると、コストは2倍ではなく、ざっくり4倍近くに膨らむ。長い会話を扱うアプリを作るなら、履歴の要約や打ち切りを最初から設計に入れておかないと、ヘビーユーザーに使われた月の請求で泣くことになる。

ざっくり見積もりの手順

前提として、日本語はおおむね1文字≒1トークン。英語は1単語≒1.3トークンくらい。この換算だけ覚えておけば、あとは掛け算で済む。

例えば「2,000文字の記事を渡して、800文字の要約を返してもらう」処理を月1万回やるとする。

  • 入力: 2,000トークン × 10,000回 = 2,000万トークン
  • 出力: 800トークン × 10,000回 = 800万トークン

Sonnet 5($3/$15)なら、入力$60 + 出力$120 = 月$180。1ドル150円なら27,000円。同じ処理をHaiku 4.5($1/$5)に落とせば月$60、9,000円。

この「モデルを1段落とすと1/3になる」感覚が大事で、要約くらいのタスクなら小さいモデルで品質が足りることも多い。最上位モデルを思考停止で選ぶ前に、一度安いモデルで試す価値はある。

あと、本気で削るなら2つの公式割引がある。同じ長いプロンプトを使い回すならPrompt Caching(キャッシュ読み取りは通常の約1/10)、リアルタイム性が不要ならBatch API(50%オフ)。このへんは別記事で書いた実測があるので、そちらも参考に。

毎回この計算をするのが面倒で、ツールにした

上の計算、やること自体は単純なのに、モデルを4つ並べて比較して円換算して……とやると地味に時間を食う。それでスプレッドシートを作っては捨て、を3回くらい繰り返した末に、ブラウザで動く計算機にした。

LLM API 料金計算機

トークン数とリクエスト数を入れると、主要モデルの月額が安い順に並ぶ。円換算つき。文字数からトークン数をざっくり出す換算も付けた。

こだわったのは単価セルを全部手で編集できるようにしたこと。LLMの料金表は本当にすぐ変わるので、固定値のツールは数ヶ月で嘘つきになる。改定されたら公式の料金ページを見て、その場で上書きすればいい。


料金の感覚がついてくると、「このタスクにこのモデルは過剰」という判断が数秒でできるようになる。それだけで月の請求は普通に半分になる。まずは自分のワークロードを一度、数字にしてみてほしい。

#Claude #API料金 #LLM #コスト管理
シェア