O cache de prompts é a maior alavanca individual na fatura de um agente e a que tem maior probabilidade de não estar funcionando silenciosamente. Quando marcado corretamente, o trecho repetido da sua solicitação é cobrado a um décimo da tarifa de entrada. Quando marcado incorretamente — ou encaminhado por algo que reescreve seu prefixo — ele é cobrado acima da tarifa comum, porque você paga para gravar entradas de cache que ninguém lê.
O mecanismo está bem documentado em outros lugares. O que não está documentado em lugar algum é o que muda quando a solicitação passa por um gateway, que é a situação da maioria das pessoas que leem isto. Ambos são apresentados abaixo.
O mecanismo, brevemente
Você marca um prefixo estável — um prompt do sistema, um esquema de ferramenta, um documento — e o provedor armazena sua forma processada. A próxima solicitação cujo prefixo corresponda exatamente o lê de volta em vez de processá-lo novamente.
{
"model": "claude-sonnet-5",
"max_tokens": 1024,
"system": [
{
"type": "text",
"text": "<your long, stable instructions>",
"cache_control": { "type": "ephemeral" }
}
],
"messages": [{ "role": "user", "content": "..." }]
}Duas propriedades fazem todo o trabalho e causam todos os problemas. A correspondência ocorre em um prefixo, portanto qualquer alteração no início invalida tudo o que vem depois. E uma entrada tem uma vida útil, portanto uma conversa com longos intervalos entre turnos é reconstruída em vez de lida.
Quanto custa
| Modelo | Entrada, por 1M | Leitura do cache | Gravação de cache na Kunavo |
|---|---|---|---|
| Claude Haiku 4.5 | $0,70 | $0,07 | $0,88 |
| Claude Sonnet 5 | $1,40 | $0,14 | $1,75 |
| Claude Opus 5 | $3,50 | $0,35 | $4,38 |
A terceira coluna é a proporção padrão: uma leitura custa um décimo da entrada. A quarta também é padrão — uma gravação de cache custa 1,25× a entrada, o multiplicador que a Anthropic informa para uma entrada de cinco minutos — e, como ambas as proporções se aplicam ao preço de entrada da Kunavo, cada uma mantém o mesmo desconto em relação à tabela da Anthropic que a entrada do modelo. Onde a Kunavo diverge da Anthropic é na entrada de uma hora: a Anthropic lista essa gravação a 2× a entrada, e a Kunavo a cobra à mesma taxa de 1,25×. Isso importa especificamente para cargas de trabalho que são reconstruídas com frequência — agentes de longa duração, conversas lentas, qualquer situação em que o prefixo mude — porque são as cargas em que as gravações, e não as leituras, dominam a linha de cache da fatura.
Ambos os valores são lidos do catálogo no momento da renderização, a mesma fonte que a tabela de preços e a calculadora do Claude leem — não há tarifas digitadas manualmente nesta página.
Lendo o objeto de uso
Não deduza o comportamento do cache pela fatura; cada resposta informa isso diretamente, e as três contagens de tokens são todo o diagnóstico.
// The four numbers that tell you whether caching is working.
// Read them from every response before you tune anything.
"usage": {
"input_tokens": 312, // billed at the input rate
"cache_creation_input_tokens": 0, // billed at the write rate
"cache_read_input_tokens": 24106, // billed at the read rate
"output_tokens": 890
}
// A healthy cached agent turn looks like the above: a small
// input_tokens, a large cache_read, and a zero creation.
// If cache_creation is large on EVERY turn, the cache is being
// rebuilt each time and you are paying more, not less.Por que as taxas de acerto caem atrás de um gateway
Um cache vive no upstream que o criou, e a correspondência do prefixo é exata. Esses dois fatos juntos produzem três modos de falha que nunca ocorrem quando você chama diretamente um único provedor:
O roteamento mudou. Se solicitações consecutivas chegarem a upstreams diferentes, a segunda não encontrará cache — a entrada gravada pela primeira não é visível de onde a segunda foi executada. Isso é invisível nos seus próprios logs e aparece somente como uma contagem de criação de cache que deveria ter sido uma leitura. É a causa mais comum e é por isso que um gateway que redireciona livremente entre upstreams pode ser mais barato por token e mais caro por sessão.
Algo foi injetado antes do seu prefixo. Uma camada que reescreve a mensagem do sistema, normaliza as definições de ferramentas ou reordena campos produz um prefixo diferente, e um prefixo diferente é uma falha de acerto. Nada apresenta erro; a fatura apenas aumenta.
O intervalo excedeu a vida útil da entrada. Um agente que pensa por vários minutos entre os turnos pode reconstruir o cache todas as vezes. Isso é uma propriedade da sua carga de trabalho, não do gateway, mas interage mal com o primeiro caso: uma reconstrução também é uma oportunidade de novo roteamento.
O diagnóstico para os três casos é o mesmo — observe cache_creation_input_tokens durante uma sessão. Um valor constante e alto significa que você está reconstruindo. Um valor alto uma vez e zero depois significa que está funcionando. Na Kunavo, o custo no nível da solicitação e as contagens de tokens armazenados em cache estão na visão de uso, e a referência de cache traz os detalhes no nível do endpoint.
O que fazer a respeito
Mantenha o prefixo armazenado em cache genuinamente estável — coloque tudo o que muda por solicitação depois do bloco marcado, nunca antes dele. Agrupe os turnos de um agente mais próximos quando puder, pois o tempo ocioso é inimigo de uma entrada de curta duração. E meça uma sessão de ponta a ponta, não uma solicitação: o cache é uma propriedade de uma sequência, e uma estimativa por solicitação não consegue percebê-lo. A calculadora de custo de tokens do Claude tem um campo de tokens armazenados em cache exatamente por esse motivo — defina-o como a fração do seu prompt que realmente se repete e o valor mensal deixará de ser fictício.
Perguntas frequentes
Como funciona o cache de prompts do Claude?
Você marca um prefixo estável da solicitação — normalmente o prompt do sistema, as definições de ferramentas ou um documento longo — com cache_control, e o provedor armazena a forma processada desses tokens. Na próxima solicitação cujo prefixo corresponda exatamente, esses tokens são servidos do cache e cobrados por uma fração da tarifa de entrada, em vez de serem processados novamente. A correspondência ocorre em um prefixo exato, portanto qualquer alteração no início da solicitação invalida tudo o que vem depois.
Quanto o cache de prompts do Claude economiza?
Uma leitura do cache é cobrada a um décimo da tarifa de entrada do modelo. No Claude Sonnet 5, isso corresponde a $0,14, em vez de $1,40 por 1 milhão de tokens; no Claude Opus 5, $0,35, em vez de $3,50; no Claude Haiku 4.5, $0,07, em vez de $0,70. A economia depende inteiramente da proporção da sua entrada que se repete: um produto de chat em que cada prompt é diferente não economiza nada, enquanto um agente de programação que reenvia um mapa do repositório de 24.000 tokens a cada turno transforma a maior parte da cobrança de entrada em um décimo dela.
A Kunavo cobra uma sobretaxa de gravação no cache?
Sim — o mesmo 1,25× cobrado pela Anthropic, na tarifa de desconto do modelo. A própria API da Anthropic cobra a gravação de uma entrada de cache acima da tarifa de entrada comum, sob o argumento de que a gravação custa mais para processar do que um token comum: 1,25× a entrada para uma entrada de cinco minutos e 2× para uma de uma hora. A Kunavo cobra cada gravação de cache a 1,25× a tarifa de entrada do próprio modelo, incluindo a de uma hora, portanto uma gravação mantém o mesmo desconto em relação à tabela da Anthropic que a entrada do modelo — em Claude Sonnet 5, $1,75 por 1M de tokens gravados contra $1,40 para entrada comum. Isso é definido em um único lugar no código de faturamento como uma proporção de gravação de 1,25 para modelos Claude, e as calculadoras deste site leem a tarifa resultante dessa mesma função em vez de repeti-la, portanto o valor exibido não pode divergir do que é cobrado.
Por que minha taxa de acertos do cache é baixa por meio de um gateway?
Porque um cache está vinculado ao upstream que o mantém, e a correspondência de prefixo é exata. Três coisas o interrompem em uma configuração de gateway que não o interromperiam diretamente contra um único provedor. Uma solicitação encaminhada a um upstream diferente do anterior não encontra cache ali, porque o cache não é compartilhado entre eles. Qualquer coisa injetada antes do seu prefixo — uma mensagem do sistema reescrita, uma lista de ferramentas reordenada — produz um prefixo diferente e, portanto, uma falha de acerto. E um intervalo maior que a vida útil da entrada a expira, então um agente que avança lentamente a reconstrói a cada turno. O objeto de uso informa qual é o caso: um valor alto de cache_creation_input_tokens em todas as solicitações significa reconstrução, não cache.
Como saber se o cache de prompts está realmente funcionando?
Leia o objeto de uso, não a fatura. Cada resposta informa separadamente input_tokens, cache_creation_input_tokens e cache_read_input_tokens. Um cache funcionando mostra uma contagem pequena de entrada, uma contagem grande de cache_read e uma contagem de criação igual a zero ou ocasional. Um cache que está sendo reconstruído mostra uma contagem grande de criação em todos os turnos — o que custa mais do que não usar cache, porque você paga para gravar entradas que ninguém lê.
Qual é o tamanho mínimo para um cache de prompts do Claude?
Existe um limite abaixo do qual um prefixo não pode ser armazenado em cache, e ele varia conforme o nível do modelo, portanto um prompt de sistema curto pode nunca entrar em cache silenciosamente, não importa como você o marque. O teste prático é empírico, não documental: marque o prefixo, envie duas solicitações idênticas e verifique se a segunda informa cache_read_input_tokens acima de zero. Se não informar, o prefixo está abaixo do limite ou não é idêntico byte a byte.
O cache de prompts altera o que o modelo retorna?
Não. O cache é uma otimização de cobrança e latência no processamento do prefixo, não uma alteração no que o modelo vê ou produz. A mesma solicitação, com ou sem cache_control, retorna o mesmo tipo de resposta; o que muda é o custo do prefixo e a velocidade com que o primeiro token chega.