REST API または Python SDK を使用して、生成 AI アプリケーションのコンテキスト キャッシュに保存されているコンテンツを参照できます。使用するには、まずコンテキスト キャッシュを作成する必要があります。
コードで使用するコンテキスト キャッシュ オブジェクトには、次のプロパティが含まれます。
name
- コンテキスト キャッシュのリソース名。形式はprojects/PROJECT_NUMBER/locations/LOCATION/cachedContents/CACHE_ID
です。コンテキスト キャッシュを作成すると、レスポンスにはそのリソース名が含まれます。プロジェクト番号はプロジェクトの固有識別子です。キャッシュ ID はキャッシュの ID です。コード内でコンテキスト キャッシュを指定する場合、完全なコンテキスト キャッシュ リソース名を使用する必要があります。以下に示すのは、キャッシュに保存されたコンテンツのリソース名をリクエスト本文で指定する方法です。"cached_content": "projects/123456789012/locations/us-central1/123456789012345678"
model
- キャッシュの作成に使用されるモデルのリソース名。形式はprojects/PROJECT_NUMBER/locations/LOCATION/cachedContents/CACHE_ID
です。createTime
- コンテキスト キャッシュの作成日時を指定するTimestamp
。updateTime
- コンテキスト キャッシュの最新更新時間を指定するTimestamp
。コンテキスト キャッシュが作成されてから更新されるまでの間、createTime
とupdateTime
は同じです。expireTime
- コンテキスト キャッシュの有効期限を指定するTimestamp
。デフォルトのexpireTime
はcreateTime
の 60 分後です。キャッシュに新しい有効期限を設定できます。詳細については、コンテキスト キャッシュを更新するをご覧ください。
有効期限が切れたキャッシュは削除対象としてマークされます。そうしたキャッシュは使用または更新できません。期限切れのコンテキスト キャッシュを使用する必要がある場合は、適切な有効期限を設定して再作成する必要があります。
コンテキスト キャッシュの使用制限
コンテキスト キャッシュの作成時に、次の機能を指定できます。リクエストで再度指定しないでください。
GenerativeModel.system_instructions
プロパティ。このプロパティは、モデルがユーザーから指示を受け取る前に、モデルへの指示を指定するために使用されます。詳細については、システム指示をご覧ください。GenerativeModel.tool_config
プロパティ。tool_config
プロパティは、関数呼び出し機能で使用されるツールなど、Gemini モデルで使用されるツールを指定するために使用されます。GenerativeModel.tools
プロパティ。GenerativeModel.tools
プロパティは、関数呼び出しアプリケーションを作成する関数を指定するために使用されます。詳細については、関数呼び出しをご覧ください。
コンテキスト キャッシュの使用例
コンテキスト キャッシュを使用するには、以下の方法があります。コンテキスト キャッシュを使用する場合は、これらのプロパティを指定できません。
GenerativeModel.system_instructions
GenerativeModel.tool_config
GenerativeModel.tools
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 リクエストを送信します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際のプロジェクト ID。
- LOCATION: コンテキスト キャッシュの作成のリクエストが処理されたリージョン。
- MIME_TYPE: モデルに送信するテキスト プロンプト。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-pro-001:generateContent
リクエストの本文(JSON):
{ "cached_content": "projects/PROJECT_NUMBER/locations/LOCATION/CACHE_ID", "contents": [ {"role":"user","parts":[{"text":"PROMPT_TEXT"}]} ], "generationConfig": { "maxOutputTokens": 8192, "temperature": 1, "topP": 0.95, }, "safetySettings": [ { "category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE" }, { "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_MEDIUM_AND_ABOVE" }, { "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_MEDIUM_AND_ABOVE" }, { "category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_MEDIUM_AND_ABOVE" } ], }
リクエストを送信するには、次のいずれかのオプションを選択します。
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/publishers/google/models/gemini-1.5-pro-001:generateContent"
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/publishers/google/models/gemini-1.5-pro-001:generateContent" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
curl コマンドの例
LOCATION="us-central1"
MODEL_ID="gemini-1.5-pro-001"
PROJECT_ID="test-project"
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}:generateContent" -d \
'{
"cached_content": "projects/${PROJECT_NUMBER}/locations/${LOCATION}/cachedContents/${CACHE_ID}",
"contents": [
{"role":"user","parts":[{"text":"What are the benefits of exercise?"}]}
],
"generationConfig": {
"maxOutputTokens": 8192,
"temperature": 1,
"topP": 0.95,
},
"safetySettings": [
{
"category": "HARM_CATEGORY_HATE_SPEECH",
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
},
{
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
},
{
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
},
{
"category": "HARM_CATEGORY_HARASSMENT",
"threshold": "BLOCK_MEDIUM_AND_ABOVE"
}
],
}'
- コンテキスト キャッシュの有効期限を更新する方法を確認する。
- 新しいコンテキスト キャッシュを作成する方法を確認する。
- Google Cloud プロジェクトに関連付けられているすべてのコンテキスト キャッシュに関する情報を取得する方法を確認する。
- コンテキスト キャッシュを削除する方法を確認する。