Como funciona o prompt caching do Claude — e como não pagar de mais
O prefixo de uma chamada é renderizado como tools, depois system, depois messages — cachear o último bloco do system aproveita esse prefixo inteiro, mas qualquer byte diferente antes do breakpoint (um timestamp, por exemplo) invalida tudo o que vem depois. Erros 429 e 529 são transitórios: repita com backoff exponencial; um 400 é bug de requisição e repetir sem corrigir só reproduz o erro. Para corpora que crescem além de qualquer context window, RAG escala onde contexto longo não escala — mas fragmenta o que exige síntese entre documentos.
Cache de prompt pode cortar o custo de chamadas repetidas de forma real — mas só se o prefixo cacheado for idêntico byte a byte entre requisições. Esta página explica onde colocar o breakpoint de cache, quando preferir RAG a contexto longo, e como tratar os erros que a API devolve.
Onde colocar o breakpoint de cache
Uma chamada à API é renderizada nesta ordem: tools, depois system, depois messages. Um breakpoint de cache no último bloco do system prompt cacheia o prefixo inteiro que veio antes dele — tools e system juntos — desde que esse prefixo seja idêntico byte a byte entre requisições.
O erro mais comum é colocar o breakpoint depois do conteúdo que varia por requisição: um texto de usuário único nunca se repete exatamente, então cada chamada grava uma entrada de cache nova, pagando um prêmio de escrita, e nunca lê um hit. Dados variáveis sempre por último, depois de qualquer coisa que se repete entre chamadas.
Um único byte muda e o cache inteiro invalida
Cache não é aproximado: qualquer diferença antes do breakpoint — um timestamp no system prompt, uma ordem de tools diferente — invalida tudo o que vem depois dele. Não existe cache parcialmente válido; ou o prefixo é idêntico e reaproveita, ou não é e reprocessa do zero.
Isso também decide a estratégia quando as chamadas não são contínuas: se o intervalo entre lotes de chamadas passa do TTL padrão do cache, mas ainda fica abaixo de uma hora, existe uma opção de TTL mais longo pensada exatamente para esse caso — a alternativa a simplesmente aceitar que o cache expira entre lotes.
429, 529 e 400 pedem reações diferentes
429 (limite de taxa) e 529 (sobrecarga) são erros transitórios: a resposta certa é repetir com backoff exponencial, porque o mesmo pedido tem boa chance de funcionar na próxima tentativa. Um 400, ao contrário, é bug na requisição — repetir sem corrigir nada só reproduz o mesmo erro indefinidamente.
Um pipeline que já lida com esses três também deveria ler os response headers de limite em toda chamada bem-sucedida, para fazer throttling proativo antes de bater no 429 — em vez de descobrir o limite só depois de já tê-lo estourado.
Quando contexto longo não é a resposta certa
Contexto longo funciona bem até o corpus crescer além de qualquer janela de contexto disponível — quando isso acontece, RAG escala de um jeito que simplesmente aumentar o contexto não escala. A troca tem um custo: RAG fragmenta o corpus em pedaços recuperáveis, o que funciona bem para busca pontual, mas atrapalha exatamente as perguntas que exigem síntese entre vários documentos ao mesmo tempo.
A decisão entre os dois não é sobre qual é "melhor" — é sobre o tamanho do corpus e o tipo de pergunta que o caso de uso realmente faz.
Compaction: por que o cliente ainda precisa cuidar do estado
Quando uma conversa longa ultrapassa a janela de contexto, o Claude Code pode compactar o histórico, resumindo trocas antigas para abrir espaço. Isso preserva a continuidade da conversa, mas não é automático do lado do cliente: a cada turno, continua sendo responsabilidade de quem constrói sobre a API reenviar corretamente o identificador da sessão e o histórico retornado — ou o estado se perde mesmo com compaction habilitado.
É o mesmo princípio de RAG versus contexto longo, visto de outro ângulo: gerenciar o que cabe na janela de contexto é uma responsabilidade contínua, não uma configuração que se liga uma vez e se esquece.
Teste você mesmo
Uma fintech opera um endpoint de classificação de documentos. Toda requisição envia as mesmas 12 definições de tool e o mesmo system prompt de 8.000 tokens descrevendo regras de compliance; apenas uma única mensagem de usuário exclusiva (o texto do documento a classificar) varia por requisição. Não há conversa multi-turno — cada requisição é independente.
Para maximizar a taxa de acerto (hit rate) de prompt caching entre requisições, onde o breakpoint de cache_control deve ser colocado?
Leia em seguida
- Como funciona o loop agêntico do Claude CodeO Claude Code roda em ciclos de reunir contexto, agir e verificar — não uma lista fixa de passos. Veja quando delegar a subagents vale a pena.
- CLAUDE.md, hooks e permissões: como o Claude Code decide o que pode fazerCLAUDE.md molda o comportamento do Claude Code; permissões e hooks decidem o que ele pode executar de fato. Entenda a diferença antes de configurar um projeto.
- Técnicas de prompting do Claude: tags XML, exemplos e prefillPrompt bem escrito remove ambiguidade estrutural. Veja como tags XML, exemplos e prefill resolvem os erros mais comuns ao escrever prompts para o Claude.
- O que é MCP e como escrever tools que o Claude escolhe certoMCP padroniza como o Claude se conecta a dados e ações externas. Veja como nomear e descrever tools para que ele escolha a certa, mesmo com dezenas delas.
Estude isso de verdade
Este é um conceito entre todos os da trilha da certificação. O AgentPrep transforma todos eles numa quest diária, dentro do Claude Code.
Comece grátis