GEMINI LABEN
SCALE — Gemini アプリの月間利用者が8月11日に10億人を超えました。個人向けアシスタントとしての普及は一段落し、開発者側の関心はどう組み込むかへ移っていますASSISTANT — 9月4日から Android の Google アシスタントが Gemini に置き換わります。残り15日で、App Actions や音声ショートカットを実装したアプリは挙動確認が必要ですAGENTS — Gemini API の Managed Agents がパブリックプレビューになりました。Google 側がホストする実行環境で、状態を持つ自律エージェントを構築できますENTERPRISE — Gemini Enterprise で A2UI エージェントと A2A エージェントの登録・管理が一般提供になり、エージェント同士を接続する枠組みがプレビュー段階を抜けましたSUNSET — gemini-robotics-er-1.6-preview は8月31日に停止します。残り11日で、移行先は7月30日にパブリックプレビューとなった Gemini Robotics ER 2 ですPRICING — 8月13日に一般提供となった Gemini 3.7 Flash の導入価格は100万トークンあたり入力0.75ドル・出力3.75ドルで、2026年12月31日までですSCALE — Gemini アプリの月間利用者が8月11日に10億人を超えました。個人向けアシスタントとしての普及は一段落し、開発者側の関心はどう組み込むかへ移っていますASSISTANT — 9月4日から Android の Google アシスタントが Gemini に置き換わります。残り15日で、App Actions や音声ショートカットを実装したアプリは挙動確認が必要ですAGENTS — Gemini API の Managed Agents がパブリックプレビューになりました。Google 側がホストする実行環境で、状態を持つ自律エージェントを構築できますENTERPRISE — Gemini Enterprise で A2UI エージェントと A2A エージェントの登録・管理が一般提供になり、エージェント同士を接続する枠組みがプレビュー段階を抜けましたSUNSET — gemini-robotics-er-1.6-preview は8月31日に停止します。残り11日で、移行先は7月30日にパブリックプレビューとなった Gemini Robotics ER 2 ですPRICING — 8月13日に一般提供となった Gemini 3.7 Flash の導入価格は100万トークンあたり入力0.75ドル・出力3.75ドルで、2026年12月31日までです
記事一覧/API / SDK
API / SDK/2026-07-06上級

Context Caching を入れたのに Gemini の請求が減らなかったとき — 命中率を計測して立て直す運用メモ

Context Caching を有効化したのに Gemini API の請求がほとんど減らないとき、命中率と書き込みコストの回収点を usage_metadata から計測し、TTL チャーンと断片化を切り分けて段階的に立て直す運用メモです。

Gemini API214Context Caching2コスト最適化26usage_metadata2TTL計測2運用8

プレミアム記事

請求書だけが「効いていない」と言っていた

Context Caching を有効化したのは、システムプロンプトが 8,000 トークンまで膨らんで、入力課金が無視できなくなったからでした。個人開発のマイクロ SaaS で、原価の一円が粗利率に直結する規模です。ドキュメントどおりに明示キャッシュを作り、cached_content を渡す実装に切り替えて、二週間。月初の請求書を開いて、指が止まりました。

入力トークンの課金が、想定していたほど下がっていません。体感では 6 割減るはずが、実際は 1 割そこそこ。コードは正しく動いているように見えます。エラーも出ていません。それでも、数字だけが静かに「効いていない」と言っている。

こういうとき、私はまずコードを疑うのをやめます。疑うのは「効いているはず」という自分の思い込みのほうです。キャッシュが効いたかどうかは、感覚ではなく応答のメタデータに必ず出ます。まずそこを読む計器を立てるところから、立て直しは始まりました。

「効いているはず」を応答から確かめる

Gemini API の応答には usage_metadata が付きます。ここに cached_content_token_count というフィールドがあり、その回のプロンプトのうち何トークンがキャッシュから供給されたかを教えてくれます。ここが 0 なら、実装が正しく見えてもキャッシュは一切効いていません。

まず最小の確認コードで、1 リクエストの内訳を目視します。

from google import genai
from google.genai import types
 
client = genai.Client(api_key="YOUR_API_KEY")
 
# 全ユーザー共通の固定部分「だけ」を明示キャッシュにする
cache = client.caches.create(
    model="gemini-2.5-flash",
    config=types.CreateCachedContentConfig(
        system_instruction=SYSTEM_PROMPT,  # 8,000トークンの共通指示
        ttl="3600s",
    ),
)
 
resp = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=user_message,                 # ユーザーごとに変わる部分だけ
    config=types.GenerateContentConfig(cached_content=cache.name),
)
 
u = resp.usage_metadata
print("prompt:", u.prompt_token_count)
print("cached:", u.cached_content_token_count)  # ← ここが本体
print("output:", u.candidates_token_count)

私の環境では、この cached が期待どおり 8,000 前後を返すリクエストと、なぜか 0 を返すリクエストが混在していました。「たいてい効いているが、たまに効いていない」。この「たまに」が積み重なって、請求書の 1 割減という結果になっていたわけです。平均だけを見ていると、この揺らぎは見えません。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
usage_metadata.cached_content_token_count から実効命中率を測る計器の実装
書き込みコストの回収点: TTL 窓内に何回ヒットすれば黒字かを求める計算
減らない三大原因(TTL チャーン・ユーザー断片化・暗黙キャッシュ頼み)の切り分け手順
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Gemini Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

API / SDK2026-07-29
出力トークンが17%減ると聞いて、総額はいくら下がるのかを分解した
出力単価16.67%減と出力トークン17%減が重なったとき、総額はいくら下がるのか。Gemini 3.6 Flash への切り替えを単価・数量・交差項に厳密分解し、エージェントループでは削減率がむしろ下がった実行結果と、請求との突き合わせ方をまとめました。
API / SDK2026-07-14
Batch ジョブが『まだ RUNNING です』のまま半日溶けていたとき — 状態別の滞留予算とレコード突合で詰まりを早期に名指しする運用メモ
Gemini Batch API のジョブが 24 時間 SLA の陰で静かに滞留していたとき、状態別の滞留時間予算とレコード数の突合で詰まりと取りこぼしを早期に検知するための計測手順を、運用ログの実測とともに整理します。
API / SDK2026-07-11
Gemini のコンテキストキャッシュが途中で失効する — 一時停止するパイプラインで TTL 切れを検知して張り直す
夜間バッチや再試行で処理が一時停止すると、Gemini の明示的コンテキストキャッシュは静かに TTL 切れを起こし、以降の呼び出しが全トークン課金へ戻ります。残り有効期限を握って張り直すか素通しするかを費用で決める、小さなリース設計をまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →