はじめに:固定プロンプトの再利用による課金爆発を防ぐ
Gemini 3.7 Flash / 3.8 Flash は最大200万トークンという広大なコンテキストウィンドウを持っていますが、巨大なソースコードや数万行の自治体データ・仕様書を毎回リクエストに含めて送信すると、莫大なトークン費用と通信待ち時間が発生します。
Google Geminiが提供する「Context Caching(コンテキストキャッシング)」機能を使用すると、事前にアップロードした巨大データをサーバー側でキャッシュし、キャッシュヒット時の入力トークン料金を75%割引、かつ応答速度を大幅に短縮できます。
1. Context Caching の料金と仕様
| 項目 | 通常リクエスト | キャッシュ利用時 |
|---|---|---|
| 入力トークン単価 | 100% (標準料金) | 25% (75% OFF) |
| 最小キャッシュサイズ | なし | 32,768 トークン以上 |
| キャッシュ保持費用 | なし | 1時間あたり極小のストレージ料金 |
| TTL (有効期限) | — | デフォルト1時間(延長可能) |
2. Python SDK による実装例
import os
import google.generativeai as genai
from google.generativeai import caching
import datetime
genai.configure(api_key=os.environ["GEMINI_API_KEY"])
# 1. 巨大なドキュメントやコードベースのテキストを読み込み
with open("large_codebase_dump.txt", "r", encoding="utf-8") as f:
huge_content = f.read()
# 2. キャッシュの作成 (有効期限: 2時間)
cache = caching.CachedContent.create(
model="models/gemini-3.7-flash",
display_name="codebase_cache_v2",
contents=[huge_content],
ttl=datetime.timedelta(hours=2)
)
print(f"Created cache: {cache.name}, expires at: {cache.expire_time}")
# 3. キャッシュを参照して推論を実行
model = genai.GenerativeModel.from_cached_content(cached_content=cache)
# 質問1 (高速・75%割引)
res1 = model.generate_content("認証モジュールのアーキテクチャ概要を説明してください。")
print("Response 1:", res1.text)
# 質問2 (高速・75%割引)
res2 = model.generate_content("データベース接続プールで発生しうるボトルネックは?")
print("Response 2:", res2.text)
社内ナレッジベースや大規模コードレビューの定期実行において、劇的なコストパフォーマンス向上をもたらす必須技術です。