Vous devez créer un cache de contexte avant de pouvoir l'utiliser. Le cache de contexte que vous créez contient une grande quantité de données que vous pouvez utiliser dans plusieurs requêtes à un modèle Gemini. Le contenu mis en cache est stocké dans la région où vous envoyez la requête de création du cache.
Le contenu mis en cache peut être de n'importe quel type MIME compatible avec les modèles multimodaux Gemini. Par exemple, vous pouvez mettre en cache une grande quantité de texte, de contenu audio ou de vidéo. Vous pouvez spécifier plusieurs fichiers à mettre en cache. Pour en savoir plus, consultez les exigences concernant les contenus multimédias suivantes:
Vous spécifiez le contenu à mettre en cache à l'aide d'un blob, d'un texte ou d'un chemin d'accès à un fichier stocké dans un bucket Cloud Storage. Si la taille du contenu que vous mettez en cache est supérieure à 10 Mo, vous devez la spécifier à l'aide de l'URI d'un fichier stocké dans un bucket Cloud Storage.
La durée de vie du contenu mis en cache est limitée. Le délai d'expiration par défaut d'un cache de contexte est de 60 minutes après sa création. Si vous souhaitez un délai d'expiration différent, vous pouvez spécifier un délai d'expiration différent à l'aide de la propriété ttl
ou expire_time
lorsque vous créez un cache de contexte. Vous pouvez également modifier la date d'expiration d'un cache de contexte non expiré. Pour savoir comment spécifier ttl
et expire_time
, consultez la section Mettre à jour l'heure d'expiration.
Une fois qu'un cache de contexte a expiré, il n'est plus disponible. Si vous souhaitez référencer le contenu d'un cache de contexte expiré dans les futures requêtes de demande, vous devez recréer le cache de contexte.
Limites du cache de contexte
Le contenu que vous mettez en cache doit respecter les limites suivantes:
Limites de la mise en cache du contexte | |
---|---|
Taille minimale d'un cache |
32 769 jetons |
Taille maximale du contenu que vous pouvez mettre en cache à l'aide d'un blob ou d'un texte |
10 Mo |
Délai minimal avant l'expiration d'un cache après sa création |
1 minute |
Délai maximal avant l'expiration d'un cache après sa création |
Il n'existe pas de durée maximale de cache. |
Exemple de création de cache de contexte
Voici comment créer un cache de contexte.
Python
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API SDK Vertex AI pour Python.
Réponses en streaming et sans streaming
Vous pouvez choisir si le modèle génère des réponses en streaming ou sans streaming. Pour les réponses en streaming, vous recevez chaque réponse dès que son jeton de sortie est généré. Pour les réponses qui ne sont pas en streaming, vous recevez toutes les réponses une fois tous les jetons de sortie sont générés.
Pour une réponse en streaming, utilisez le paramètre stream
dans generate_content
.
response = model.generate_content(contents=[...], stream = True)
Pour une réponse sans streaming, supprimez le paramètre ou définissez-le sur False
.
Exemple de code
Go
Avant d'essayer cet exemple, suivez les instructions de configuration pour Go du guide de démarrage rapide de Vertex AI. Pour en savoir plus, consultez la documentation de référence du SDK Vertex AI pour Go pour Gemini.
Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Réponses en streaming et sans streaming
Vous pouvez choisir si le modèle génère des réponses en streaming ou sans streaming. Pour les réponses en streaming, vous recevez chaque réponse dès que son jeton de sortie est généré. Pour les réponses qui ne sont pas en streaming, vous recevez toutes les réponses une fois tous les jetons de sortie sont générés.
Pour une réponse en streaming, utilisez la méthode GenerateContentStream
.
iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
Pour une réponse non affichée progressivement, utilisez la méthode GenerateContent
.
resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
Exemple de code
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.
- 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/v1beta1/projects/PROJECT_ID/locations/LOCATION/cachedContents
Corps JSON de la requête :
{ "model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-pro-002", "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/v1beta1/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/v1beta1/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="gemini-1.5-pro-002"
PROJECT_ID="test-project"
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}/publishers/google/models/${MODEL_ID}/cachedContents -d \
'{
"model":"projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}",
"contents": [
{
"role": "user",
"parts": [
{
"fileData": {
"mimeType": "${MIME_TYPE}",
"fileUri": "${CACHED_CONTENT_URI}"
}
}
]
}
]
}'
Étapes suivantes
- Apprenez à utiliser un cache de contexte.
- Apprenez à mettre à jour le délai d'expiration d'un cache de contexte.