Skip to Content
DocsRecursos avançadosCache explícito do Gemini

Cache explícito do Gemini (cachedContents)

O Gemini oferece dois tipos de cache:

  • Cache implícito (automático) — o modelo detecta e reutiliza automaticamente prefixos de prompt repetidos, sem nenhuma configuração. Esse é o comportamento padrão descrito em Cache de prompt; os acertos são best-effort, e qualquer pequena alteração no prefixo pode causar um miss.
  • Cache explícito (esta página) — você ativamente cria um grande bloco de contexto como um objeto de cache, recebe um handle cachedContents/{id} e o referencia nas requisições generateContent seguintes. Os acertos são determinísticos: enquanto o cache não expirar, uma referência sempre acerta.

Use o cache explícito quando você tem um contexto grande e estável reutilizado repetidamente (documentos longos, bases de código, bases de conhecimento, instruções de system fixas) e quer taxas de acerto controláveis e faturamento previsível.

O OfoxAI suporta criação / referência / consulta / exclusão do cachedContents nativo do Gemini, compatível com o Google GenAI SDK. Para a referência no nível de endpoint, veja a API cachedContents.

Quando usar o cache explícito

CenárioRecomendação
Perguntas e respostas repetidas sobre um grande contexto fixo (QA de documentos, assistente de código)✅ Cache explícito
Você precisa de acertos garantidos e não pode tolerar misses ocasionais✅ Cache explícito
Requisições curtas, pouco frequentes e com prefixos variáveis❌ O cache implícito já basta; sem objeto de cache para gerenciar
O contexto muda a cada vez❌ O cache não tem valor

O cache explícito exige que o conteúdo em cache atinja um limite mínimo de tokens (aproximadamente 2.048 a 4.096 tokens, dependendo do modelo). Conteúdo pequeno demais falhará ao ser criado ou não trará benefício.

Endpoints

O OfoxAI fornece os endpoints completos de cachedContents sob o protocolo nativo do Gemini:

POST https://api.ofox.ai/gemini/v1beta/cachedContents # Criar GET https://api.ofox.ai/gemini/v1beta/cachedContents/{id} # Consultar DELETE https://api.ofox.ai/gemini/v1beta/cachedContents/{id} # Excluir

Para referenciar um cache na geração de conteúdo, use o endpoint padrão generateContent e adicione cachedContent ao corpo da requisição:

POST https://api.ofox.ai/gemini/v1beta/models/{model}:generateContent

Autenticação

Como nos demais endpoints do Gemini, use o header x-goog-api-key:

x-goog-api-key: <Sua OFOXAI_API_KEY>

Fluxo completo

O exemplo a seguir demonstra um fluxo completo: criar cache → referenciar o cache para gerar → excluir o cache.

1. Criar um cache

Coloque o grande contexto que você quer reutilizar em contents e especifique model e ttl (tempo de vida):

create_cache.py
from google import genai from google.genai import types client = genai.Client( api_key="<Sua OFOXAI_API_KEY>", http_options={"api_version": "v1beta", "base_url": "https://api.ofox.ai/gemini"}, ) # Um documento grande reutilizado repetidamente (deve atingir o limite mínimo de tokens) LONG_DOCUMENT = open("knowledge_base.txt").read() cache = client.caches.create( model="google/gemini-3.1-pro-preview", config=types.CreateCachedContentConfig( contents=[LONG_DOCUMENT], ttl="600s", # o cache vive por 10 minutos ), ) print(cache.name) # cachedContents/xxxxxxxx — o handle para referências futuras

O name retornado (no formato cachedContents/xxxxxxxx) é o handle do cache. Salve-o para referências e gerenciamento futuros.

2. Referenciar o cache para gerar

Referencie o handle do cache via cachedContent em uma requisição generateContent; contents só precisa conter a nova pergunta desta vez:

use_cache.py
response = client.models.generate_content( model="google/gemini-3.1-pro-preview", contents="Com base no documento acima, resuma três pontos principais", config=types.GenerateContentConfig( cached_content=cache.name, # referencia o cache ), ) print(response.text) # Cache hit: a parte em cache é cobrada pela tarifa de "leitura" mais baixa print(response.usage_metadata.cached_content_token_count)

No acerto, o usageMetadata.cachedContentTokenCount da resposta mostra quantos tokens vieram do cache. O mesmo cache pode ser referenciado qualquer número de vezes, cada uma com acerto determinístico, até expirar.

3. Consultar e excluir

Consulte os metadados do cache ou exclua-o proativamente quando não for mais necessário (sem precisar esperar o TTL expirar):

manage_cache.py
# Consultar info = client.caches.get(name=cache.name) print(info.expire_time) # Excluir client.caches.delete(name=cache.name)

Consultar / excluir não exige passar model novamente. O OfoxAI localiza o cache apenas pelo handle.

Ciclo de vida e TTL

Especifique o tempo de vida via ttl na criação, como uma string de segundos terminada em s (por exemplo, "600s").

ParâmetroValor
TTL mínimo / padrão600s (10 minutos)
TTL máximo3600s (1 hora)
  • Dentro do TTL, o cache pode ser referenciado repetidamente com acertos determinísticos.
  • Após o TTL expirar, o cache é invalidado automaticamente, e referenciá-lo gerará erro (o cache não existe mais).
  • Você pode delete a qualquer momento para liberá-lo antecipadamente.

Referenciar um cache expirado ou excluído falha. Trate o caso de “cache invalidado” no lado do cliente (capture o erro e recrie o cache, ou recorra a uma requisição normal).

Faturamento

O cache explícito é cobrado de forma transparente por token, em três partes:

EtapaFórmulaObservação
Criar cachetotalTokenCount × tarifa de cache_writeCobrado pela tarifa de “escrita no cache”; totalTokenCount vem do usageMetadata da resposta de criação — ou seja, o número de tokens em cache
Acerto na referênciacachedContentTokenCount × tarifa de cache_readA parte em cache é cobrada pela tarifa de “leitura do cache”, cerca de 0,10x do preço de entrada padrão, muito mais barato do que reenviar tudo
Novo conteúdo por referênciaO novo prompt / saída de cada vez é cobrado pelas tarifas padrãoOu seja, cada nova pergunta que você faz e a nova resposta do modelo

O modelo de economia: pague uma taxa de “escrita” na criação e, depois, cada referência cobra o conteúdo em cache pela tarifa de “leitura” mais baixa, economizando o custo de “reenviar todo o contexto pelo preço cheio”. Quanto mais referências, mais você economiza. Os preços unitários de cache_write / cache_read de cada modelo são definidos no catálogo de modelos  e nas estatísticas de uso do painel.

Aprimoramento no OfoxAI: roteamento determinístico

O OfoxAI faz balanceamento de carga entre várias regiões GCP / projetos Vertex. Os caches explícitos são region-scoped (vinculados à região): um cache criado em um projeto GCP deve ser referenciado no mesmo projeto, caso contrário retorna 404.

O OfoxAI trata isso automaticamente: na criação, registra a instância upstream à qual o cache está vinculado e, depois, busca essa instância pelo handle do cache e trava (hard-lock) as referências de volta ao mesmo upstream. Independentemente de a requisição de referência levar ou não um identificador de user, e de como a carga é distribuída, as referências são roteadas com precisão para o projeto que criou o cache, com zero drift. Você não precisa se preocupar com a distribuição de regiões subjacente.

A propriedade do cache é protegida: um handle de cache só pode ser referenciado / consultado / excluído pela API Key (e mesmo proprietário) que o criou; o acesso entre contas é rejeitado (403).

Cache explícito vs cache implícito

DimensãoCache implícito (automático)Cache explícito (cachedContents)
Forma de acionamentoDetecta prefixos repetidos automaticamenteCria ativamente um objeto de cache e o referencia
Determinismo do acertoBest-effort; uma pequena alteração no prefixo pode dar missDeterminístico; sempre acerta enquanto não expirar
Necessita gerenciamentoNãoCriar / referenciar / excluir o handle
Indicado paraConteúdo curto com prefixos ocasionalmente repetidosContexto grande, estável e reutilizado repetidamente
FaturamentoDesconto de tarifa de leitura no acertoTaxa de escrita na criação + desconto de tarifa de leitura na referência

Os dois podem ser combinados. Para requisições do dia a dia, deixe o cache implícito agir automaticamente; para contexto que você definitivamente reutiliza repetidamente, use o cache explícito para garantir os acertos. Veja os detalhes do cache implícito em Cache de prompt.

Documentos relacionados

Last updated on