Vous pouvez utiliser la mise en cache de contexte pour vos modèles Gemini affinés afin d'améliorer les performances et de réduire les coûts des requêtes 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 à votre modèle affiné.
Les opérations de gestion (Read
, Update
, Delete
) du cache de contexte pour Gemini affiné 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étaillé ci-dessous.
Modèles compatibles
La mise en cache de contexte est compatible avec les modèles affinés à partir du modèle de base suivant:
gemini-2.0-flash-001
Prérequis
Affiner un modèle Gemini:vous avez besoin d'un modèle Gemini affiné déployé basé sur un modèle de base compatible (voir Modèles compatibles). Pour savoir comment régler un modèle Gemini, consultez Régler un modèle Gemini. Pour obtenir le point de terminaison de votre modèle ajusté déployé, consultez Déployer un modèle ajusté.
Assurez-vous de disposer des informations suivantes:
- ID et version du modèle Gemini affiné
- Nom de la ressource de point de terminaison du modèle affiné déployé
Créer un cache de contexte pour un modèle affiné
Le modèle de base compatible est indiqué dans Modèles compatibles.
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. Pour connaître le processus général, consultez la documentation associée. 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 affiné.
REST
Vous pouvez utiliser REST pour créer un cache de contexte à l'aide de l'API Vertex AI pour 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 la section Emplacements disponibles.
- MODEL_ID: ID du modèle Gemini affiné.
- MODEL_VERSION: version du modèle Gemini affinée.
- CACHE_DISPLAY_NAME: nom à afficher pertinent pour décrire et vous aider à 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" } }] }, { "role": "model", "parts": [{ "text": "This is sample text to demonstrate explicit caching." }] }] }
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 les différences entre l'utilisation du 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 sous la forme projects/{PROJECT}/locations/{LOCATION}/publishers/google/models/{MODEL}
, vous devez l'envoyer au point de terminaison de votre modèle affiné déployé sous la forme projects/{PROJECT}/locations/{LOCATION}/endpoints/{ENDPOINT_ID}
.
L'exemple de code suivant montre comment utiliser un cache de contexte avec un modèle Gemini affiné.
Lorsque vous utilisez un cache de contexte, vous ne pouvez pas spécifier les propriétés suivantes :
GenerativeModel.system_instructions
GenerativeModel.tool_config
GenerativeModel.tools
REST
Vous pouvez utiliser REST pour spécifier un cache de contexte avec une requête à l'aide de l'API Vertex AI pour envoyer une requête POST au point de terminaison du modèle de l'éditeur.
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 la demande 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 : requête textuelle à 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"
}
],
}'