針對微調的 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}/endpoints/{ENDPOINT_ID}
),而非傳送至基礎模型端點 (格式為 projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/{MODEL}
)。
下列程式碼範例說明如何搭配微調的 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"
}
],
}'