Atualize uma cache de contexto

Pode atualizar quando uma cache de contexto expira. O tempo de expiração predefinido de uma cache de contexto é de 60 minutos após a hora de criação. Uma cache de contexto expirada é eliminada durante um processo de recolha de lixo e não pode ser usada nem atualizada. Para atualizar a hora em que uma cache de contexto não expirada expira, atualize uma das seguintes propriedades:

  • ttl: o número de segundos e nanosegundos que a cache dura após a sua criação ou após a atualização do ttl antes de expirar. Quando define o elemento ttl, a expireTime da cache é atualizada.

  • expire_time - A Timestamp que especifica a data e a hora absolutas em que a cache de contexto expira.

Atualize a cache de contexto através do respetivo parâmetro ttl

Segue-se um exemplo de um comando curl que atualiza o respetivo prazo de validade em 3600 segundos.

Python

Instalação

pip install --upgrade google-genai

Para saber mais, consulte a documentação de referência do SDK.

Defina variáveis de ambiente para usar o SDK de IA generativa com o 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

Saiba como instalar ou atualizar o Go.

Para saber mais, consulte a documentação de referência do SDK.

Defina variáveis de ambiente para usar o SDK de IA generativa com o 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

Saiba como instalar ou atualizar o Java.

Para saber mais, consulte a documentação de referência do SDK.

Defina variáveis de ambiente para usar o SDK de IA generativa com o 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);
    }
  }
}

Node.js

Instalação

npm install @google/genai

Para saber mais, consulte a documentação de referência do SDK.

Defina variáveis de ambiente para usar o SDK de IA generativa com o 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

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

Pode usar o REST para criar uma atualização da cache de contexto através da API Vertex AI para enviar um pedido PATCH para o ponto final do modelo do publicador. O exemplo seguinte mostra como atualizar a data de validade através do parâmetro ttl.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: o seu ID do projeto.
  • LOCATION: a região onde o pedido para criar a cache de contexto foi processado.
  • CACHE_ID: o ID da cache de contexto. O ID da cache de contexto é devolvido quando cria a cache de contexto. Também pode encontrar IDs da cache de contexto listando as caches de contexto de um projeto do Google Cloud Platform (GCP) com o comando: Google Cloud Para mais informações, consulte as secções Crie uma cache de contexto e Liste as caches de contexto.
  • SECONDS: um float que especifica o componente de segundos da duração antes de a cache expirar.
  • NANOSECONDS: um float que especifica o componente de nanosegundos da duração antes de a cache expirar.

Método HTTP e URL:

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

Corpo JSON do pedido:

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

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte 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

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte 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

Deve receber uma resposta JSON semelhante à seguinte:

Comando curl de exemplo

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

Atualize a cache de contexto através do respetivo parâmetro expire_time

Segue-se um exemplo de um comando curl que usa o parâmetro expire_time para atualizar a respetiva hora de validade para as 09:00 a 30 de junho de 2024.

REST

Pode usar o REST para criar uma atualização da cache de contexto através da API Vertex AI para enviar um pedido PATCH para o ponto final do modelo do publicador. O exemplo seguinte mostra como atualizar a data de validade através do parâmetro expire_time.

Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

  • PROJECT_ID: .
  • LOCATION: a região onde o pedido para criar a cache de contexto foi processado.
  • CACHE_ID: o ID da cache de contexto. Pode encontrar o ID na resposta quando criar a cache de contexto.
  • EXPIRE_TIME: um Timestamp que especifica a hora em que a cache de contexto expira.

Método HTTP e URL:

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

Corpo JSON do pedido:

{
   "expire_time":"EXPIRE_TIME"
}

Para enviar o seu pedido, escolha uma destas opções:

curl

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte 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

Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte 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

Deve receber uma resposta JSON semelhante à seguinte:

Comando curl de exemplo

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

O que se segue?