Actualizar una caché de contexto

Puedes actualizar cuándo caduca una caché de contexto. El tiempo de vencimiento predeterminado de una caché de contexto es de 60 minutos después de su creación. Una caché de contexto caducada se elimina durante un proceso de recogida de elementos no utilizados y no se puede usar ni actualizar. Para actualizar la hora en la que caduca una caché de contexto que aún no ha caducado, actualiza una de las siguientes propiedades:

  • ttl: número de segundos y nanosegundos que la caché permanece activa después de crearse o después de que se actualice ttl antes de que caduque. Cuando configuras el ttl, se actualiza el expireTime de la caché.

  • expire_time: un Timestamp que especifica la fecha y la hora absolutas en las que caduca la caché de contexto.

Actualizar la caché de contexto mediante su parámetro ttl

A continuación,se muestra un ejemplo de comando curl que actualiza su tiempo de vencimiento en 3600 segundos.

Python

Instalar

pip install --upgrade google-genai

Para obtener más información, consulta la documentación de referencia del SDK.

Define variables de entorno para usar el SDK de IA generativa con 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=us-central1
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/111111111111/locations/us-central1/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

Consulta cómo instalar o actualizar Go.

Para obtener más información, consulta la documentación de referencia del SDK.

Define variables de entorno para usar el SDK de IA generativa con 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=us-central1
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

Consulta cómo instalar o actualizar Java.

Para obtener más información, consulta la documentación de referencia del SDK.

Define variables de entorno para usar el SDK de IA generativa con 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=us-central1
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);
    }
  }
}

REST

Puedes usar REST para crear o actualizar la caché de contexto mediante la API Vertex AI para enviar una solicitud PATCH al endpoint del modelo de editor. En el siguiente ejemplo se muestra cómo actualizar la fecha de vencimiento mediante el parámetro ttl.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: tu ID de proyecto.
  • LOCATION: la región en la que se ha procesado la solicitud para crear la caché de contexto.
  • CACHE_ID: ID de la caché de contexto. El ID de la caché de contexto se devuelve cuando creas la caché de contexto. También puedes encontrar IDs de caché de contexto enumerando las cachés de contexto de un proyecto Google Cloud . Para obtener más información, consulta los artículos sobre cómo crear una caché de contexto y listar cachés de contexto.
  • SECONDS: un float que especifica el componente de segundos de la duración antes de que caduque la caché.
  • NANOSECONDS: un float que especifica el componente de nanosegundos de la duración antes de que caduque la caché.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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

Deberías recibir una respuesta JSON similar a la siguiente:

Comando curl de ejemplo

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"}
}'

Actualizar la caché de contexto mediante su parámetro expire_time

A continuación, se muestra un ejemplo de un comando curl que usa el parámetro expire_time para actualizar su hora de vencimiento a las 9:00 del 30 de junio del 2024.

REST

Puedes usar REST para crear o actualizar la caché de contexto mediante la API Vertex AI para enviar una solicitud PATCH al endpoint del modelo de editor. En el siguiente ejemplo se muestra cómo actualizar la fecha de vencimiento mediante el parámetro expire_time.

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • PROJECT_ID: .
  • LOCATION: la región en la que se ha procesado la solicitud para crear la caché de contexto.
  • CACHE_ID: ID de la caché de contexto. Puedes encontrar el ID en la respuesta cuando crees la caché de contexto.
  • EXPIRE_TIME: un Timestamp que especifica la hora en la que caduca la caché de contexto.

Método HTTP y URL:

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

Cuerpo JSON de la solicitud:

{
   "expire_time":"EXPIRE_TIME"
}

Para enviar tu solicitud, elige una de estas opciones:

curl

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

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

Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

$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

Deberías recibir una respuesta JSON similar a la siguiente:

Comando curl de ejemplo

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"
}'

Siguientes pasos