cache_control a um prefixo estável, a primeira solicitação cria um cache e as solicitações seguintes podem ler esse cache enquanto ele não expirar.
Antes de começar, defina sua chave de API:
Os exemplos deste guia usam o
claude-sonnet-5. Para saber se outros modelos são compatíveis com o cache de contexto, consulte a descrição dos modelos na 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 prompt de sistema longo
- Uma base de conhecimento fixa ou documentação de produto
- Um histórico de conversa com vários turnos que permanece inalterado
- Bases de código, definições de ferramentas e instruções reutilizadas
API Claude Messages
Cache de 5 minutos
Adicionecache_control ao bloco de conteúdo que deve ser armazenado em cache:
ttl for omitido, o período de validade padrão do cache será de 5 minutos.
Cache de 1 hora
Para usar um cache de 1 hora, adicione também o cabeçalho de solicitaçãoanthropic-beta e defina ttl como 1h:
Campos de uso na resposta
A API Claude Messages retorna separadamente os tokens de entrada comum, gravação no cache e leitura do cache emusage:
cache_creation_input_tokens > 0; ao enviar novamente o mesmo prefixo estável, você deverá ver cache_read_input_tokens > 0.
API compatível com a OpenAI
Exemplo de solicitação
Ao usar o cache por meio de/v1/chat/completions, a sintaxe de cache_control é semelhante à da API Claude Messages:
Cache de 1 hora
O formato compatível com a OpenAI também oferece cache de 1 hora. Basta adicionar o cabeçalho de solicitaçãoanthropic-beta e definir ttl: "1h" em cache_control:
content deve ser um array
No formato compatível com a OpenAI, cache_control deve estar dentro de um bloco de conteúdo específico. Ele não pode ser anexado a uma mensagem cujo conteúdo seja uma string.
Armazenar em cache blocos de conteúdo user ou assistant
Você também pode colocar cache_control no bloco de conteúdo de uma mensagem user ou assistant para armazenar em cache um documento longo ou um prefixo de conversa com vários turnos:
cache_control somente ao bloco de conteúdo estável.
Campos de uso na resposta
O formato compatível com a OpenAI usa campos diferentes para relatar o uso do cache:Se
prompt_tokens_details.cache_write_tokens for 0, ainda será necessário verificar claude_cache_creation_5_m_tokens e claude_cache_creation_1_h_tokens. Quando houver campos detalhados por TTL, o volume gravado no cache será retornado pelo campo correspondente.Em
claude_cache_creation_5_m_tokens e claude_cache_creation_1_h_tokens, há sublinhados entre o número e a unidade. Use exatamente os nomes dos campos retornados na resposta.Condições para uma leitura do cache
O prefixo atinge o tamanho mínimo
O prefixo de cache do modelo usado nos exemplos normalmente precisa ter pelo menos cerca de 1024 tokens. Se o prefixo for muito curto, o marcador de cache poderá ser ignorado sem gerar um erro.O prefixo permanece idêntico byte a byte
O texto, os espaços, as quebras de linha e a ordem dos blocos de conteúdo no prefixo de cache devem permanecer inalterados. Não adicione conteúdo dinâmico, como carimbos de data e hora, IDs aleatórios ou contadores de solicitações, ao prefixo estável.A solicitação não acionou uma recusa do modelo
Se a solicitação acionar uma recusa do modelo, a resposta ainda poderá relatar tokens de criação do cache, mas esse cache não será lido na solicitação seguinte. Ao investigar por que não houve uma leitura do cache, verifique também sestop_reason é refusal.
O cache ainda está válido
O período de validade do cache é de 5 minutos ou 1 hora e é calculado a partir do último acesso. Uma leitura do cache renova o período de validade.Uso para cobrança
O uso relacionado ao cache é dividido em três categorias:
As três categorias de uso não se sobrepõem. A gravação no cache normalmente custa mais do que a entrada comum, enquanto a leitura do cache normalmente custa menos. Por isso, o cache de contexto é mais adequado para prefixos estáveis que serão reutilizados dentro do TTL.
Exemplo mínimo reproduzível
O script abaixo primeiro gera um prefixo estável suficientemente longo e depois envia duas vezes a mesma solicitação. A segunda resposta deverá apresentarcache_read_input_tokens > 0.
Lista de verificação para solução de problemas
Se não houver uma leitura do cache, verifique os itens abaixo na ordem indicada:stop_reasonérefusal?- O prefixo de cache atinge o número mínimo de tokens exigido pelo modelo?
- Os prefixos estáveis das duas solicitações são idênticos byte a byte?
- No formato compatível com a OpenAI,
contenté um array? cache_controlestá dentro de um bloco de conteúdo específico?- Para o cache de 1 hora,
ttl: "1h"e o cabeçalhoanthropic-betacorrespondente foram definidos? - O cache já ultrapassou o TTL?
- Você está lendo os campos de uso do cache correspondentes à API atual?