コンテキスト キャッシュ

<ph type="x-smartling-placeholder"></ph>

一般的な AI ワークフローでは、同じ入力トークンを モデルです。Gemini API のコンテキスト キャッシュ機能を使用すると、コンテンツの一部を 入力トークンをキャッシュに保存してから、キャッシュに保存されているトークンを参照する 使用します。特定のボリュームでは、キャッシュされたトークンを使用すると費用が抑えられる 同じトークンのコーパスを繰り返し渡すより効率的です。

一連のトークンをキャッシュに保存する場合は、 存在する必要があります。このキャッシュ保存期間は これは有効期間(TTL)と呼ばれます。設定しない場合、TTL はデフォルトで 1 時間になります。「 キャッシュ保存の費用は、入力トークンのサイズと、 維持します。

コンテキスト キャッシュは、Gemini 1.5 Pro と Gemini 1.5 Flash の両方をサポートしています。

コンテキスト キャッシュ保存を使用する状況

コンテキスト キャッシュ保存は、初期コンテキストの実体部分が、短いリクエストで繰り返し参照されるシナリオに特に適しています。次のようなユースケースでは、コンテキスト キャッシュ保存の使用を検討してください。

  • 広範なシステム指示を行う chatbot
  • 長時間の動画ファイルの繰り返し分析
  • 大規模なドキュメント セットに対する繰り返しのクエリ
  • 頻繁なコード リポジトリの分析やバグ修正

キャッシュ保存によって費用が削減される仕組み

コンテキスト キャッシュ保存は、全体的な運用コストを削減するために設計された有料の機能です。ご請求は次の項目に基づいて行われます。

  1. キャッシュ トークン数: キャッシュに保存された入力トークンの数。後続のプロンプトに含まれる場合は、割引料金で請求されます。
  2. 保存期間: キャッシュに保存されたトークンの保存期間(TTL)です。 キャッシュされたトークン数の TTL 期間に基づいて課金されます。最低料金なし TTL の上限を指定しています
  3. その他の項目: 入力トークンや出力トークンがキャッシュされていない場合などは、別の料金が適用されます。

最新の料金の詳細については、Gemini API の料金をご覧ください。 ページをご覧ください。トークンのカウント方法については、トークン ガイドをご覧ください。

コンテキスト キャッシュの使用方法

このセクションでは、Gemini SDK がインストールされ、API が構成済みであることを前提としています。 鍵を作成します(クイックスタートをご覧ください)。

キャッシュを使用してコンテンツを生成する

次の例は、キャッシュに保存されたシステムを使用してコンテンツを生成する方法を示しています。 手順と動画ファイルが含まれます。

import os
import google.generativeai as genai
from google.generativeai import caching
import datetime
import time

# Get your API key from https://aistudio.google.com/app/apikey
# and access your API key as an environment variable.
# To authenticate from a Colab, see
# https://github.com/google-gemini/cookbook/blob/main/quickstarts/Authentication.ipynb
genai.configure(api_key=os.environ['API_KEY'])

# Download video file
# curl -O https://storage.googleapis.com/generativeai-downloads/data/Sherlock_Jr_FullMovie.mp4

path_to_video_file = 'Sherlock_Jr_FullMovie.mp4'

# Upload the video using the Files API
video_file = genai.upload_file(path=path_to_video_file)

# Wait for the file to finish processing
while video_file.state.name == 'PROCESSING':
  print('Waiting for video to be processed.')
  time.sleep(2)
  video_file = genai.get_file(video_file.name)

print(f'Video processing complete: {video_file.uri}')

# Create a cache with a 5 minute TTL
cache = caching.CachedContent.create(
    model='models/gemini-1.5-flash-001',
    display_name='sherlock jr movie', # used to identify the cache
    system_instruction=(
        'You are an expert video analyzer, and your job is to answer '
        'the user\'s query based on the video file you have access to.'
    ),
    contents=[video_file],
    ttl=datetime.timedelta(minutes=5),
)

# Construct a GenerativeModel which uses the created cache.
model = genai.GenerativeModel.from_cached_content(cached_content=cache)

# Query the model
response = model.generate_content([(
    'Introduce different characters in the movie by describing '
    'their personality, looks, and names. Also list the timestamps '
    'they were introduced for the first time.')])

print(response.usage_metadata)

# The output should look something like this:
#
# prompt_token_count: 696219
# cached_content_token_count: 696190
# candidates_token_count: 214
# total_token_count: 696433

print(response.text)

キャッシュを一覧表示する

キャッシュに保存されたコンテンツの取得や表示はできませんが、 キャッシュ メタデータ(namemodeldisplay_nameusage_metadatacreate_timeupdate_timeexpire_time)。

アップロードされたすべてのキャッシュのメタデータを一覧表示するには、CachedContent.list() を使用します。

for c in caching.CachedContent.list():
  print(c)

キャッシュの更新

キャッシュに新しい ttl または expire_time を設定できます。その他の変更 キャッシュに関する記述は サポートされていません

次の例は、次のコマンドを使用してキャッシュの ttl を更新する方法を示しています。 CachedContent.update()

import datetime

cache.update(ttl=datetime.timedelta(hours=2))

キャッシュを削除する

キャッシュ サービスには、コンテンツを手動で削除する削除オペレーションが用意されています。 キャッシュから取り出します。次の例は、次のコマンドを使用してキャッシュを削除する方法を示しています。 CachedContent.delete()

cache.delete()

その他の考慮事項

コンテキスト キャッシュを使用する場合は、次の点に注意してください。

  • コンテキスト キャッシュの最小入力トークン数は 32,768 で、 max は、特定のモデルの最大値と同じです。( トークン ガイドをご覧ください)。
  • このモデルでは、キャッシュされたトークンと通常のトークンは区別されません。 使用します。キャッシュに保存されたコンテンツはプロンプトの接頭辞です。
  • コンテキスト キャッシュに特別なレートや使用量上限はありません。標準 GenerateContent のレート制限が適用されます。トークンの制限にはキャッシュが含まれます 定義できます。
  • キャッシュに保存されたトークンの数は、usage_metadata に キャッシュ サービスの作成、取得、一覧表示の操作のほか、 キャッシュを使用する場合、GenerateContent