Mettre à jour un cache de contexte

Vous pouvez effectuer une mise à jour à l'expiration d'un cache de contexte. Le délai d'expiration par défaut d'un cache de contexte est de 60 minutes après sa création. Un cache de contexte expiré est supprimé lors d'un processus de récupération de mémoire et ne peut pas être utilisé ni mis à jour. Pour modifier la date d'expiration d'un cache de contexte non expiré, modifiez l'une des propriétés suivantes :

  • ttl : nombre de secondes et de nanosecondes pendant lequel le cache est actif après sa création ou après la mise à jour de ttl avant son expiration. Lorsque vous définissez ttl, le paramètre expireTime du cache est mis à jour.

  • expire_time : Timestamp qui spécifie la date et l'heure absolues d'expiration du cache de contexte.

Mettre à jour le cache de contexte à l'aide de son paramètre ttl

Voici un exemple de commande curl qui met à jour son délai d'expiration de 3 600 secondes.

Python

Installer

pip install --upgrade google-genai

Pour en savoir plus, consultez la documentation de référence du SDK.

Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

from datetime import datetime as dt
from datetime import timezone as tz
from datetime import timedelta

from google import genai
from google.genai.types import HttpOptions, UpdateCachedContentConfig

client = genai.Client(http_options=HttpOptions(api_version="v1"))

# Get content cache by name
# cache_name = "projects/.../locations/.../cachedContents/1111111111111111111"
content_cache = client.caches.get(name=cache_name)
print("Expire time", content_cache.expire_time)
# Example response
#   Expire time 2025-02-20 15:50:18.434482+00:00

# Update expire time using TTL
content_cache = client.caches.update(
    name=cache_name, config=UpdateCachedContentConfig(ttl="36000s")
)
time_diff = content_cache.expire_time - dt.now(tz.utc)
print("Expire time(after update):", content_cache.expire_time)
print("Expire time(in seconds):", time_diff.seconds)
# Example response
#   Expire time(after update): 2025-02-14 01:51:42.571696+00:00
#   Expire time(in seconds): 35999

# Update expire time using specific time stamp
next_week_utc = dt.now(tz.utc) + timedelta(days=7)
content_cache = client.caches.update(
    name=cache_name, config=UpdateCachedContentConfig(expireTime=next_week_utc)
)
print("Expire time(after update):", content_cache.expire_time)
# Example response
#   Expire time(after update): 2025-02-20 15:51:42.614968+00:00

Go

Découvrez comment installer ou mettre à jour le Go.

Pour en savoir plus, lisez la documentation de référence du SDK.

Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

import (
	"context"
	"fmt"
	"io"
	"time"

	genai "google.golang.org/genai"
)

// updateContentCache shows how to update content cache expiration time.
func updateContentCache(w io.Writer, cacheName string) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	// Update expire time using TTL
	resp, err := client.Caches.Update(ctx, cacheName, &genai.UpdateCachedContentConfig{
		TTL: time.Duration(time.Duration.Seconds(36000)),
	})
	if err != nil {
		return fmt.Errorf("failed to update content cache exp. time with TTL: %w", err)
	}

	fmt.Fprintf(w, "Cache expires in: %s\n", time.Until(resp.ExpireTime))
	// Example response:
	// Cache expires in: 10h0m0.005875s

	// Update expire time using specific time stamp
	inSevenDays := time.Now().Add(7 * 24 * time.Hour)
	resp, err = client.Caches.Update(ctx, cacheName, &genai.UpdateCachedContentConfig{
		ExpireTime: inSevenDays,
	})
	if err != nil {
		return fmt.Errorf("failed to update content cache expire time: %w", err)
	}

	fmt.Fprintf(w, "Cache expires in: %s\n", time.Until(resp.ExpireTime))
	// Example response:
	// Cache expires in: 167h59m59.80327s

	return nil
}

Java

Découvrez comment installer ou mettre à jour le Java.

Pour en savoir plus, lisez la documentation de référence du SDK.

Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True


import com.google.genai.Client;
import com.google.genai.types.CachedContent;
import com.google.genai.types.HttpOptions;
import com.google.genai.types.UpdateCachedContentConfig;
import java.time.Duration;
import java.time.Instant;
import java.time.temporal.ChronoUnit;

public class ContentCacheUpdate {

  public static void main(String[] args) {
    // TODO(developer): Replace these variables before running the sample.
    // E.g cacheName = "projects/111111111111/locations/global/cachedContents/1111111111111111111"
    String cacheName = "your-cache-name";
    contentCacheUpdate(cacheName);
  }

  // Updates the cache using the specified cache resource name
  public static void contentCacheUpdate(String cacheName) {

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (Client client =
        Client.builder()
            .location("global")
            .vertexAI(true)
            .httpOptions(HttpOptions.builder().apiVersion("v1").build())
            .build()) {

      // Get info of the cached content
      CachedContent cachedContent = client.caches.get(cacheName, null);

      cachedContent.expireTime()
          .ifPresent(expireTime -> System.out.println("Expire time: " + expireTime));
      // Example response
      // Expire time: 2025-07-29T23:39:49.227291Z

      // Update expire time using TTL
      CachedContent updatedCachedContent =
          client.caches.update(
              cacheName,
              UpdateCachedContentConfig.builder().ttl(Duration.ofSeconds(36000)).build());

      updatedCachedContent.expireTime()
          .ifPresent(expireTime -> System.out.println("Expire time after update: " + expireTime));
      // Example response
      // Expire time after update: 2025-07-30T08:40:33.537205Z

      // Update expire time using specific time stamp
      Instant nextWeek = Instant.now().plus(7, ChronoUnit.DAYS);
      updatedCachedContent =
          client.caches.update(
              cacheName, UpdateCachedContentConfig.builder().expireTime(nextWeek).build());

      updatedCachedContent
          .expireTime()
          .ifPresent(expireTime -> System.out.println("Expire time after update: " + expireTime));
      // Example response
      // Expire time after update: 2025-08-05T22:40:33.713988900Z

      System.out.println("Updated cache: " + cacheName);
    }
  }
}

Node.js

Installer

npm install @google/genai

Pour en savoir plus, consultez la documentation de référence du SDK.

Définissez des variables d'environnement pour utiliser le SDK Gen AI avec Vertex AI :

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True

const {GoogleGenAI} = require('@google/genai');
const {DateTime} = require('luxon');

const GOOGLE_CLOUD_PROJECT = process.env.GOOGLE_CLOUD_PROJECT;
const GOOGLE_CLOUD_LOCATION = process.env.GOOGLE_CLOUD_LOCATION || 'global';

async function updateContentCache(
  projectId = GOOGLE_CLOUD_PROJECT,
  location = GOOGLE_CLOUD_LOCATION,
  cacheName = 'example-cache'
) {
  const client = new GoogleGenAI({
    vertexai: true,
    project: projectId,
    location: location,
    httpOptions: {
      apiVersion: 'v1',
    },
  });

  let contentCache = await client.caches.get({
    name: cacheName,
  });

  console.log('Expire time', contentCache.expireTime);

  contentCache = await client.caches.update({
    name: cacheName,
    config: {
      ttl: '36000s',
    },
  });

  const expireTime = DateTime.fromISO(contentCache.expireTime, {zone: 'utc'});
  const now = DateTime.utc();
  const timeDiff = expireTime.diff(now, ['seconds']);

  console.log('Expire time (after update):', expireTime.toISO());
  console.log('Expire time (in seconds):', Math.floor(timeDiff.seconds));

  const nextWeekUtc = DateTime.utc().plus({days: 7});
  console.log('Next week (UTC):', nextWeekUtc.toISO());

  contentCache = await client.caches.update({
    name: cacheName,
    config: {
      expireTime: nextWeekUtc,
    },
  });

  console.log('Expire time (after update):', contentCache.expireTime);
  return contentCache;
}
// Example response
//    Expire time(after update): 2025-02-20 15:51:42.614968+00:00

REST

Vous pouvez utiliser REST pour créer une mise à jour du cache de contexte à l'aide de l'API Vertex AI pour envoyer une requête PATCH au point de terminaison du modèle d'éditeur. L'exemple suivant montre comment mettre à jour la date d'expiration à l'aide du paramètre ttl.

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.
  • CACHE_ID : ID du cache de contexte. L'ID du cache de contexte est renvoyé lorsque vous créez le cache de contexte. Vous pouvez également trouver les ID de cache de contexte en listant les caches de contexte d'un projet Google Cloud . Pour en savoir plus, consultez les sections Créer un cache de contexte et Répertorier les caches de contexte.
  • SECONDS : float qui spécifie le composant en secondes de la durée avant l'expiration du cache.
  • NANOSECONDS : float qui spécifie le composant en nanosecondes de la durée avant l'expiration du cache.

Méthode HTTP et URL :

PATCH https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents/CACHE_ID

Corps JSON de la requête :

{
  "seconds":"SECONDS",
  "nanos":"NANOSECONDS"
}

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 PATCH \
-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/CACHE_ID"

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 PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents/CACHE_ID" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

Exemple de commande curl

PROJECT_ID="PROJECT_ID"
LOCATION="us-central1"
CACHE_ID="CACHE_ID"

curl \
-X PATCH \
-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/${CACHE_ID}" -d \
'{
   "ttl": {"seconds":"3600","nanos":"0"}
}'

Mettre à jour le cache de contexte à l'aide de son paramètre expire_time

Voici un exemple de commande curl qui utilise le paramètre expire_time pour mettre à jour son heure d'expiration au 30 juin 2024 à 9h.

REST

Vous pouvez utiliser REST pour créer une mise à jour du cache de contexte à l'aide de l'API Vertex AI pour envoyer une requête PATCH au point de terminaison du modèle d'éditeur. L'exemple suivant montre comment mettre à jour la date d'expiration à l'aide du paramètre expire_time.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : .
  • LOCATION : région dans laquelle la requête de création de cache de contexte a été traitée.
  • CACHE_ID : ID du cache de contexte. L'ID se trouve dans la réponse lorsque vous créez le cache de contexte.
  • EXPIRE_TIME : Timestamp qui spécifie l'heure d'expiration du cache de contexte.

Méthode HTTP et URL :

PATCH https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents/CACHE_ID

Corps JSON de la requête :

{
   "expire_time":"EXPIRE_TIME"
}

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 PATCH \
-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/CACHE_ID"

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 PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents/CACHE_ID" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

Exemple de commande curl

PROJECT_ID="PROJECT_ID"
LOCATION="us-central1"
CACHE_ID="CACHE_ID"

curl \
-X PATCH \
-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/${CACHE_ID}" -d \
'{
   "expire_time":"2024-06-30T09:00:00.000000Z"
}'

Étape suivante