コンテキスト キャッシュは、使用する前に作成する必要があります。作成するコンテキスト キャッシュには、Gemini モデルへの複数のリクエストで使用できる大量のデータが含まれています。キャッシュに保存されたコンテンツは、キャッシュの作成をリクエストしたリージョンに保存されます。
キャッシュには、Gemini マルチモーダル モデルでサポートされている任意の MIME タイプのコンテンツを保存できます。たとえば、大量のテキスト、音声、動画をキャッシュに保存できます。キャッシュに保存するファイルは複数指定できます。詳細は、次のメディア要件をご覧ください。
キャッシュに保存するコンテンツは、blob、テキスト、または Cloud Storage バケットに保存されているファイルのパスで指定します。キャッシュに保存するコンテンツのサイズが 10 MB を超える場合は、Cloud Storage バケットに保存されているファイルの URI を使用して指定する必要があります。
キャッシュに保存されたコンテンツの有効期間は有限です。コンテキスト キャッシュのデフォルトの有効期限は、作成後 60 分です。異なる有効期限を希望する場合は、コンテキスト キャッシュの作成時に ttl
プロパティまたは expire_time
プロパティを使用して、異なる有効期限を指定できます。有効期限が切れていないコンテキスト キャッシュの有効期限を更新することもできます。ttl
と expire_time
を指定する方法については、有効期限を更新するをご覧ください。
コンテキスト キャッシュは、有効期限が切れると使用できなくなります。今後のプロンプト リクエストで有効期限切れのコンテキスト キャッシュ内のコンテンツを参照する場合は、コンテキスト キャッシュを再作成する必要があります。
ロケーションのサポート
コンテキスト キャッシュ保存は、オーストラリアのシドニー(australia-southeast1
)リージョンではサポートされていません。
コンテキスト キャッシュ保存はグローバル エンドポイントをサポートしています。
暗号鍵のサポート
コンテキスト キャッシュ保存は顧客管理の暗号鍵(CMEK)をサポートしているため、キャッシュに保存されたデータの暗号化を制御し、お客様が管理および所有する暗号鍵で機密情報を保護できます。これにより、セキュリティとコンプライアンスが強化されます。
詳しくは、例をご覧ください。
グローバル エンドポイントを使用する場合、CMEK はサポートされていません。
アクセスの透明性のサポート
コンテキスト キャッシュ保存はアクセスの透明性をサポートしています。
コンテキスト キャッシュの作成例
次の例は、コンテキスト キャッシュを作成する方法を示しています。
Python
インストール
pip install --upgrade google-genai
詳しくは、SDK リファレンス ドキュメントをご覧ください。
Vertex AI で Gen AI SDK を使用するための環境変数を設定します。
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=us-central1 export GOOGLE_GENAI_USE_VERTEXAI=True
Go
Go をインストールまたは更新する方法について学びます。
詳しくは、SDK リファレンス ドキュメントをご覧ください。
Vertex AI で Gen AI SDK を使用するための環境変数を設定します。
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=us-central1 export GOOGLE_GENAI_USE_VERTEXAI=True
Java
Java をインストールまたは更新します。
詳しくは、SDK リファレンス ドキュメントをご覧ください。
Vertex AI で Gen AI SDK を使用するための環境変数を設定します。
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=us-central1 export GOOGLE_GENAI_USE_VERTEXAI=True
Node.js
インストール
npm install @google/genai
詳しくは、SDK リファレンス ドキュメントをご覧ください。
Vertex AI で Gen AI SDK を使用するための環境変数を設定します。
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values # with appropriate values for your project. export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT export GOOGLE_CLOUD_LOCATION=us-central1 export GOOGLE_GENAI_USE_VERTEXAI=True
REST
REST を使用してコンテキスト キャッシュを作成するには、Vertex AI API を使用してパブリッシャー モデル エンドポイントに POST リクエストを送信します。次の例は、Cloud Storage バケットに保存されているファイルを使用してコンテキスト キャッシュを作成する方法を示しています。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際のプロジェクト ID。
- LOCATION: リクエストを処理し、キャッシュに保存されたコンテンツが保存されるリージョン。サポートされているリージョンの一覧については、利用できるリージョンをご覧ください。
- CACHE_DISPLAY_NAME: 各コンテキスト キャッシュの識別に役立つ意味のある表示名。
- MIME_TYPE: キャッシュに保存するコンテンツの MIME タイプ。
- CONTENT_TO_CACHE_URI: キャッシュに保存するコンテンツの Cloud Storage URI。
- MODEL_ID: キャッシュに使用するモデル。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents
リクエストの本文(JSON):
{ "model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID", "displayName": "CACHE_DISPLAY_NAME", "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/v1/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/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
curl コマンドの例
LOCATION="us-central1"
MODEL_ID="gemini-2.0-flash-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}/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}"
}
}
]
}
]
}'
CMEK を使用してコンテキスト キャッシュを作成する
CMEK でコンテキスト キャッシュ保存を実装するには、手順に沿って CMEK を作成し、Vertex AI のプロダクトごと、プロジェクトごとのサービス アカウント(P4SA)に、鍵に対する必要な Cloud KMS 暗号鍵の暗号化/復号の権限があることを確認します。これにより、KMS 鍵を繰り返し指定することなく、キャッシュに保存されたコンテンツを安全に作成して管理し、{List
、Update
、Delete
、Get
} CachedContent
などの他の呼び出しを行えます。
REST
REST を使用してコンテキスト キャッシュを作成するには、Vertex AI API を使用してパブリッシャー モデル エンドポイントに POST リクエストを送信します。次の例は、Cloud Storage バケットに保存されているファイルを使用してコンテキスト キャッシュを作成する方法を示しています。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID:
- LOCATION: リクエストを処理し、キャッシュに保存されたコンテンツが保存されるリージョン。サポートされているリージョンの一覧については、利用できるリージョンをご覧ください。
- MODEL_ID: gemini-2.0-flash-001。
- CACHE_DISPLAY_NAME: 各コンテキスト キャッシュの識別に役立つ意味のある表示名。
- MIME_TYPE: キャッシュに保存するコンテンツの MIME タイプ。
- CACHED_CONTENT_URI: キャッシュに保存するコンテンツの Cloud Storage URI。
- KMS_KEY_NAME: Cloud KMS 鍵名。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents
リクエストの本文(JSON):
{ "model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-2.0-flash-001", "displayName": "CACHE_DISPLAY_NAME", "contents": [{ "role": "user", "parts": [{ "fileData": { "mimeType": "MIME_TYPE", "fileUri": "CONTENT_TO_CACHE_URI" } }]}], "encryptionSpec": { "kmsKeyName": "KMS_KEY_NAME" } }
リクエストを送信するには、次のいずれかのオプションを選択します。
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/v1/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/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
curl コマンドの例
LOCATION="us-central1"
MODEL_ID="gemini-2.0-flash-001"
PROJECT_ID="test-project"
MIME_TYPE="video/mp4"
CACHED_CONTENT_URI="gs://path-to-bucket/video-file-name.mp4"
KMS_KEY_NAME="projects/${PROJECT_ID}/locations/{LOCATION}/keyRings/your-key-ring/cryptoKeys/your-key"
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}/cachedContents -d \
'{
"model": "projects/{PROJECT_ID}}/locations/{LOCATION}/publishers/google/models/{MODEL_ID}",
"contents" : [
{
"role": "user",
"parts": [
{
"file_data": {
"mime_type":"{MIME_TYPE}",
"file_uri":"{CACHED_CONTENT_URI}"
}
}
]
}
],
"encryption_spec" :
{
"kms_key_name":"{KMS_KEY_NAME}"
}
}'
GenAI SDK for Python
インストール
pip install --upgrade google-genai
詳しくは、SDK リファレンス ドキュメントをご覧ください。
Vertex AI で Gen AI SDK を使用するための環境変数を設定します。
# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=us-central1
export GOOGLE_GENAI_USE_VERTEXAI=True
import os
from google import genai
from google.genai.types import Content, CreateCachedContentConfig, HttpOptions, Part
os.environ['GOOGLE_CLOUD_PROJECT'] = 'vertexsdk'
os.environ['GOOGLE_CLOUD_LOCATION'] = 'us-central1'
os.environ['GOOGLE_GENAI_USE_VERTEXAI'] = 'True'
client = genai.Client(http_options=HttpOptions(api_version="v1"))
system_instruction = """
You are an expert researcher. You always stick to the facts in the sources provided, and never make up new facts.
Now look at these research papers, and answer the following questions.
"""
contents = [
Content(
role="user",
parts=[
Part.from_uri(
file_uri="gs://cloud-samples-data/generative-ai/pdf/2312.11805v3.pdf",
mime_type="application/pdf",
),
Part.from_uri(
file_uri="gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf",
mime_type="application/pdf",
),
],
)
]
content_cache = client.caches.create(
model="gemini-2.0-flash-001",
config=CreateCachedContentConfig(
contents=contents,
system_instruction=system_instruction,
display_name="example-cache",
kms_key_name="projects/vertexsdk/locations/us-central1/keyRings/your-project/cryptoKeys/your-key",
ttl="86400s",
),
)
print(content_cache.name)
print(content_cache.usage_metadata)
GenAI SDK for Go
Gen AI SDK for Go をインストールまたは更新する方法を確認します。
詳しくは、SDK リファレンス ドキュメントをご覧ください。
Vertex AI で Gen AI SDK を使用するための環境変数を設定します。
import (
"context"
"encoding/json"
"fmt"
"io"
genai "google.golang.org/genai"
)
// createContentCache shows how to create a content cache with an expiration parameter.
func createContentCache(w io.Writer) (string, error) {
ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
HTTPOptions: genai.HTTPOptions{APIVersion: "v1beta1"},
})
if err != nil {
return "", fmt.Errorf("failed to create genai client: %w", err)
}
modelName := "gemini-2.0-flash-001"
systemInstruction := "You are an expert researcher. You always stick to the facts " +
"in the sources provided, and never make up new facts. " +
"Now look at these research papers, and answer the following questions."
cacheContents := []*genai.Content{
{
Parts: []*genai.Part{
{FileData: &genai.FileData{
FileURI: "gs://cloud-samples-data/generative-ai/pdf/2312.11805v3.pdf",
MIMEType: "application/pdf",
}},
{FileData: &genai.FileData{
FileURI: "gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf",
MIMEType: "application/pdf",
}},
},
Role: "user",
},
}
config := &genai.CreateCachedContentConfig{
Contents: cacheContents,
SystemInstruction: &genai.Content{
Parts: []*genai.Part{
{Text: systemInstruction},
},
},
DisplayName: "example-cache",
KmsKeyName: "projects/vertexsdk/locations/us-central1/keyRings/your-project/cryptoKeys/your-key",
TTL: "86400s",
}
res, err := client.Caches.Create(ctx, modelName, config)
if err != nil {
return "", fmt.Errorf("failed to create content cache: %w", err)
}
cachedContent, err := json.MarshalIndent(res, "", " ")
if err != nil {
return "", fmt.Errorf("failed to marshal cache info: %w", err)
}
// See the documentation: https://pkg.go.dev/google.golang.org/genai#CachedContent
fmt.Fprintln(w, string(cachedContent))
return res.Name, nil
}
次のステップ
- コンテキスト キャッシュを使用する方法を学習する。
- コンテキスト キャッシュの有効期限を更新する方法を学習する。