Vous pouvez utiliser la mise en cache du contexte pour vos modèles Gemini affinés afin d'améliorer les performances et de réduire les coûts des prompts qui incluent de grandes quantités de contexte. En mettant en cache le contexte fréquemment utilisé, vous évitez de renvoyer de grandes quantités de données à chaque requête envoyée à votre modèle affiné.
Les opérations de gestion (Read, Update, Delete) du cache de contexte pour les modèles Gemini réglés restent cohérentes avec les modèles de base. Seules la création et l'inférence de contenu mis en cache nécessitent un ajustement spécifique, qui est décrit ci-dessous.
Prérequis
Affinage d'un modèle Gemini : vous avez besoin d'un modèle Gemini affiné déployé basé sur un modèle de base compatible (voir Présentation de la mise en cache du contexte). Pour savoir comment affiner un modèle Gemini, consultez Affiner un modèle Gemini. Pour obtenir le point de terminaison de votre modèle réglé déployé, consultez Déployer un modèle réglé.
Assurez-vous de disposer des informations suivantes :
- ID et version du modèle Gemini réglé
- Nom de la ressource de point de terminaison pour le modèle affiné déployé
Versions compatibles
Les modèles Gemini affinés sont compatibles avec la mise en cache implicite pour les versions suivantes :
- Gemini 3.1 Pro
- Gemini 3.1 Flash-Lite
- Gemini 3 Pro
- Gemini 3 Flash
- Gemini 2.5 Pro
- Gemini 2.5 Flash
- Gemini 2.5 Flash-Lite
La mise en cache explicite est compatible avec les versions suivantes :
- Gemini 3.1 Pro
- Gemini 3.1 Flash-Lite
- Gemini 3 Pro
- Gemini 3 Flash
- Gemini 2.5 Pro
- Gemini 2.5 Flash
- Gemini 2.5 Flash-Lite
- Gemini 2.0 Flash (remarque : non compatible avec
gemini-2.0-flash-live-preview-04-09) - Gemini 2.0 Flash-Lite
Créer un cache de contexte pour un modèle affiné
La procédure de création d'un cache de contexte pour un modèle affiné suit en grande partie les étapes décrites dans Créer un cache de contexte. Consultez la documentation associée pour connaître le processus général. Ce guide se concentre sur la différence entre la création d'un cache de contexte pour les modèles Gemini affinés.
Au lieu d'utiliser le modèle de base au format projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/{MODEL}, vous devez utiliser votre modèle affiné au format projects/{PROJECT}/locations/{LOCATION}/models/{MODEL}@{VERSION}.
Les exemples suivants montrent comment créer un cache de contexte avec un modèle Gemini réglé.
REST
Vous pouvez utiliser REST pour créer un cache de contexte à l'aide de l'API Vertex AI afin d'envoyer une requête POST au point de terminaison du modèle de l'éditeur. L'exemple suivant montre comment créer un cache de contexte à l'aide d'un fichier stocké dans un bucket Cloud Storage.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : l'ID de votre projet.
- LOCATION : région dans laquelle traiter la requête et où le contenu mis en cache est stocké. Pour obtenir la liste des régions compatibles, consultez Régions disponibles.
- MODEL_ID : ID du modèle Gemini affiné.
- MODEL_VERSION : version du modèle Gemini affiné.
- CACHE_DISPLAY_NAME : nom significatif à afficher pour décrire et identifier chaque cache de contexte.
- MIME_TYPE : type MIME du contenu à mettre en cache.
- CONTENT_TO_CACHE_URI : URI Cloud Storage du contenu à mettre en cache.
Méthode HTTP et URL :
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents
Corps JSON de la requête :
{
"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"
}
}]
}]
}
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :
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
Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :
$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
Vous devriez recevoir une réponse JSON de ce type :
Exemple de commande 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}"
}
}
]
}
]
}'
Utiliser un cache de contexte pour un modèle affiné
La procédure d'utilisation d'un cache de contexte pour un modèle affiné suit en grande partie les étapes décrites dans Utiliser un cache de contexte. Consultez la documentation associée pour connaître le processus général. Ce guide se concentre sur la différence entre l'utilisation d'un cache de contexte pour les modèles Gemini affinés.
Au lieu d'envoyer la requête au point de terminaison du modèle de base au format projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/{MODEL}, vous devez l'envoyer au point de terminaison de votre modèle affiné déployé au format projects/{PROJECT}/locations/{LOCATION}/endpoints/{ENDPOINT_ID}.
L'exemple de code suivant montre comment utiliser un cache de contexte avec un modèle Gemini réglé.
Lorsque vous utilisez un cache de contexte, vous ne pouvez pas spécifier les propriétés suivantes :
GenerativeModel.system_instructionsGenerativeModel.tool_configGenerativeModel.tools
REST
Vous pouvez utiliser REST pour spécifier un cache de contexte avec un prompt en envoyant une requête POST au point de terminaison du modèle de l'éditeur à l'aide de l' API Vertex AI.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID de votre projet.
- LOCATION : région dans laquelle la requête de création de cache de contexte a été traitée.
- ENDPOINT_ID : point de terminaison où le modèle affiné est déployé.
- MIME_TYPE : prompt textuel à envoyer au modèle.
Méthode HTTP et URL :
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/ENDPOINT_ID:generateContent
Corps JSON de la requête :
{
"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"
}
],
}
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :
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
Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :
$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
Vous devriez recevoir une réponse JSON semblable à la suivante.
Exemple de commande 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"
}
],
}'