一般的な AI ワークフローでは、同じ入力トークンをモデルに何度も渡します。Gemini API のコンテキスト キャッシュ機能を使用すると、一部のコンテンツをモデルに 1 回渡して入力トークンをキャッシュに保存し、キャッシュに保存されたトークンを後続のリクエストで参照できます。特定のボリュームでは、キャッシュに保存されたトークンを使用すると、同じトークンのコーパスを繰り返し渡すよりもコストが低くなります(レイテンシが短縮される可能性があります)。
一連のトークンをキャッシュに保存する場合は、トークンが自動的に削除されるまでのキャッシュの存続期間を選択できます。このキャッシュ保存期間は、有効期間(TTL)と呼ばれます。キャッシュに保存する費用は、入力トークンのサイズとトークンの保持期間によって異なります。
コンテキスト キャッシュは、Gemini 1.5 Pro と Gemini 1.5 Flash の両方をサポートしています。
コンテキスト キャッシュを使用する場合
コンテキスト キャッシュは、十分な初期コンテキストが短いリクエストで繰り返し参照されるシナリオに特に適しています。次のようなユースケースでは、コンテキスト キャッシュの使用を検討してください。
- 広範なシステム指示を持つ chatbot
- 長い動画ファイルの繰り返し解析
- 大規模なドキュメント セットに対して繰り返し実行されるクエリ
- 頻繁なコード リポジトリ分析やバグの修正
キャッシュ保存によって費用が削減される仕組み
コンテキスト キャッシュは、全体的な運用コストを削減するために設計された有料機能です。請求は次の要素に基づいて行われます。
- キャッシュ トークン数: キャッシュに保存された入力トークンの数。以降のプロンプトに含まれる場合は割引料金で課金されます。
- 保存期間: キャッシュに保存されたトークンの保存時間(TTL)で、1 時間ごとに課金されます。TTL に最小値や最大値はありません。
- その他の要因: キャッシュに保存されていない入力トークンや出力トークンなど、その他の料金が適用されます。
最新の料金の詳細については、Gemini API の料金ページをご覧ください。トークンのカウント方法については、トークンガイドをご覧ください。
コンテキスト キャッシュの使用方法
このセクションでは、quickstartに示すように、Gemini SDK をインストールして API キーを構成していることを前提としています。
その他の考慮事項
コンテキスト キャッシュを使用する場合は、次の点に注意してください。
- コンテキスト キャッシュの最小入力トークン数は 32,768 で、最大入力トークン数は特定のモデルの最大数と同じです。(トークンのカウントの詳細については、トークンガイドをご覧ください)。
- サンプルコードに示すように、キャッシュの有効期間(TTL)を設定できます。設定しない場合、TTL はデフォルトで 1 時間になります。
- このモデルでは、キャッシュに保存されたトークンと通常の入力トークンを区別しません。キャッシュに保存されたコンテンツはプロンプトの接頭辞です。
- キャッシュ サービスは、キャッシュからコンテンツを手動で削除する削除オペレーションを提供します。詳細については、ご使用の SDK のドキュメントをご覧ください。
- 有料階層の場合、コンテキスト キャッシュに特別なレートや使用量上限はありません。
GenerateContent
の標準のレート上限が適用され、トークンの上限にはキャッシュされたトークンが含まれます。無料枠の場合、Gemini 1.5 Flash のストレージ上限は 100 万トークンです。Gemini 1.5 Pro ではキャッシュを利用できません。 - キャッシュに保存されたコンテンツを取得または表示することはできませんが、メタデータ(
name
、display_name
、model
と、作成、更新、有効期限)は取得できます。 - 新しい
ttl
またはexpire_time
を設定できます。キャッシュに保存されたコンテンツに関するその他の変更はサポートされません。 - キャッシュに保存されたトークンの数は、キャッシュ サービスの作成、取得、一覧表示のオペレーションでは
usage_metadata
に返されます。キャッシュを使用する場合はGenerateContent
にも返されます。