Gemini API の Context Caching
以下の記事が面白かったので、簡単にまとめました。
1. Context Caching
「Context Caching」は、入力トークンをキャッシュして、後続リクエストでキャッシュされたトークンを参照することで、コストとレイテンシを低くおさせることができる機能です。
トークンをキャッシュに保存する時、キャッシュの保存期間「TTL」(time to live)を指定します。キャッシュの保存費用は、入力トークンのサイズとトークンの保持期間によって決まります。
「Context Caching」は、「Gemini 1.5 Pro」「Gemini 1.5 Flash」の両方でサポートされています。
2. Context caching のユースケース
「Context Caching」は、初期コンテキストが短いリクエストによって繰り返し参照される場合に適しています。
3. Context Caching の使用料金
「Context Caching」の使用料金は、次の要素に基づいて決まります。
最新の使用料金については、Gemini APIの料金ページを参照してください。トークンのカウント方法については、トークンガイドを参照してください。
4. Context Caching の使い方
from google.generativeai import caching
import datetime
import time
# ファイルをダウンロード
# !wget https://storage.googleapis.com/generativeai-downloads/data/Sherlock_Jr_FullMovie.mp4
video_file_name = "Sherlock_Jr_FullMovie.mp4"
# Files APIで動画をアップロード
video_file = genai.upload_file(path=video_file_name)
# 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)
# 5分のTTLでキャッシュを作成
cache = caching.CachedContent.create(
model="models/gemini-1.5-flash-001",
display_name="sherlock jr movie", # キャッシュを識別するために使用
system_instruction="You are an expert video analyzer, and your job is to answer user's query based on the video file you have access to.",
contents=[video_file],
ttl=datetime.timedelta(minutes=5),
)
# 作成されたキャッシュを使用
model = genai.GenerativeModel.from_cached_content(cached_content=cache)
# モデルをクエリ
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)
# 出力は次のようになる
#
# prompt_token_count: 696226
# candidates_token_count: 351
# total_token_count: 696577
# cached_content_token_count: 696189
5. 追加の考慮事項
この記事が気に入ったらサポートをしてみませんか?