結論から言うと、Gemini APIのコンテキストキャッシュ(context caching)には「暗黙的キャッシュ(Implicit Caching)」と「明示的キャッシュ(Explicit Caching)」の2種類があり、どちらを使えるかは呼び出すAPIの種類で変わります。Gemini API公式ページには「Implicit caching is enabled by default for all Gemini 2.5 and newer models.」と明記されており、Gemini 2.5以降のモデルであれば追加のコード変更なしにキャッシュ判定が働きます。
一方で、同じ入力を意図的にキャッシュへ固定してコストを下げたい場合に使う明示的キャッシュは対応するAPIが限られます。この記事では、暗黙的・明示的の違い、対応モデルの最小トークン数、Gemini 3.8 FlashとGemini 3.1 Pro Previewの料金を使った試算、そして導入前に確認すべき注意点まで、公式ページの文言だけを根拠に整理します。数値や仕様はすべて取得日時点の公式ページに基づくため、実装前に同じリンク先で最新の記載を確認することをおすすめします。
Gemini APIのコンテキストキャッシュとは|結論と対象読者
【完全無料】AI×SNSで成果を出す100大特典を受け取る
AIの使い方を、SNS運用の実務につなげたい方へ。LINEで特典の案内を受け取れます。
コンテキストキャッシュとは、Gemini APIに繰り返し送る同じ入力トークン(システムプロンプトや長文ドキュメントなど)を一度処理した状態で保持し、次回以降のリクエストでその部分を再計算せずに済ませる仕組みです。公式ページは「Context caching allows you to save and reuse precomputed input tokens that you wish to use repeatedly, for example when asking different questions about the same media file, which can lead to cost and speed savings.」と説明しています。
この記事が向いているのは、同じ動画・PDF・システムプロンプトに対して複数回Gemini APIを呼び出す実装をしていて、入力トークン料金を抑えたい開発者です。逆に1回限りの単発リクエストしか送らない場合は、キャッシュの恩恵はほぼありません。
もう一点、混同しやすいのが「キャッシュ」と「モデルの記憶(会話履歴の保持)」の違いです。コンテキストキャッシュはあくまで課金計算上の最適化であり、モデルが過去のやり取りを自律的に覚えておく機能ではありません。会話状態の保持はInteractions APIが担う領域として別に説明されており、コンテキストキャッシュの説明とは切り分けて理解しておくと、この先の料金比較で迷いにくくなります。
暗黙的キャッシュ(Implicit Caching)とは|仕組みと対応モデル
暗黙的キャッシュとは、開発者が何も設定しなくても、Gemini API側が直近の入力を自動的にハッシュ判定し、一致した部分をキャッシュ扱いで課金する仕組みです。公式ページの文言は「Implicit caching is enabled by default for all Gemini 2.5 and newer models.」であり、続けて「We automatically pass on cost savings if your request hits caches.」「There is nothing you need to do in order to enable this.」とも記載されています。
つまり暗黙的キャッシュはオン/オフを切り替えるスイッチが存在せず、Gemini 2.5 Flash・2.5 Pro・3.1 Pro Preview・3.5〜3.8 Flashなど、公式ページが「2.5以降」と位置づけるモデルであれば自動的に判定対象になります。どの入力がキャッシュ対象になったかは、レスポンスのusage.total_cached_tokensフィールドで確認できるとされています。実装コードを変更せずに導入できる点が、明示的キャッシュとの一番の違いです。
明示的キャッシュ(Explicit Caching)とは|作成方法とTTL
明示的キャッシュとは、開発者が特定のコンテンツ(動画ファイルやシステムプロンプトなど)を指定してキャッシュオブジェクトとして作成し、そのキャッシュIDを後続のリクエストで参照する方式です。Generate Content API(Legacy)のcontext cachingページには、Python向けのサンプルとして次のコードが示されています。
公式ページのサンプルコードは「cache = client.caches.create(model=model, config=types.CreateCachedContentConfig(display_name=’sherlock jr movie’, system_instruction=(…), contents=[video_file], ttl=’300s’))」という形です。ttlパラメータでキャッシュの有効期限を指定でき、同ページには「If not set, the TTL defaults to 1 hour.」とあるため、指定を省略した場合のデフォルトは1時間です。作成後はupdate()メソッドでTTLを延長・短縮することもできると説明されています。
Interactions APIとgenerateContent API(Legacy)の違い|キャッシュ対応の分岐点
2026年6月からGenerally Available(一般提供)になったInteractions APIは、公式ページで「The Interactions API is the best way to build with Gemini models and agents.」と紹介される新しい呼び出し方式です。従来のgenerateContent APIは同ページで「now considered legacy」とされていますが、「remains fully supported」とも明記されており、今すぐ使えなくなるわけではありません。
キャッシュ対応で重要なのは、この2つのAPIで明示的キャッシュの扱いが異なる点です。公式ページは「The Interactions API only supports implicit caching. Explicit caching (manually creating and managing cache objects) is not supported in the Interactions API.」とはっきり書いており、続けて「To use explicit caching, switch to the generateContent API.」と案内しています。つまり、TTLを自分で管理する明示的キャッシュを使いたい場合は、新しいInteractions APIではなくgenerateContent API(Legacy)側の実装を選ぶ必要があります。
| 項目 | Interactions API | generateContent API(Legacy) |
|---|---|---|
| 位置づけ | 2026年6月にGeneral Availability | now considered legacy(引き続きfully supported) |
| 暗黙的キャッシュ | 対応(Gemini 2.5以降で自動) | 対応(Gemini 2.5以降で自動) |
| 明示的キャッシュ | 非対応(公式ページに明記) | 対応(client.caches.createで作成) |
| 公式ページの推奨 | 「Where new features launch」と説明 | 明示的キャッシュが必要な時の切り替え先 |
モデル別 最小トークン数一覧|暗黙的キャッシュが効く条件
暗黙的キャッシュには「入力トークン数がモデルごとの最小値以上であること」という条件があります。公式ページは「The minimum input token count for context caching varies by model.」としたうえで、モデルごとの最小トークン数を表で示しています。
| モデル | 最小入力トークン数 |
|---|---|
| Gemini 3.8 Flash | 4,096 |
| Gemini 3.7 Flash | 4,096 |
| Gemini 3.6 Flash | 4,096 |
| Gemini 3.5 Flash | 4,096 |
| Gemini 3.1 Pro Preview | 4,096 |
| Gemini 2.5 Flash | 2,048 |
| Gemini 2.5 Pro | 2,048 |
短いシステムプロンプト1行だけを毎回送るような使い方では、この最小トークン数に届かずキャッシュが発生しないケースがあります。長文のシステムプロンプトや、PDF・動画などのファイルを繰り返し参照する構成のほうがキャッシュの恩恵を受けやすい設計です。モデルの機能差についてはGemini 3.8 Flashとは?できること・制限・旧世代Flashとの違いで確認できます。
料金の仕組み|キャッシュ読み込み価格とストレージ課金
コンテキストキャッシュの料金は1種類ではなく、公式ページによると「Billing is based on the following factors: 1. Cache token count…2. Storage duration…」の2軸で決まります。つまり「キャッシュを読み込むたびにかかるトークン単価」と「キャッシュを保持している時間に応じたストレージ料金」を分けて考える必要があります。
Gemini APIの料金ページ(2026-09-24 UTC更新)から、主要モデルの通常入力価格・キャッシュ読み込み価格・ストレージ価格を抜き出すと次の表の通りです(すべて100万トークンあたりの米ドル、Standard区分)。
| モデル | 通常入力価格 | キャッシュ読み込み価格 | ストレージ価格(1時間あたり) |
|---|---|---|---|
| Gemini 3.8 Flash | $0.75(2026年12月31日まで) | $0.075(2026年12月31日まで) | $0.50 |
| Gemini 3.1 Pro Preview | $2.00(20万トークン以下) | $0.20(20万トークン以下) | $4.50 |
| Gemini 2.5 Flash | $0.30(テキスト/画像/動画) | $0.03(テキスト/画像/動画) | $1.00 |
| Gemini 2.5 Pro | $1.25(20万トークン以下) | $0.125(20万トークン以下) | $4.50 |
出典: ai.google.dev/gemini-api/docs/pricing(取得時点の記載。将来の値上げ予定を含むため最新版の確認をおすすめします)。
Gemini 3.8 Flashのキャッシュ料金を計算する|仮の例で見る削減額
ここからは仮の例として、Gemini 3.8 Flashの数値だけで削減額の考え方を確認します。公式料金ページの通常入力価格は100万トークンあたり$0.75、キャッシュ読み込み価格は100万トークンあたり$0.075(いずれも2026年12月31日までの表示価格)です。
仮の例として、10万トークンのシステムプロンプトを1日100回同じ内容で呼び出すケースを考えます。すべて通常入力として処理すると、1日あたりの入力トークン数は1,000万トークンになり、$0.75の単価をそのまま適用すると入力コストは1日あたり$7.5相当になります。同じ10万トークン分がキャッシュ読み込みとして扱われた場合、単価は$0.075になるため、キャッシュ部分のコストは1日あたり$0.75相当まで下がる計算です。ここにストレージ価格である100万トークンあたり$0.50/時間が別途加算される点は見落とせません。あくまで仮の例であり、実際の削減額はプロンプトの構成・呼び出し頻度・保持時間によって変わります。
Gemini 3.1 Pro Previewのキャッシュ料金を計算する|仮の例で見る削減額
同じ考え方をGemini 3.1 Pro Previewにも当てはめます。公式料金ページでは、20万トークン以下のプロンプトについて通常入力価格が100万トークンあたり$2.00、キャッシュ読み込み価格が100万トークンあたり$0.20と記載されています。
仮の例として、15万トークンのPDFを1日50回参照する構成を考えると、通常入力として処理した場合の1日あたりコストは7,500万トークン相当ではなく750万トークン(15万×50回)に対して$2.00単価を適用した計算になり、キャッシュ読み込みとして扱われた場合は同じトークン量に$0.20単価が適用されます。Gemini 3.1 Pro Previewはストレージ価格が100万トークンあたり$4.50/時間とGemini 3.8 Flashより高く、さらに料金ページでは無料枠が「Not available」と記載されているため、開発中の検証はGemini 2.5 FlashやGemini 3.8 Flashなど無料枠が使えるモデルで先に行い、本番構成が固まってからGemini 3.1 Pro Previewへ切り替える進め方が現実的です。
明示的キャッシュの作成手順|TTLとキャッシュIDの管理
明示的キャッシュを使う場合の基本フローは、(1)generateContent API側のSDKでキャッシュオブジェクトを作成する、(2)戻り値のキャッシュ名(ID)を保持する、(3)後続のリクエストでそのキャッシュ名を参照する、という3ステップです。公式ページのPythonサンプルではdisplay_name・system_instruction・contents・ttlを指定してキャッシュを作成する形が示されています。
TTLは作成時に指定しなければ1時間がデフォルトになりますが、公式ページによれば作成後にupdate()メソッドでTTLを変更することも可能です。長時間のバッチ処理でキャッシュを使い続けたい場合はTTLを延長し、短時間のセッションだけで使い切る場合は短めのTTLにしてストレージ課金を抑える、という調整が実務では必要になります。
無料枠(Free Tier)でのキャッシュ扱い|料金ページの記載
無料枠でキャッシュ機能が使えるかどうかはモデルによって異なります。料金ページのFree Tier欄を見ると、Gemini 3.8 Flash・Gemini 2.5 Flash・Gemini 2.5 Proは「Free of charge」と記載されている一方、Gemini 3.1 Pro Previewは「Not available」と記載されています。
つまり、同じ「コンテキストキャッシュ」という機能名でも、無料枠のまま試せるモデルと有料利用が前提のモデルが混在しています。個人開発や検証段階でコストをかけたくない場合は、無料枠が明記されているモデルから試し、料金や挙動を把握したうえで有料モデルへ移行する順番のほうが失敗が少なくなります。料金体系の全体像はGemini API料金の読み方2026|モデル別単価・キャッシュ・無料枠・試算でも整理しています。
Batch API・Function Callingとの違い|どのコスト削減機能を選ぶか
Gemini APIにはコンテキストキャッシュ以外にもコストや処理効率に関わる機能がいくつかあります。混同しやすいので、それぞれの役割を分けて理解しておくと選択を間違えにくくなります。
コンテキストキャッシュは「同じ入力トークンの再計算を省く」ための機能で、Gemini Batch APIの使い方|非同期処理と50%割引の料金で扱うBatch APIは「即時応答が不要な大量リクエストをまとめて非同期処理する」ための機能で、性質が異なります。両者は排他的ではなく、同じシステムプロンプトを使うバッチ処理であればキャッシュとBatch APIを組み合わせる余地もありますが、この記事の一次情報だけでは組み合わせ時の具体的な挙動は確認できていないため、実装前に公式ページで最新の記載を確認してください。
また、Gemini APIのFunction Calling入門|仕組み・書き方・料金で扱うFunction Callingは外部ツールの呼び出し方を定義する機能、Gemini APIの構造化出力とは|JSONスキーマ指定と使い方は出力形式をJSONスキーマで固定する機能です。いずれもコンテキストキャッシュとは別レイヤーの設定であり、同じリクエストの中で併用することを妨げるものではありません。開発者向けの実行環境についてはGemini CLIの使い方 インストールから無料枠の現状まで解説、外部情報を根拠にした回答が必要な場合はGoogle検索によるグラウンディングとは?Gemini APIの料金と仕組み、画面操作の自動化を検討している場合はGemini Computer Useとは|対応環境・安全機能・料金の考え方も合わせて確認してください。
導入前に確認すべき注意点|TTLの管理とストレージ課金のリスク
明示的キャッシュを導入するときに見落としやすいのが、ストレージ課金です。公式ページの説明どおり、料金は「キャッシュ読み込みのトークン単価」と「保持時間に応じたストレージ単価」の2軸で決まるため、作成したキャッシュを使わないまま長時間放置すると、読み込みによる削減効果を上回るストレージ費用が発生する可能性があります。
対策として、(1)TTLを実際の利用シナリオに合わせて短めに設定する、(2)使い終わったキャッシュは明示的に削除するかupdate()でTTLを縮める、(3)無料枠が使えるモデルでまず動作確認してから本番モデルへ移行する、という3点を運用ルールに組み込んでおくと、想定外の課金を避けやすくなります。なお、Interactions APIを使っている場合は明示的キャッシュ自体が選択肢に入らないため、TTL管理はgenerateContent API側の実装に限った注意点です。Google AIの契約プラン全体との違いを整理したい場合はGoogle AIプランの違い|Plus/Pro/Ultraの選び方も参考にしてください。
もう一つの注意点は、モデル移行時にキャッシュ設定を引き継げるとは限らないことです。Gemini 3.7 FlashからGemini 3.8 Flashへ切り替えるようなケースでも、最小入力トークン数や料金単価はモデルごとに個別の数値として公式ページに掲載されているため、モデルを変更したタイミングで料金表を読み直す運用にしておくと、古い単価のまま試算してしまう事故を防げます。
よくある質問(FAQ)
- Q1. Gemini APIのキャッシュは何もしなくても有効になりますか?
- Gemini 2.5以降のモデルであれば、暗黙的キャッシュが既定で有効です。公式ページは「Implicit caching is enabled by default for all Gemini 2.5 and newer models.」としており、コード側での有効化設定は不要です。
- Q2. 明示的キャッシュ(Explicit Caching)はどのAPIで使えますか?
- generateContent API(Legacy)で使えます。Interactions APIは公式ページで「only supports implicit caching」と明記されており、明示的キャッシュを使う場合は「switch to the generateContent API」と案内されています。
- Q3. 明示的キャッシュのTTL(有効期限)はどのくらいですか?
- 作成時に
ttlを指定しなければ、公式ページの記載どおりデフォルトで1時間です。作成後にupdate()メソッドで延長・短縮できるとされています。 - Q4. 短いプロンプトでもキャッシュは効きますか?
- モデルごとに最小入力トークン数が決まっており、Gemini 2.5 Flash/Proは2,048トークン、Gemini 3.1 Pro PreviewとGemini 3.5〜3.8 Flashは4,096トークンです。この数値を下回る場合の具体的な扱いは、参照した公式ページに明記が無いため、境界付近の挙動は実装時に自分の環境で確認することをおすすめします。
- Q5. 無料枠でもキャッシュ料金の割引を受けられますか?
- モデルによります。料金ページではGemini 3.8 Flash・2.5 Flash・2.5 Proが「Free of charge」、Gemini 3.1 Pro Previewは「Not available」と記載されています。
- Q6. Gemini 3.8 Flashのキャッシュ料金は今後変わりますか?
- 公式料金ページには「$0.075 through December 31, 2026」に続けて「$0.15 starting January 1, 2027」という記載があり、2027年1月1日以降は表示価格が変わる予定です。導入時期によって単価が異なるため、契約・実装のタイミングで最新ページを確認することをおすすめします。
- Q7. Batch APIとコンテキストキャッシュはどちらを先に検討すべきですか?
- 用途で決まります。大量リクエストをまとめて非同期処理したいならBatch API、同じ入力トークンを繰り返し使う構成で入力コストを下げたいならコンテキストキャッシュが出発点になります。両方に当てはまる構成であれば、それぞれの公式ページを個別に確認しながら組み合わせを検討してください。
まとめ|Gemini APIキャッシュ活用の次の一歩
Gemini APIのコンテキストキャッシュは、Gemini 2.5以降のモデルで自動的に働く暗黙的キャッシュと、generateContent API(Legacy)だけで使える明示的キャッシュの2種類に分かれます。2026年6月にGeneral AvailableになったInteractions APIは暗黙的キャッシュのみに対応しており、TTLを自分で管理したい場合はgenerateContent APIを選ぶ必要がある、という位置づけを公式ページの文言から確認しました。
料金面では、キャッシュ読み込みのトークン単価とストレージ単価という2軸を分けて把握することが欠かせません。Gemini 3.8 Flashのように無料枠が使えるモデルで挙動を確認してから、Gemini 3.1 Pro Previewのような有料前提のモデルへ移行する順番であれば、想定外の課金を避けながら導入できます。実装を進める際は、この記事で引用した公式ページのリンク先を開き、取得時点から変わっていないかを確認したうえで進めることをおすすめします。
あわせて読みたい・姉妹メディア
