Para a maioria dos casos de uso, compactação do lado do servidor é a estratégia principal para gerenciar contexto em conversas de longa duração. As estratégias nesta página são úteis para cenários específicos onde você precisa de controle mais refinado sobre qual conteúdo é limpo.
A edição de contexto permite que você limpe seletivamente conteúdo específico do histórico de conversa conforme ele cresce. Isso ajuda você a otimizar custos e permanecer dentro dos limites da janela de contexto. Esta página aborda:
| Abordagem | Onde é executada | Estratégias | Como funciona |
|---|---|---|---|
| Lado do servidor | API | Limpeza de resultados de ferramentas (clear_tool_uses_20250919)Limpeza de blocos de pensamento ( clear_thinking_20251015) | Aplicada antes do prompt chegar ao Claude. Limpa conteúdo específico do histórico de conversa. Cada estratégia pode ser configurada independentemente. |
| Lado do cliente | SDK | Compactação | Disponível em SDKs Python e TypeScript ao usar tool_runner. Gera um resumo e substitui o histórico completo de conversa. Veja Compactação do lado do cliente abaixo. |
A edição de contexto está atualmente em beta com suporte para limpeza de resultados de ferramentas e limpeza de blocos de pensamento. Para habilitá-la, use o cabeçalho beta context-management-2025-06-27 em suas solicitações de API.
Compartilhe feedback sobre este recurso através do formulário de feedback.
A estratégia clear_tool_uses_20250919 limpa resultados de ferramentas quando o contexto de conversa cresce além do seu limite configurado. Isso é particularmente útil para fluxos de trabalho de agentes com uso intenso de ferramentas. Resultados antigos de ferramentas (como conteúdo de arquivos ou resultados de pesquisa) não são mais necessários uma vez que Claude os processou.
Quando ativada, a API limpa automaticamente os resultados de ferramentas mais antigos em ordem cronológica. Cada resultado limpo é substituído por texto de espaço reservado para que Claude saiba que foi removido. Por padrão, apenas resultados de ferramentas são limpos. Você pode opcionalmente limpar tanto resultados de ferramentas quanto chamadas de ferramentas (os parâmetros de uso de ferramentas) definindo clear_tool_inputs como verdadeiro.
A estratégia clear_thinking_20251015 gerencia blocos thinking em conversas quando o pensamento estendido está habilitado. Esta estratégia lhe dá controle sobre preservação de pensamento: você pode escolher manter mais blocos de pensamento para manter continuidade de raciocínio, ou limpá-los mais agressivamente para economizar espaço de contexto.
Comportamento padrão: Quando o pensamento estendido está habilitado sem configurar a estratégia clear_thinking_20251015, a API automaticamente mantém apenas os blocos de pensamento do último turno do assistente (equivalente a keep: {type: "thinking_turns", value: 1}).
Para maximizar acertos de cache, preserve todos os blocos de pensamento definindo keep: "all".
Um turno de conversa do assistente pode incluir múltiplos blocos de conteúdo (por exemplo, ao usar ferramentas) e múltiplos blocos de pensamento (por exemplo, com pensamento intercalado).
A edição de contexto é aplicada do lado do servidor antes do prompt chegar ao Claude. Sua aplicação cliente mantém o histórico completo e não modificado de conversa. Você não precisa sincronizar seu estado de cliente com a versão editada. Continue gerenciando seu histórico completo de conversa localmente como você normalmente faria.
A interação da edição de contexto com cache de prompt varia por estratégia:
Limpeza de resultados de ferramentas: Invalida prefixos de prompt em cache quando conteúdo é limpo. Para levar isso em conta, limpe tokens suficientes para tornar a invalidação de cache valiosa. Use o parâmetro clear_at_least para garantir um número mínimo de tokens limpos cada vez. Você incorrerá em custos de escrita de cache cada vez que conteúdo for limpo, mas solicitações subsequentes podem reutilizar o prefixo recém armazenado em cache.
Limpeza de blocos de pensamento: Quando blocos de pensamento são mantidos em contexto (não limpos), o cache de prompt é preservado, habilitando acertos de cache e reduzindo custos de token de entrada. Quando blocos de pensamento são limpos, o cache é invalidado no ponto onde a limpeza ocorre. Configure o parâmetro keep baseado em se você quer priorizar desempenho de cache ou disponibilidade de janela de contexto.
A edição de contexto está disponível em:
claude-opus-4-6)claude-opus-4-5-20251101)claude-opus-4-1-20250805)claude-opus-4-20250514)claude-sonnet-4-5-20250929)claude-sonnet-4-20250514)claude-haiku-4-5-20251001)A forma mais simples de habilitar limpeza de resultados de ferramentas é especificar apenas o tipo de estratégia. Todas as outras opções de configuração usam seus valores padrão:
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--header "anthropic-beta: context-management-2025-06-27" \
--data '{
"model": "claude-opus-4-6",
"max_tokens": 4096,
"messages": [
{
"role": "user",
"content": "Search for recent developments in AI"
}
],
"tools": [
{
"type": "web_search_20250305",
"name": "web_search"
}
],
"context_management": {
"edits": [
{"type": "clear_tool_uses_20250919"}
]
}
}'Você pode personalizar o comportamento de limpeza de resultados de ferramentas com parâmetros adicionais:
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--header "anthropic-beta: context-management-2025-06-27" \
--data '{
"model": "claude-opus-4-6",
"max_tokens": 4096,
"messages": [
{
"role": "user",
"content": "Create a simple command line calculator app using Python"
}
],
"tools": [
{
"type": "text_editor_20250728",
"name": "str_replace_based_edit_tool",
"max_characters": 10000
},
{
"type": "web_search_20250305",
"name": "web_search",
"max_uses": 3
}
],
"context_management": {
"edits": [
{
"type": "clear_tool_uses_20250919",
"trigger": {
"type": "input_tokens",
"value": 30000
},
"keep": {
"type": "tool_uses",
"value": 3
},
"clear_at_least": {
"type": "input_tokens",
"value": 5000
},
"exclude_tools": ["web_search"]
}
]
}
}'Habilite limpeza de blocos de pensamento para gerenciar contexto e cache de prompt efetivamente quando o pensamento estendido está habilitado:
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--header "anthropic-beta: context-management-2025-06-27" \
--data '{
"model": "claude-opus-4-6",
"max_tokens": 1024,
"messages": [...],
"thinking": {
"type": "enabled",
"budget_tokens": 10000
},
"context_management": {
"edits": [
{
"type": "clear_thinking_20251015",
"keep": {
"type": "thinking_turns",
"value": 2
}
}
]
}
}'A estratégia clear_thinking_20251015 suporta a seguinte configuração:
| Opção de configuração | Padrão | Descrição |
|---|---|---|
keep | {type: "thinking_turns", value: 1} | Define quantos turnos recentes do assistente com blocos de pensamento preservar. Use {type: "thinking_turns", value: N} onde N deve ser > 0 para manter os últimos N turnos, ou "all" para manter todos os blocos de pensamento. |
Exemplos de configuração:
// Keep thinking blocks from the last 3 assistant turns
{
"type": "clear_thinking_20251015",
"keep": {
"type": "thinking_turns",
"value": 3
}
}
// Keep all thinking blocks (maximizes cache hits)
{
"type": "clear_thinking_20251015",
"keep": "all"
}Você pode usar limpeza de blocos de pensamento e limpeza de resultados de ferramentas juntas:
Ao usar múltiplas estratégias, a estratégia clear_thinking_20251015 deve ser listada primeiro no array edits.
response = client.beta.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
messages=[...],
thinking={
"type": "enabled",
"budget_tokens": 10000
},
tools=[...],
betas=["context-management-2025-06-27"],
context_management={
"edits": [
{
"type": "clear_thinking_20251015",
"keep": {
"type": "thinking_turns",
"value": 2
}
},
{
"type": "clear_tool_uses_20250919",
"trigger": {
"type": "input_tokens",
"value": 50000
},
"keep": {
"type": "tool_uses",
"value": 5
}
}
]
}
)| Opção de configuração | Padrão | Descrição |
|---|---|---|
trigger | 100.000 tokens de entrada | Define quando a estratégia de edição de contexto é ativada. Uma vez que o prompt exceda este limite, a limpeza começará. Você pode especificar este valor em input_tokens ou tool_uses. |
keep | 3 usos de ferramentas | Define quantos pares recentes de uso/resultado de ferramentas manter após a limpeza ocorrer. A API remove as interações de ferramentas mais antigas primeiro, preservando as mais recentes. |
clear_at_least | Nenhum | Garante um número mínimo de tokens limpos cada vez que a estratégia é ativada. Se a API não conseguir limpar pelo menos a quantidade especificada, a estratégia não será aplicada. Isso ajuda a determinar se a limpeza de contexto vale a pena quebrar seu cache de prompt. |
exclude_tools | Nenhum | Lista de nomes de ferramentas cujos usos e resultados de ferramentas nunca devem ser limpos. Útil para preservar contexto importante. |
clear_tool_inputs | false | Controla se os parâmetros de chamada de ferramentas são limpos junto com os resultados de ferramentas. Por padrão, apenas os resultados de ferramentas são limpos enquanto mantém as chamadas de ferramentas originais do Claude visíveis. |
Você pode ver quais edições de contexto foram aplicadas à sua solicitação usando o campo de resposta context_management, junto com estatísticas úteis sobre o conteúdo e tokens de entrada limpos.
{
"id": "msg_013Zva2CMHLNnXjNJJKqJ2EF",
"type": "message",
"role": "assistant",
"content": [...],
"usage": {...},
"context_management": {
"applied_edits": [
// When using `clear_thinking_20251015`
{
"type": "clear_thinking_20251015",
"cleared_thinking_turns": 3,
"cleared_input_tokens": 15000
},
// When using `clear_tool_uses_20250919`
{
"type": "clear_tool_uses_20250919",
"cleared_tool_uses": 8,
"cleared_input_tokens": 50000
}
]
}
}Para respostas de streaming, as edições de contexto serão incluídas no evento final message_delta:
{
"type": "message_delta",
"delta": {
"stop_reason": "end_turn",
"stop_sequence": null
},
"usage": {
"output_tokens": 1024
},
"context_management": {
"applied_edits": [...]
}
}O endpoint de contagem de tokens suporta gerenciamento de contexto, permitindo que você visualize quantos tokens seu prompt usará após a edição de contexto ser aplicada.
curl https://api.anthropic.com/v1/messages/count_tokens \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--header "anthropic-beta: context-management-2025-06-27" \
--data '{
"model": "claude-opus-4-6",
"messages": [
{
"role": "user",
"content": "Continue our conversation..."
}
],
"tools": [...],
"context_management": {
"edits": [
{
"type": "clear_tool_uses_20250919",
"trigger": {
"type": "input_tokens",
"value": 30000
},
"keep": {
"type": "tool_uses",
"value": 5
}
}
]
}
}'{
"input_tokens": 25000,
"context_management": {
"original_input_tokens": 70000
}
}A resposta mostra tanto a contagem final de tokens após o gerenciamento de contexto ser aplicado (input_tokens) quanto a contagem original de tokens antes de qualquer limpeza ocorrer (original_input_tokens).
A edição de contexto pode ser combinada com a ferramenta de memória. Quando o contexto de conversa se aproxima do limite de limpeza configurado, Claude recebe um aviso automático para preservar informações importantes. Isso permite que Claude salve resultados de ferramentas ou contexto em seus arquivos de memória antes de serem limpos do histórico de conversa.
Esta combinação permite que você:
Por exemplo, em um fluxo de trabalho de edição de arquivo onde Claude realiza muitas operações, Claude pode resumir alterações concluídas em arquivos de memória conforme o contexto cresce. Quando resultados de ferramentas são limpos, Claude retém acesso a essa informação através de seu sistema de memória e pode continuar trabalhando efetivamente.
Para usar ambos os recursos juntos, habilite-os em sua solicitação de API:
response = client.beta.messages.create(
model="claude-opus-4-6",
max_tokens=4096,
messages=[...],
tools=[
{
"type": "memory_20250818",
"name": "memory"
},
# Your other tools
],
betas=["context-management-2025-06-27"],
context_management={
"edits": [
{"type": "clear_tool_uses_20250919"}
]
}
)Compactação do lado do servidor é recomendada sobre compactação do SDK. Compactação do lado do servidor lida com gerenciamento de contexto automaticamente com menos complexidade de integração, melhor cálculo de uso de tokens, e sem limitações do lado do cliente. Use compactação do SDK apenas se você especificamente precisar de controle do lado do cliente sobre o processo de resumo.
Compactação está disponível nos SDKs Python e TypeScript ao usar o método tool_runner.
Compactação é um recurso do SDK que gerencia automaticamente o contexto de conversa gerando resumos quando o uso de tokens cresce muito grande. Diferentemente de estratégias de edição de contexto do lado do servidor que limpam conteúdo, compactação instrui Claude a resumir o histórico de conversa, então substitui o histórico completo por esse resumo. Isso permite que Claude continue trabalhando em tarefas de longa duração que de outra forma excederiam a janela de contexto.
Quando a compactação está habilitada, o SDK monitora o uso de tokens após cada resposta do modelo:
input_tokens + cache_creation_input_tokens + cache_read_input_tokens + output_tokens.<summary></summary>.Adicione compaction_control à sua chamada tool_runner:
import anthropic
client = anthropic.Anthropic()
runner = client.beta.messages.tool_runner(
model="claude-opus-4-6",
max_tokens=4096,
tools=[...],
messages=[
{
"role": "user",
"content": "Analyze all the files in this directory and write a summary report."
}
],
compaction_control={
"enabled": True,
"context_token_threshold": 100000
}
)
for message in runner:
print(f"Tokens used: {message.usage.input_tokens}")
final = runner.until_done()Conforme a conversa cresce, o histórico de mensagens se acumula:
Antes da compactação (aproximando-se de 100k tokens):
[
{ "role": "user", "content": "Analyze all files and write a report..." },
{ "role": "assistant", "content": "I'll help. Let me start by reading..." },
{ "role": "user", "content": [{ "type": "tool_result", "tool_use_id": "...", "content": "..." }] },
{ "role": "assistant", "content": "Based on file1.txt, I see..." },
{ "role": "user", "content": [{ "type": "tool_result", "tool_use_id": "...", "content": "..." }] },
{ "role": "assistant", "content": "After analyzing file2.txt..." },
// ... 50 more exchanges like this ...
]Quando tokens excedem o limite, o SDK injeta um pedido de resumo e Claude gera um resumo. O histórico inteiro é então substituído:
Após compactação (voltando a ~2-3k tokens):
[
{
"role": "assistant",
"content": "# Task Overview\nThe user requested analysis of directory files to produce a summary report...\n\n# Current State\nAnalyzed 52 files across 3 subdirectories. Key findings documented in report.md...\n\n# Important Discoveries\n- Configuration files use YAML format\n- Found 3 deprecated dependencies\n- Test coverage at 67%\n\n# Next Steps\n1. Analyze remaining files in /src/legacy\n2. Complete final report sections...\n\n# Context to Preserve\nUser prefers markdown format with executive summary first..."
}
]Claude continua trabalhando a partir deste resumo como se fosse o histórico de conversa original.
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
enabled | boolean | Sim | - | Se deve habilitar compactação automática |
context_token_threshold | number | Não | 100.000 | Contagem de tokens em que a compactação é acionada |
model | string | Não | Mesmo modelo que o principal | Modelo a usar para gerar resumos |
summary_prompt | string | Não | Veja abaixo | Prompt customizado para geração de resumo |
O limite determina quando a compactação ocorre. Um limite mais baixo significa compactações mais frequentes com janelas de contexto menores. Um limite mais alto permite mais contexto mas arrisca atingir limites.
# More frequent compaction for memory-constrained scenarios
compaction_control={
"enabled": True,
"context_token_threshold": 50000
}
# Less frequent compaction when you need more context
compaction_control={
"enabled": True,
"context_token_threshold": 150000
}Você pode usar um modelo mais rápido ou mais barato para gerar resumos:
compaction_control={
"enabled": True,
"context_token_threshold": 100000,
"model": "claude-haiku-4-5"
}Você pode fornecer um prompt customizado para necessidades específicas de domínio. Seu prompt deve instruir Claude a envolver seu resumo em tags <summary></summary>.
compaction_control={
"enabled": True,
"context_token_threshold": 100000,
"summary_prompt": """Summarize the research conducted so far, including:
- Sources consulted and key findings
- Questions answered and remaining unknowns
- Recommended next steps
Wrap your summary in <summary></summary> tags."""
}O prompt de resumo integrado instrui Claude a criar um resumo de continuação estruturado incluindo:
Esta estrutura permite que Claude retome o trabalho de forma eficiente sem perder contexto importante ou repetir erros.
A compactação requer consideração especial ao usar ferramentas do lado do servidor, como busca na web ou busca na web.
Ao usar ferramentas do lado do servidor, o SDK pode calcular incorretamente o uso de tokens, causando compactação para ser acionada no momento errado.
Por exemplo, após uma operação de busca na web, a resposta da API pode mostrar:
{
"usage": {
"input_tokens": 63000,
"cache_read_input_tokens": 270000,
"output_tokens": 1400
}
}O SDK calcula o uso total como 63.000 + 270.000 = 333.000 tokens. No entanto, o valor cache_read_input_tokens inclui leituras acumuladas de múltiplas chamadas internas de API feitas pela ferramenta do lado do servidor, não seu contexto de conversa real. Seu comprimento de contexto real pode ser apenas os 63.000 input_tokens, mas o SDK vê 333k e aciona a compactação prematuramente.
Soluções alternativas:
Quando a compactação é acionada enquanto uma resposta de uso de ferramenta está pendente, o SDK remove o bloco de uso de ferramenta do histórico de mensagens antes de gerar o resumo. Claude reabrirá a chamada de ferramenta após retomar do resumo se ainda for necessário.
Ative o registro para rastrear quando a compactação ocorre:
import logging
logging.basicConfig(level=logging.INFO)
logging.getLogger("anthropic.lib.tools").setLevel(logging.INFO)
# Os logs mostrarão:
# INFO: Token usage 105000 has exceeded the threshold of 100000. Performing compaction.
# INFO: Compaction complete. New token usage: 2500Bons casos de uso:
Casos de uso menos ideais:
Was this page helpful?