Antes de usar um cache de contexto, é preciso criar um. As principais características de um cache de contexto incluem: O conteúdo armazenado em cache precisa obedecer aos limites mostrados na tabela a seguir: Contagem mínima de tokens em cache Tamanho máximo de conteúdo que pode ser armazenado em cache usando um blob ou texto Tempo mínimo antes de um cache expirar após ser criado O tempo máximo para que um cache expire após ser criado O cache de contexto não é compatível com a região de Sydney, Austrália ( O armazenamento em cache de contexto oferece suporte a chaves de criptografia gerenciadas pelo cliente (CMEKs), permitindo que você controle a criptografia dos seus dados armazenados em cache e proteja suas informações sensíveis com chaves de criptografia que você gerencia e possui. Isso oferece uma camada extra de segurança e compliance. Consulte o exemplo para mais detalhes. O armazenamento em cache de contexto oferece suporte à Transparência no acesso. Os exemplos a seguir mostram como criar um cache de contexto usando a API REST ou o SDK da IA generativa do Google para Python e Go. Use esta tabela para decidir qual opção é a melhor para você.
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 a Vertex AI:
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 a Vertex AI:
Para criar um cache de contexto com a API REST, envie uma solicitação POST para o
endpoint do modelo do publisher. O exemplo a seguir mostra como criar um
cache de contexto usando um arquivo armazenado em um bucket do Cloud Storage.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
Método HTTP e URL:
Corpo JSON da solicitação: Para enviar a solicitação, escolha uma destas opções:
Salve o corpo da solicitação em um arquivo com o nome
Salve o corpo da solicitação em um arquivo com o nome Você receberá uma resposta JSON semelhante a esta:
Para implementar o cache de contexto com CMEKs, crie uma CMEK seguindo
as instruções e verifique se a
conta de serviço por produto e por projeto da Vertex AI (P4SA) tem as
permissões necessárias de criptografador/descriptografador de CryptoKey do Cloud KMS na chave.
Isso permite criar e gerenciar conteúdo em cache com segurança, além de fazer
outras chamadas, como {
É possível usar o REST para criar um cache de contexto usando a API Vertex AI para enviar uma
POST para o endpoint do modelo do publisher. O exemplo a seguir mostra
como criar um cache de contexto usando um arquivo armazenado em uma instância do Cloud Storage
do Cloud Storage.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
Método HTTP e URL:
Corpo JSON da solicitação: Para enviar a solicitação, escolha uma destas opções:
Salve o corpo da solicitação em um arquivo com o nome
Salve o corpo da solicitação em um arquivo com o nome Você receberá uma resposta JSON semelhante a esta:
Instalar 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 a Vertex AI: Saiba como instalar ou atualizar o SDK da IA generativa para 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 a Vertex AI:
ttl
ou expire_time
ao criar o cache. Também é possível atualizar o prazo de validade de um cache não expirado. Depois que um cache expira, é necessário recriá-lo para usar o conteúdo novamente.Limites
Limites de armazenamento em cache contextual
2,048
(Gemini 2.5 Pro)1,024
(Gemini 2.5 Flash)1,024
(Gemini 2.0 Flash)1,024
(Gemini 2.0 Flash-Lite)
10 MB
1 minuto
Não há uma duração máxima de cache
Antes de começar
Suporte a locais
australia-southeast1
).Suporte a chaves de criptografia
Suporte da Transparência no acesso
criar um cache de contexto
Método
Descrição
Caso de uso
API REST
Envie solicitações diretamente para o endpoint de API Vertex AI usando ferramentas como
curl
ou um cliente HTTP personalizado.Ideal para testes rápidos, ambientes sem um SDK compatível ou integração com aplicativos que não são Python/Go.
SDK da IA generativa para Python
Use uma biblioteca Python idiomática para interagir com a API.
Ideal para desenvolvedores Python que querem uma experiência de desenvolvimento simplificada.
SDK de IA generativa para Go
Use uma biblioteca Go idiomática para interagir com a API.
Ideal para desenvolvedores Go que querem integrar o cache de contexto aos aplicativos Go.
Python
Instalar
pip install --upgrade google-genai
# 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
Go
# 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
REST
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents
{
"model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID",
"displayName": "CACHE_DISPLAY_NAME",
"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."
}]
}]
}
curl
request.json
e execute o comando a seguir:
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/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents"PowerShell
request.json
e execute o comando a seguir:
$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/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents" | Select-Object -Expand ContentExemplo de comando curl
LOCATION="us-central1"
MODEL_ID="gemini-2.0-flash-001"
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}/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}"
}
}
]
}
]
}'
Criar um cache de contexto com CMEK
List
, Update
, Delete
, Get
} CachedContent
(s), sem
especificar repetidamente uma chave do KMS.REST
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents
{
"model": "projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-2.0-flash-001",
"displayName": "CACHE_DISPLAY_NAME",
"contents": [{
"role": "user",
"parts": [{
"fileData": {
"mimeType": "MIME_TYPE",
"fileUri": "CONTENT_TO_CACHE_URI"
}
}]}],
"encryptionSpec": {
"kmsKeyName": "KMS_KEY_NAME"
}
}
curl
request.json
e execute o comando a seguir:
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/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents"PowerShell
request.json
e execute o comando a seguir:
$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/v1/projects/PROJECT_ID/locations/LOCATION/cachedContents" | Select-Object -Expand ContentExemplo de comando curl
LOCATION="us-central1"
MODEL_ID="gemini-2.0-flash-001"
PROJECT_ID="test-project"
MIME_TYPE="video/mp4"
CACHED_CONTENT_URI="gs://path-to-bucket/video-file-name.mp4"
KMS_KEY_NAME="projects/${PROJECT_ID}/locations/{LOCATION}/keyRings/your-key-ring/cryptoKeys/your-key"
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}/cachedContents -d \
'{
"model": "projects/{PROJECT_ID}}/locations/{LOCATION}/publishers/google/models/{MODEL_ID}",
"contents" : [
{
"role": "user",
"parts": [
{
"file_data": {
"mime_type":"{MIME_TYPE}",
"file_uri":"{CACHED_CONTENT_URI}"
}
}
]
}
],
"encryption_spec" :
{
"kms_key_name":"{KMS_KEY_NAME}"
}
}'
SDK da IA generativa para Python
pip install --upgrade google-genai
# 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 os
from google import genai
from google.genai.types import Content, CreateCachedContentConfig, HttpOptions, Part
os.environ['GOOGLE_CLOUD_PROJECT'] = 'vertexsdk'
os.environ['GOOGLE_CLOUD_LOCATION'] = 'us-central1'
os.environ['GOOGLE_GENAI_USE_VERTEXAI'] = 'True'
client = genai.Client(http_options=HttpOptions(api_version="v1"))
system_instruction = """
You are an expert researcher. You always stick to the facts in the sources provided, and never make up new facts.
Now look at these research papers, and answer the following questions.
"""
contents = [
Content(
role="user",
parts=[
Part.from_uri(
file_uri="gs://cloud-samples-data/generative-ai/pdf/2312.11805v3.pdf",
mime_type="application/pdf",
),
Part.from_uri(
file_uri="gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf",
mime_type="application/pdf",
),
],
)
]
content_cache = client.caches.create(
model="gemini-2.0-flash-001",
config=CreateCachedContentConfig(
contents=contents,
system_instruction=system_instruction,
display_name="example-cache",
kms_key_name="projects/vertexsdk/locations/us-central1/keyRings/your-project/cryptoKeys/your-key",
ttl="86400s",
),
)
print(content_cache.name)
print(content_cache.usage_metadata)
SDK da IA generativa para Go
import (
"context"
"encoding/json"
"fmt"
"io"
genai "google.golang.org/genai"
)
// createContentCache shows how to create a content cache with an expiration parameter.
func createContentCache(w io.Writer) (string, error) {
ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
HTTPOptions: genai.HTTPOptions{APIVersion: "v1beta1"},
})
if err != nil {
return "", fmt.Errorf("failed to create genai client: %w", err)
}
modelName := "gemini-2.0-flash-001"
systemInstruction := "You are an expert researcher. You always stick to the facts " +
"in the sources provided, and never make up new facts. " +
"Now look at these research papers, and answer the following questions."
cacheContents := []*genai.Content{
{
Parts: []*genai.Part{
{FileData: &genai.FileData{
FileURI: "gs://cloud-samples-data/generative-ai/pdf/2312.11805v3.pdf",
MIMEType: "application/pdf",
}},
{FileData: &genai.FileData{
FileURI: "gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf",
MIMEType: "application/pdf",
}},
},
Role: "user",
},
}
config := &genai.CreateCachedContentConfig{
Contents: cacheContents,
SystemInstruction: &genai.Content{
Parts: []*genai.Part{
{Text: systemInstruction},
},
},
DisplayName: "example-cache",
KmsKeyName: "projects/vertexsdk/locations/us-central1/keyRings/your-project/cryptoKeys/your-key",
TTL: "86400s",
}
res, err := client.Caches.Create(ctx, modelName, config)
if err != nil {
return "", fmt.Errorf("failed to create content cache: %w", err)
}
cachedContent, err := json.MarshalIndent(res, "", " ")
if err != nil {
return "", fmt.Errorf("failed to marshal cache info: %w", err)
}
// See the documentation: https://pkg.go.dev/google.golang.org/genai#CachedContent
fmt.Fprintln(w, string(cachedContent))
return res.Name, nil
}
A seguir
Criar um cache de contexto
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-08-19 UTC.