您可以為精細調整的 Gemini 模型使用內容快取功能,改善提示的效能並降低費用,特別是當提示包含大量內容時。快取常用的脈絡,避免每次向精細調整的模型提出要求時,重複傳送大量資料。
經過調整的 Gemini 對應快取的管理作業 (Read
、Update
、Delete
) 與基礎模型一致。只有快取內容建立和推論作業需要進行特定調整,詳情請參閱下文。
支援的模型
針對從下列基礎模型微調的模型,支援內容快取功能:
gemini-2.0-flash-001
事前準備
微調 Gemini 模型:您需要部署微調的 Gemini 模型,並以支援的基礎模型為基礎 (請參閱「支援的模型」)。如要進一步瞭解如何微調 Gemini 模型,請參閱「微調 Gemini 模型」一文。如要取得已部署的調整後模型的端點,請參閱「部署調整後的模型」。
請確認您已備妥下列資訊:
- 經過調整的 Gemini 模型 ID 和版本
- 已部署的微調模型的端點資源名稱
為微調後的模型建立脈絡快取
支援的基礎模型列於「支援的模型」一節。
為精細調整的模型建立脈絡快取的程序,基本上會遵循「建立脈絡快取」一文所述的步驟。請參閱連結的說明文件,瞭解一般程序;本指南著重於為精細調整的 Gemini 模型建立內容快取的差異。
您必須使用以 projects/{PROJECT}/locations/{LOCATION}/models/{MODEL}@{VERSION}
為格式的微調模型,而非以 projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/{MODEL}
為格式的基礎模型。
以下範例說明如何使用經過調整的 Gemini 模型建立內容快取。
REST
您可以使用 REST 建立內容快取,方法是使用 Vertex AI API 將 POST 要求傳送至發布者模型端點。下列範例說明如何使用儲存在 Cloud Storage 值區中的檔案建立內容快取。
使用任何要求資料之前,請先替換以下項目:
- PROJECT_ID:您的專案 ID。
- LOCATION:處理要求的區域,以及快取內容的儲存位置。如需支援的地區清單,請參閱「可用地區」。
- MODEL_ID:微調的 Gemini 模型 ID。
- MODEL_VERSION:精細調整過的 Gemini 模型版本。
- CACHE_DISPLAY_NAME:有意義的顯示名稱,可用於描述並協助您識別每個內容快取。
- MIME_TYPE:要快取的內容 MIME 類型。
- CONTENT_TO_CACHE_URI:要快取的內容 Cloud Storage URI。
HTTP 方法和網址:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents
JSON 要求主體:
{ "model": "projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID@MODEL_VERSION", "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="model-id"
PROJECT_ID="test-project"
MODEL_VERSION=1
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}/models/${MODEL_ID}@${MODEL_VERSION}",
"contents": [
{
"role": "user",
"parts": [
{
"fileData": {
"mimeType": "${MIME_TYPE}",
"fileUri": "${CACHED_CONTENT_URI}"
}
}
]
}
]
}'
為微調後的模型使用脈絡快取
針對經過微調的模型使用脈絡快取的程序,基本上會遵循「使用脈絡快取」一文中列出的步驟。請參閱連結的說明文件,瞭解一般程序;本指南著重於針對精細調整的 Gemini 模型使用情境快取的差異。
請勿以 projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/{MODEL}
的形式將要求傳送至基礎模型端點,而是必須以 projects/{PROJECT}/locations/{LOCATION}/endpoints/{ENDPOINT_ID}
的形式將要求傳送至已部署的微調模型端點。
以下程式碼範例說明如何搭配經過調整的 Gemini 模型使用內容快取。
使用內容快取時,您無法指定下列屬性:
GenerativeModel.system_instructions
GenerativeModel.tool_config
GenerativeModel.tools
REST
您可以使用 REST 指定帶有提示的內容快取,方法是使用 Vertex AI API 將 POST 要求傳送至發布者模型端點。
使用任何要求資料之前,請先替換以下項目:
HTTP 方法和網址:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID:generateContent
JSON 要求主體:
{ "cachedContent": "projects/PROJECT_NUMBER/locations/LOCATION/cachedContents/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/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID: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/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID:generateContent" | Select-Object -Expand Content
您應該會收到類似以下的 JSON 回應。
curl 指令範例
LOCATION="us-central1"
PROJECT_ID="test-project"
ENDPOINT_ID=987654321
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}/endpoints/${ENDPOINT_ID}:generateContent" -d \
'{
"cachedContent": "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"
}
],
}'