Vous pouvez utiliser les API REST ou le SDK Python pour référencer le contenu stocké dans un cache de contexte dans une application d'IA générative. Avant de pouvoir l'utiliser, vous devez d'abord créer le cache de contexte.
L'objet de cache de contexte que vous utilisez dans votre code inclut les propriétés suivantes :
name
: nom de la ressource du cache de contexte. Son format estprojects/PROJECT_NUMBER/locations/LOCATION/cachedContents/CACHE_ID
. Lorsque vous créez un cache de contexte, vous pouvez trouver son nom de ressource dans la réponse. Le numéro de projet est un identifiant numérique de votre projet. L'ID de cache est un ID pour votre cache. Lorsque vous spécifiez un cache de contexte dans votre code, vous devez utiliser le nom complet de la ressource de cache de contexte. Voici un exemple qui montre comment spécifier un nom de ressource de contenu mis en cache dans un corps de requête:"cached_content": "projects/123456789012/locations/us-central1/123456789012345678"
model
: nom de la ressource du modèle utilisé pour créer le cache. Son format estprojects/PROJECT_NUMBER/locations/LOCATION/publishers/PUBLISHER_NAME/models/MODEL_ID
.createTime
:Timestamp
qui spécifie l'heure de création du cache de contexte.updateTime
:Timestamp
qui spécifie l'heure de la dernière mise à jour d'un cache de contexte. Une fois un cache de contexte créé, et avant qu'il ne soit mis à jour, sescreateTime
etupdateTime
sont identiques.expireTime
:Timestamp
qui spécifie l'heure d'expiration d'un cache de contexte. La valeurexpireTime
par défaut est de 60 minutes après lecreateTime
. Vous pouvez mettre à jour le cache avec un nouveau délai d'expiration. Pour en savoir plus, consultez Mettre à jour le cache de contexte.
Une fois qu'un cache a expiré, il est marqué pour suppression. Vous ne devez pas supposer qu'il peut être utilisé ou mis à jour. Si vous devez utiliser un cache de contexte qui a expiré, vous devez le recréer avec un délai d'expiration approprié.
Restrictions d'utilisation du cache de contexte
Vous pouvez spécifier les fonctionnalités suivantes lorsque vous créez un cache de contexte. Vous ne devez pas les spécifier à nouveau dans votre requête:
La propriété
GenerativeModel.system_instructions
. Cette propriété permet de spécifier des instructions au modèle avant qu'il ne reçoive des instructions d'un utilisateur. Pour en savoir plus, consultez les instructions système.La propriété
GenerativeModel.tool_config
. La propriététool_config
permet de spécifier les outils utilisés par le modèle Gemini, comme un outil utilisé par la fonctionnalité appel de fonction.La propriété
GenerativeModel.tools
. La propriétéGenerativeModel.tools
permet de spécifier des fonctions pour créer une application d'appel de fonction. Pour en savoir plus, consultez la page Appel de fonction.
Utiliser un exemple de cache de contexte
La procédure suivante montre comment utiliser un cache de contexte. 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
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 utiliser 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.
- MIME_TYPE: requête textuelle à envoyer au modèle.
Méthode HTTP et URL :
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-pro-002:generateContent
Corps JSON de la requête :
{ "cached_content": "projects/PROJECT_NUMBER/locations/LOCATION/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/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-pro-002: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/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-pro-002:generateContent" | Select-Object -Expand Content
Vous devriez recevoir une réponse JSON semblable à la suivante.
Exemple de commande curl
LOCATION="us-central1"
MODEL_ID="gemini-1.5-pro-002"
PROJECT_ID="test-project"
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}:generateContent" -d \
'{
"cached_content": "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"
}
],
}'
- Apprenez à mettre à jour le délai d'expiration d'un cache de contexte.
- Découvrez comment créer un cache de contexte.
- Découvrez comment obtenir des informations sur tous les caches de contexte associés à un projet Google Cloud.
- Découvrez comment supprimer un cache de contexte.