Gemini の費用を削る前に、計器を疑った:単価・内訳・キャッシュの 3 つが壊れていて、キャッシュの条件は測り直すと変わっていた

English version

トレカダッシュ 開発の記録 / 2026年9月〜10月

iOS アプリ「トレカダッシュ」は、記事の判定や商品の照合に、Google の Gemini(AI)を使っています。使った分だけお金がかかるので、費用を減らす作業を何度かしました。この記事は、その中の 2 つの回の記録です。

数字は、2026 年 9 月 4 日と 10 月 16 日の作業の記録から書いています。使ったのは gemini-3.1-flash-lite です。

計器が、3 か所とも壊れていた

「費用を削って」と言われて、最初にしたのは、削ることではなく、費用の計測が合っているかの確認でした。合っていない計器で削ると、効かない場所を削って「なぜ下がらない」となります。実際に、3 つの欠陥が見つかりました。

計器の欠陥起きていたこと
単価が違うコード上の単価は、100 万トークンあたり入力 $0.10・出力 $0.40。実際の価格は 入力 $0.25・出力 $1.50。費用を約 1/2.6 に、少なく表示していた。
内訳のラベルが潰れていた用途別の集計が、実際には存在しない名前のキー(params.system)を見ていた(正しくは system_instruction)。31 種類の用途が、全部 1 つの塊になり、どの指示文が高いのか、一度も読めていなかった。
キャッシュを数えていない入力の 31% はキャッシュの命中で、単価が 1/10 なのに、全部を定価で数えていた。約 4 割、多く見積もっていた。

もう 1 つ、見かけ上の「費用 2 位」が、本番の問題ではありませんでした。「ジョブ外」という名前の項目が 1 日 195 円で 2 位でしたが、これは私自身が、手で実行した分でした。本番の実力を見るときは、手動で動かした分を、必ず除きます。

直した計器で測ると、この時点で、1 日約 606 円(月 18,168 円)。キャッシュの分を引いた実質は、月約 13,200 円でした。費用のほとんどは入力トークンで、中身は、毎回送り直す指示文と候補の一覧です。

9 月の測定:キャッシュは約 8,000 トークンを超えてから

Gemini には、同じ長い指示文を繰り返し送ると、2 回目から安くなる仕組み(暗黙のキャッシュ)があります。命中した分の単価は 1/10 です。そこで、同じ指示文を 3 回続けて送って、どこから効くかを測りました。

指示文の長さ(入力トークン)キャッシュの命中
5,2090
8,4904,079
17,07012,263

当時の結論は、「約 8,000 トークンを超えてから効く」でした。実質のトークンは、入力 − 0.9 × 命中で計算できます。

ここで、無理に指示文を長くして基準に乗せるのは、逆に高くつく、と分かりました。4,200 トークンの指示文を 8,500 に膨らませると、実質は 4,814 トークンで、元より多いのです。キャッシュが得になるのは、元から大きい指示文だけです。

10 月の測り直し:条件は、約 4,000 トークンだった

もう一度、本番のキーで、同じ測定をしました。今度は、interactions API という呼び出し口で測りました。結果は、9 月と違いました。

指示文の長さ(入力トークン)キャッシュの命中
1,7700
4,0932,031(2 回目から)
7,0174,076

約 4,000 トークンから効き、先頭の約 2,038 トークン単位で命中していました。9 月は「8,000 から」、10 月は「4,000 から」。なぜ食い違うのかは、確かめていません。測り方の違いや、サービス側の変更が考えられますが、どれが原因かは分かっていません。分かるのは、「キャッシュの条件は、固定の事実ではなく、測り直すもの」ということです。

本番の指示文は、1,000〜2,500 トークンでした。先頭の固定部分が基準に届かず、命中は 1 日中 0 でした。入力トークンが費用のほぼ全部(出力は約 1%)なので、キャッシュが効けば、大きな節約に見えました。

指示文を水増ししてみた。判定が 9% ずれた

「判定に影響しない注記」を足して、指示文を約 2,300 トークンに伸ばし、基準に乗せる案を試しました。実データ 90 件で、元の指示文と答えを比べました。

精度が落ちるのに、命中も取れない。この案は取り下げて、本番には出していません。「影響しない」はずの文章でも、AI の答えは変わります。確かめずに足してはいけません。

いま残っている、いちばん大きい項目

実データで内訳を見ると、最大の単独項目は、商品の照合でした。1 回あたり平均 7,151 入力トークン、1 日 297 回で、約 83 円です。候補の絞り込み、まとめて聞く、AI に聞かずに済ませる、は、すでに入れてあります。これ以上は、候補を減らす、つまり精度を下げる方向になるので、見送っています。

削るなら、指示文を短くする方向です。その場合は、1 本ずつ、実データで判定が一致するかを確かめます。末尾の水増しで、キャッシュを狙いません。

分かったこと

費用を削る前に、削る道具を疑う。

この話に出てくるもの

ほかの記録

コメント

感想や、記事の間違いの指摘は、ここへ。書くには、GitHub のアカウントが要ります。

押すと、giscus(giscus.app)と GitHub に接続します。押さなければ、接続しません。詳しくはあつかいに書いています。