Saltar para o conteúdo principal
Este guia explica como criar e reutilizar o cache de contexto do Gemini (Context Cache) por meio da API Chat Completions compatível com a OpenAI ou da API nativa do Gemini. Antes de começar:
Os exemplos deste guia usam o gemini-3.6-flash. Para saber se outros modelos são compatíveis com Context Cache, consulte a descrição do modelo e a página de preços da plataforma.

Casos de uso

Quando várias solicitações incluem repetidamente o mesmo bloco grande de conteúdo, você pode armazenar em cache um prefixo estável, por exemplo:
  • Um system prompt muito longo
  • Uma base de conhecimento fixa ou documentação de produto
  • Mensagens de histórico estáveis em uma conversa com vários turnos
  • Definições e instruções de ferramentas que são reutilizadas
O Context Cache é adequado para solicitações em que “o conteúdo inicial permanece o mesmo e apenas a pergunta final muda”.

Uso básico

Adicione cache_control ao bloco de conteúdo da última mensagem do prefixo estável:
TTLs compatíveis:
Se ttl for omitido, o valor padrão será 5m.

Estrutura das mensagens

Recomendamos usar a seguinte estrutura:
A mensagem que contém cache_control e todas as mensagens anteriores formam o prefixo armazenado em cache. Deve haver pelo menos uma mensagem em tempo real depois dela.

Exemplo de solicitação compatível com a OpenAI

Na primeira vez que você enviar a solicitação, o sistema tentará criar um cache e o usará para concluir a solicitação atual.
Não é necessário chamar um endpoint separado para criar o cache. cache_control define tanto o “limite do cache” quanto o seu “período de validade”.

Exemplo de solicitação nativa do Gemini

O endpoint nativo generateContent do Gemini também permite adicionar cache_control em contents[].parts[]:
cache_control é um campo de extensão da plataforma para o formato de solicitação do Gemini. Depois de identificar o limite, a plataforma remove esse campo antes de encaminhar a solicitação e cria ou reutiliza automaticamente o conteúdo em cache (cachedContent). A interface de streaming usa o mesmo corpo da solicitação; basta alterar o endereço para: