コンテキスト キャッシュは、使用する前に作成する必要があります。作成するコンテキスト キャッシュには、Gemini モデルへの複数のリクエストで使用できる大量のデータが含まれています。キャッシュに保存されたコンテンツは、キャッシュの作成をリクエストしたリージョンに保存されます。
キャッシュには、Gemini マルチモーダル モデルでサポートされている任意の MIME タイプのコンテンツを保存できます。たとえば、大量のテキスト、音声、動画をキャッシュに保存できます。キャッシュに保存するファイルは複数指定できます。詳細は、次のメディア要件をご覧ください。
キャッシュに保存するコンテンツは、blob、テキスト、または Cloud Storage バケットに保存されているファイルのパスで指定します。キャッシュに保存するコンテンツのサイズが 10 MB を超える場合は、Cloud Storage バケットに保存されているファイルの URI を使用して指定する必要があります。
キャッシュに保存されたコンテンツの有効期間は有限です。コンテキスト キャッシュのデフォルトの有効期限は、作成後 60 分です。異なる有効期限を希望する場合は、コンテキスト キャッシュの作成時に ttl
プロパティまたは expire_time
プロパティを使用して、異なる有効期限を指定できます。有効期限が切れていないコンテキスト キャッシュの有効期限を更新することもできます。ttl
と expire_time
を指定する方法については、有効期限を更新するをご覧ください。
コンテキスト キャッシュは、有効期限が切れると使用できなくなります。今後のプロンプト リクエストで有効期限切れのコンテキスト キャッシュ内のコンテンツを参照する場合は、コンテキスト キャッシュを再作成する必要があります。
コンテキスト キャッシュの上限
キャッシュに保存するコンテンツについては、次の上限を遵守する必要があります。
コンテキスト キャッシュ保存の上限 | |
---|---|
キャッシュの最小サイズ |
32,769 個のトークン |
blob またはテキストを使用してキャッシュに保存できるコンテンツの最大サイズ |
10 MB |
キャッシュの作成後に有効期限切れになるまでの最小時間 |
1 分 |
キャッシュの作成後、キャッシュが有効期限切れになるまでの最大時間 |
キャッシュの最大保存期間はありません |
コンテキスト キャッシュの作成例
コンテキスト キャッシュを作成するには、以下の方法があります。
Python
Vertex AI SDK for Python のインストールまたは更新方法については、Vertex AI SDK for Python をインストールするをご覧ください。詳細については、Vertex AI SDK for Python API リファレンス ドキュメントをご覧ください。
ストリーミング レスポンスと非ストリーミング レスポンス
モデルがストリーミング レスポンスを生成するのか、非ストリーミング レスポンスを生成するのかについては、選択が可能です。ストリーミング レスポンスの場合、出力トークンが生成されるとすぐに各レスポンスが返されます。非ストリーミング レスポンスの場合、すべての出力トークンが生成された後にすべてのレスポンスが返されます。
ストリーミング レスポンスの場合は、generate_content
で stream
パラメータを使用します。
response = model.generate_content(contents=[...], stream = True)
非ストリーミング レスポンスの場合は、パラメータを削除するか、パラメータを False
に設定します。
サンプルコード
Go
このサンプルを試す前に、Vertex AI クイックスタートの Go の設定手順を実施してください。詳細については、Vertex AI Go SDK for Gemini リファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
ストリーミング レスポンスと非ストリーミング レスポンス
モデルがストリーミング レスポンスを生成するのか、非ストリーミング レスポンスを生成するのかについては、選択が可能です。ストリーミング レスポンスの場合、出力トークンが生成されるとすぐに各レスポンスが返されます。非ストリーミング レスポンスの場合、すべての出力トークンが生成された後にすべてのレスポンスが返されます。
ストリーミング レスポンスの場合は、GenerateContentStream
メソッドを使用します。
iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
非ストリーミング レスポンスの場合は、GenerateContent
メソッドを使用します。
resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
サンプルコード
REST
REST を使用してコンテキスト キャッシュを作成するには、Vertex AI API を使用してパブリッシャー モデル エンドポイントに POST リクエストを送信します。次の例は、Cloud Storage バケットに保存されているファイルを使用してコンテキスト キャッシュを作成する方法を示しています。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際のプロジェクト ID。
- LOCATION: リクエストを処理し、キャッシュに保存されたコンテンツが保存されるリージョン。サポートされているリージョンの一覧については、利用できるリージョンをご覧ください。
- MIME_TYPE: キャッシュに保存するコンテンツの MIME タイプ。
- CONTENT_TO_CACHE_URI: キャッシュに保存するコンテンツの Cloud Storage URI。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/cachedContents
リクエストの本文(JSON):
{ "model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-pro-001", "contents": [{ "role": "user", "parts": [{ "fileData": { "mimeType": "MIME_TYPE", "fileUri": "CONTENT_TO_CACHE_URI" } }] }, { "role": "model", "parts": [{ "text": "This is sample text to demonstrate explicit caching." }] }] }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/cachedContents"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/cachedContents" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
curl コマンドの例
LOCATION="us-central1"
MODEL_ID="gemini-1.5-pro-001"
PROJECT_ID="test-project"
MIME_TYPE="video/mp4"
CACHED_CONTENT_URI="gs://path-to-bucket/video-file-name.mp4"
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}/cachedContents -d \
'{
"model":"projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}",
"contents": [
{
"role": "user",
"parts": [
{
"fileData": {
"mimeType": "${MIME_TYPE}",
"fileUri": "${CACHED_CONTENT_URI}"
}
}
]
}
]
}'
次のステップ
- コンテキスト キャッシュを使用する方法を学習する。
- コンテキスト キャッシュの有効期限を更新する方法を学習する。