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
Uso básico
Adicionecache_control ao bloco de conteúdo da última mensagem do prefixo estável:
ttl for omitido, o valor padrão será 5m.Estrutura das mensagens
Recomendamos usar a seguinte estrutura: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
cache_control define tanto o “limite do cache” quanto o seu “período de validade”.Exemplo de solicitação nativa do Gemini
O endpoint nativogenerateContent 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:
systemInstruction, os contents anteriores ao limite, o TTL e as tools inalterados; modifique apenas o conteúdo em tempo real posterior ao limite.
Fluxo de criação e reutilização
Na primeira vez que você enviar uma solicitação comcache_control:
Reutilizar o cache
Nas solicitações seguintes, mantenha os itens abaixo inalterados:- O modelo
- Todas as mensagens anteriores a
cache_control cache_control.ttl- As definições de ferramentas (se você usar tools)
systemInstructionnas solicitações nativas do Gemini
- Modificar o texto ou a ordem das mensagens no prefixo estável
- Trocar o modelo
- Alterar
5mpara1h - Modificar as tools ou a definição dos parâmetros das ferramentas
- Usar outro usuário ou canal de API
Exemplo em Python
stable_messages e substitua apenas a última mensagem do usuário.
Verificar se o cache foi usado
Resposta compatível com a OpenAI
Consulte os seguintes campos da resposta:cached_tokens, pois o sistema pode criar o cache e referenciá-lo na mesma chamada ao modelo.
Resposta nativa do Gemini
ConsulteusageMetadata.cachedContentTokenCount na resposta:
streamGenerateContent retorna o mesmo usageMetadata em um frame da resposta SSE. O cliente deve ler o frame que contém esse campo, em vez de verificar apenas o primeiro trecho de texto.
Recomendações
Perguntas frequentes
O formato de solicitação nativo do Gemini pode criar um cache automaticamente?
O formato de solicitação nativo do Gemini pode criar um cache automaticamente?
generateContent e streamGenerateContent usam a mesma estrutura de cache_control. O limite deve estar em contents[].parts[], e deve haver pelo menos um content em tempo real depois do content que contém o limite.Se a solicitação já fornecer explicitamente o nome de um recurso cachedContent nativo, a plataforma dará prioridade ao recurso fornecido pelo usuário e não tentará criar um cache automaticamente.Por que o cache não foi usado?
Por que o cache não foi usado?
- O prefixo estável não é exatamente igual ao da solicitação anterior
- O TTL expirou
- O modelo ou as tools foram modificados
- O conteúdo armazenado em cache não atingiu o número mínimo de tokens exigido pelo modelo
cache_controlfoi colocado na última mensagem, sem deixar uma pergunta em tempo real
Posso colocar cache_control na última mensagem?
Posso colocar cache_control na última mensagem?
Posso configurar outro TTL?
Posso configurar outro TTL?
5m e 1h são compatíveis. Qualquer outro valor retorna um erro HTTP 400.Posso configurar vários limites de cache?
Posso configurar vários limites de cache?
A solicitação falhará se o cache não estiver disponível?
A solicitação falhará se o cache não estiver disponível?
O que acontece se o modelo não tiver o Context Cache habilitado?
O que acontece se o modelo não tiver o Context Cache habilitado?
Por que cache_write_tokens é 0?
Por que cache_write_tokens é 0?
cache_write_tokens, no estilo da OpenAI ou do Claude, não é usado para indicar quantos tokens foram gravados no cache.Um valor de cached_tokens maior que 0 significa que um cache explícito foi criado?
Um valor de cached_tokens maior que 0 significa que um cache explícito foi criado?
Como o cache é cobrado?
Como o cache é cobrado?