LLMの料金が下がらない理由|キャッシュが壊れる3つの操作

プロンプトは短く書いているのに、AIの利用料だけが思ったより膨らんでいる。そんな明細を見て、首をかしげたことはありませんか。この記事では、LLMの料金がどこで決まるのかをたどりながら、今日から効く減らし方を整理します。結論を先に言うと、効果が大きいのは文章を削る節約ではなく、同じ前置きを使い回せる形に整えることです。読み取り料金が10分の1になる仕組みを、自分の手で壊さないようにするだけで差がつきます。

料率・有効期限・キャッシュが無効になる条件は、AnthropicとOpenAIの公式ドキュメントで裏を取りました(参考リンク1・2)。現場の実測値として引く数字は、それぞれ出どころを本文に明記しています(参考リンク3・4)。

目次

LLMの料金は「文章の長さ」では決まらない

まず押さえたいのは、料金を決めているのが一回の文章量ではないという点です。効いているのは、送った回数と、そのたびに一緒に送られる履歴の量です。

LLMの課金は、送った入力トークンと返ってきた出力トークンの合計で計算されます。トークンとは、文章を細かく区切った単位のことです。ここで見落とされがちなのが、チャットやAIエージェントは毎回まっさらな状態から始まるという性質です。前回のやりとりを覚えてはいないので、会話を続けるには、これまでの履歴をもう一度すべて送り直しています。

たとえば10往復の会話をすると、10回目の質問文が20文字でも、送信されるのは1往復目からの全履歴です。往復が増えるほど入力は雪だるま式に増えます。機械学習エンジニアのML_Bear氏がまとめた記事(参考リンク3)では、システムプロンプトとツール定義だけで10万トークンを使っていた事例が紹介されています。自分が書いた指示より、周辺に積まれた前提のほうが重い、という状態です。

つまり料金は、ターン数と、1ターンあたりのトークン数の掛け算で決まります。ここを分けて考えないと、減らす場所を間違えます。

プロンプトキャッシュが効くと入力代は10分の1以下になる

この雪だるまを止める仕組みが、プロンプトキャッシュです。効いているあいだ、同じ部分の読み取り料金は大きく下がります。Anthropicの公式ドキュメントはキャッシュから読んだトークンは通常の入力単価の0.1倍と明記しており、OpenAIも最新モデルで同じ0.1倍(最大90%引き)としています。

ただし、ただ安くなるだけの仕組みではありません。Anthropicの場合、キャッシュに書き込むときは通常の1.25倍(有効期限を1時間に延ばすと2倍)の単価がかかります。使い回して初めて元が取れる、という性質です。また、キャッシュには最小のトークン数があり、モデルによって512〜4,096トークンです。これを下回るプロンプトはキャッシュ指定を書いてもキャッシュされず、エラーも返りません。短いやりとりで効果が見えないのは、たいていこれが理由です。

仕組みはシンプルで、プロンプトの先頭から順に、前回と同じところまでを使い回すというものです。Anthropicの公式ドキュメントは、キャッシュが当たる条件を「指定した位置までのテキストと画像が100%同一であること」と説明しています。逆に、先頭のほうが1文字でも変わっていると、そこから先はすべて計算し直しになります。

本を読むときのしおりに似ています。昨日と同じ本の続きなら、しおりのページから読み始められます。ところが誰かが最初の1ページを差し替えると、しおりは意味を失い、また1ページ目から読み直すことになります。LLMのキャッシュも同じで、途中だけ一致していても効きません。

ここから、プロンプトの並び順には正解があると分かります。変わらないものを前に、変わるものを後ろに置くのが鉄則です。

  • 前: 役割の説明、ルール、ツールの定義、参照する固定の資料
  • 後: 今日の日付、ユーザー名、今回の質問、直近の検索結果

よくある失敗が、システムプロンプトの1行目に現在時刻を入れてしまう書き方です。毎回そこが変わるため、以降のすべてがキャッシュから外れます。なお、キャッシュが保たれる時間は提供元によって違います。Anthropicは既定で5分、使うたびに追加料金なしで延長され、オプションで1時間まで延ばせます。OpenAIは最新モデルで最後に使ってから30分が目安です。間隔が空きすぎると、また最初から積み直しになります。

プロンプトキャッシュは先頭から一致した分だけ効く。変わる値を前に置くと、その後ろが全部作り直しになる
図: プロンプトキャッシュは先頭から一致した分だけ効く。変わる値を前に置くと、その後ろが全部作り直しになる(筆者作成)

プロンプトキャッシュが壊れる3つの操作

並び順を整えても、運用のしかたで簡単に無効になります。とくに次の3つは、気づかないうちにやりがちです。

  1. 作業の途中でモデルや思考の深さを切り替える: Anthropicの公式ドキュメントは、思考の設定や努力度の設定を変えるとキャッシュが無効になると明記しています。設定はプロンプトに書き込まれるため、中身が変わったのと同じ扱いになるからです。試行錯誤の最中ほど切り替えたくなりますが、区切りのよいところでまとめて変えるほうが安く済みます
  2. 使うツールの一覧を毎回組み替える: ツールの定義はプロンプトの前方に置かれるため、公式ドキュメントでも定義の名前・説明・引数を変えるとキャッシュ全体が無効になるとされています。前掲のML_Bear氏の記事では、外部ツールを100個以上つないだ状態で「何も打っていないのに5万から7万トークン乗っていた」と報告されています
  3. 長い時間を空けてから再開する: 有効期限が切れれば、同じ内容でも通常料金で読み直しになります

3つに共通しているのは、人間から見れば「同じ作業の続き」でも、機械から見れば別物になっている点です。並列で何本も走らせるときも、まず1本だけ流してキャッシュを作り、そのあと残りを流すほうが無駄がありません。

LLMに任せる作業を選ぶとトークンは自然に減る

もう一つ効くのが、仕事の振り分けです。LLMには判断が必要な作業だけを任せ、答えが一つに決まる作業はプログラムにやらせます。

理由は、確認作業ほどトークンを食うからです。生成されたコードが動くかどうかの確認は、AIに読ませて考えさせるより、テストを実行したほうが速く、正確で、料金もかかりません。形式が正しいかの検証も同じです。渡す資料も、全文を読ませる前に必要な部分を絞り込んでおくと、入力が一気に軽くなります。検索してから渡すという考え方は、BM25の記事でも取り上げました。

出力を短くする工夫も広がっています。前置きを省いて結論から書かせる設定を試した個人の検証(参考リンク4)では、3種類の課題を3回ずつ計9回試し、平均で回答が1,884字から1,066字、出力トークンが1,603から1,056へと34%減ったと報告されています。ただし同じ検証では、技術的なキーワードの数も8%から30%ほど減っていました(1,000字あたりの密度はむしろ上がっています)。短くなった分、必要だった情報が抜け落ちることもあるわけです。安さと十分さは別の指標だと考えておくのが安全です。

考察: 節約テクニックより先に、内訳を測れるようにする

ここからは筆者の考えです。新社会人のうちに効くのは、個別の節約術を集めることより、料金の内訳を自分の言葉で分解できるようにすることだと思います。

理由は、打ち手が内訳によって変わるからです。同じ「高い」でも、原因がやりとりの往復数なら手順を変える話になり、1回あたりの入力量なら渡す資料を削る話になり、キャッシュの不成立なら並び順を直す話になります。内訳を見ずにプロンプトだけ短くしても、往復が20回あれば効果はほとんど出ません。

そして料金は、品質と同じく管理すべき対象になりつつあります。自動で動くエージェントは、人が見ていないあいだに同じ処理を何十回も繰り返すことがあります。上限を決めずに走らせて請求が跳ねる事故は、AIエージェントの安全装置の記事でも触れたとおりです。使った量を測れる人は、止めどころも決められます。まずは自分のツールで、ターン数と1回あたりの入力量を眺めるところから始めてみてください。

まとめ

  • LLMの料金は文章の長さではなく、往復の回数と毎回送り直す履歴の量で決まる
  • プロンプトキャッシュは先頭からの一致で効くので、変わらないものを前、変わるものを後ろに置く
  • モデルの切り替え、ツール一覧の組み替え、時間の空きすぎはキャッシュを壊す

次に使うプロンプトで、先頭に変わる値が紛れ込んでいないかだけ確認してみてください。並べ替えるだけで、同じ使い方のまま入力代が下がります。

参考リンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次