Esta función es elegible para Zero Data Retention (ZDR). Cuando tu organización tiene un acuerdo de ZDR, los datos enviados a través de esta función no se almacenan después de que se devuelve la respuesta de la API.
Para la mayoría de los casos de uso, la compactación del lado del servidor es la estrategia principal para gestionar el contexto en conversaciones de larga duración. Las estrategias de esta página son útiles para escenarios específicos en los que necesitas un control más detallado sobre qué contenido se elimina.
La edición de contexto te permite eliminar selectivamente contenido específico del historial de conversación a medida que crece. Más allá de optimizar costos y mantenerte dentro de los límites, se trata de curar activamente lo que Claude ve: el contexto es un recurso finito con rendimientos decrecientes, y el contenido irrelevante degrada el enfoque del modelo. La edición de contexto te brinda un control detallado en tiempo de ejecución sobre esa curación. Para conocer los principios más amplios detrás de la gestión de contexto, consulta Effective context engineering. Esta página cubre:
| Enfoque | Dónde se ejecuta | Estrategias | Cómo funciona |
|---|---|---|---|
| Lado del servidor | API | Eliminación de resultados de herramientas (clear_tool_uses_20250919)Eliminación de bloques de pensamiento ( clear_thinking_20251015) | Se aplica antes de que el prompt llegue a Claude. Elimina contenido específico del historial de conversación. Cada estrategia puede configurarse de forma independiente. |
| Lado del cliente | SDK | Compactación | Disponible en los SDK de Python, TypeScript y Ruby al usar tool_runner. Genera un resumen y reemplaza el historial completo de la conversación. Consulta Compactación del lado del cliente. |
La edición de contexto está en beta con soporte para la eliminación de resultados de herramientas y la eliminación de bloques de pensamiento. Para habilitarla, usa el encabezado beta context-management-2025-06-27 en tus solicitudes a la API.
Comparte tus comentarios sobre esta función a través del formulario de comentarios.
La estrategia clear_tool_uses_20250919 elimina los resultados de herramientas cuando el contexto de la conversación crece más allá del umbral que hayas configurado. Esto es particularmente útil para flujos de trabajo agénticos con uso intensivo de herramientas. Los resultados antiguos de herramientas (como contenidos de archivos o resultados de búsqueda) ya no son necesarios una vez que Claude los ha procesado.
Cuando se activa, la API elimina automáticamente los resultados de herramientas más antiguos en orden cronológico. La API reemplaza cada resultado eliminado con texto de marcador de posición para que Claude sepa que fue eliminado. De forma predeterminada, solo se eliminan los resultados de herramientas. Opcionalmente, puedes eliminar tanto los resultados de herramientas como las llamadas a herramientas (los parámetros de uso de herramientas) estableciendo clear_tool_inputs en true.
La estrategia clear_thinking_20251015 gestiona los bloques thinking en las conversaciones cuando el pensamiento extendido está habilitado. Esta estrategia te da control sobre la preservación del pensamiento: puedes elegir conservar más bloques de pensamiento para mantener la continuidad del razonamiento, o eliminarlos de forma más agresiva para ahorrar espacio de contexto.
Comportamiento predeterminado: El valor predeterminado varía según la clase de modelo.
| Clase de modelo | Conservar todo el pensamiento anterior | Conservar solo el pensamiento del último turno |
|---|---|---|
| Opus | Claude Opus 4.5 y posteriores | Claude Opus 4.1 (obsoleto) y anteriores |
| Sonnet | Claude Sonnet 4.6 y posteriores | Claude Sonnet 4.5 y anteriores |
| Haiku | (ninguno) | Todos los modelos hasta Claude Haiku 4.5 |
Usa esta estrategia para anular el valor predeterminado. Si tu código se ejecuta en varios niveles de modelo, establece keep explícitamente en lugar de depender del valor predeterminado por modelo.
Un turno de conversación del asistente puede incluir múltiples bloques de contenido (por ejemplo, al usar herramientas) y múltiples bloques de pensamiento (por ejemplo, con pensamiento intercalado).
La edición de contexto se aplica del lado del servidor antes de que el prompt llegue a Claude. Tu aplicación cliente mantiene el historial de conversación completo y sin modificar. No necesitas sincronizar el estado de tu cliente con la versión editada. Continúa gestionando tu historial de conversación completo localmente como lo harías normalmente.
La interacción de la edición de contexto con el almacenamiento en caché de prompts varía según la estrategia:
Eliminación de resultados de herramientas: Invalida los prefijos de prompt almacenados en caché cuando se elimina contenido. Para compensar esto, elimina suficientes tokens para que la invalidación de la caché valga la pena. Usa el parámetro clear_at_least para asegurar que se elimine un número mínimo de tokens cada vez. Incurrirás en costos de escritura en caché cada vez que se elimine contenido, pero las solicitudes posteriores pueden reutilizar el prefijo recién almacenado en caché.
Eliminación de bloques de pensamiento: Cuando los bloques de pensamiento se conservan en el contexto (no se eliminan), la caché de prompts se preserva, lo que permite aciertos de caché y reduce los costos de tokens de entrada. Cuando los bloques de pensamiento se eliminan, la caché se invalida en el punto donde ocurre la eliminación. Configura el parámetro keep según si deseas priorizar el rendimiento de la caché o la disponibilidad de la ventana de contexto.
La edición de contexto está disponible en todos los modelos de Claude compatibles.
La forma más sencilla de habilitar la eliminación de resultados de herramientas es especificar solo el tipo de estrategia. Todas las demás opciones de configuración usan sus valores predeterminados:
response = client.beta.messages.create(
model="claude-opus-4-8",
max_tokens=4096,
messages=[{"role": "user", "content": "Search for recent developments in AI"}],
tools=[{"type": "web_search_20250305", "name": "web_search"}],
betas=["context-management-2025-06-27"],
context_management={"edits": [{"type": "clear_tool_uses_20250919"}]},
)Puedes personalizar el comportamiento de eliminación de resultados de herramientas con parámetros adicionales:
response = client.beta.messages.create(
model="claude-opus-4-8",
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},
],
betas=["context-management-2025-06-27"],
context_management={
"edits": [
{
"type": "clear_tool_uses_20250919",
# Activa la limpieza cuando se supera el umbral
"trigger": {"type": "input_tokens", "value": 30000},
# Número de usos de herramientas a conservar tras la limpieza
"keep": {"type": "tool_uses", "value": 3},
# Opcional: limpia al menos esta cantidad de tokens
"clear_at_least": {"type": "input_tokens", "value": 5000},
# Excluye estas herramientas de la limpieza
"exclude_tools": ["web_search"],
}
]
},
)Habilita la eliminación de bloques de pensamiento para gestionar el contexto y el almacenamiento en caché de prompts de manera efectiva cuando el pensamiento extendido está habilitado:
response = client.beta.messages.create(
model="claude-opus-4-8",
max_tokens=16000,
messages=[{"role": "user", "content": "Hello"}],
thinking={"type": "adaptive"},
betas=["context-management-2025-06-27"],
context_management={
"edits": [
{
"type": "clear_thinking_20251015",
"keep": {"type": "thinking_turns", "value": 2},
}
]
},
)La estrategia clear_thinking_20251015 admite la siguiente configuración:
| Opción de configuración | Valor predeterminado | Descripción |
|---|---|---|
keep | Específico del modelo | Define cuántos turnos recientes del asistente con bloques de pensamiento se preservan. Usa {type: "thinking_turns", value: N} donde N debe ser > 0 para conservar los últimos N turnos, o "all" para conservar todos los bloques de pensamiento. Opus 4.5+ y Sonnet 4.6+: todos los turnos. Opus/Sonnet anteriores y todos los Haiku: solo el último turno. |
Configuraciones de ejemplo:
Conservar los bloques de pensamiento de los últimos 3 turnos del asistente:
response = client.beta.messages.create(
model="claude-opus-4-8",
max_tokens=16000,
messages=[{"role": "user", "content": "Hello"}],
thinking={"type": "adaptive"},
betas=["context-management-2025-06-27"],
context_management={
"edits": [
{
"type": "clear_thinking_20251015",
"keep": {"type": "thinking_turns", "value": 3},
}
]
},
)Conservar todos los bloques de pensamiento (maximiza los aciertos de caché):
response = client.beta.messages.create(
model="claude-opus-4-8",
max_tokens=16000,
messages=[{"role": "user", "content": "Hello"}],
thinking={"type": "adaptive"},
betas=["context-management-2025-06-27"],
context_management={
"edits": [
{
"type": "clear_thinking_20251015",
"keep": "all",
}
]
},
)Puedes usar la eliminación de bloques de pensamiento y la eliminación de resultados de herramientas juntas:
Al usar múltiples estrategias, la estrategia clear_thinking_20251015 debe aparecer primero en el arreglo edits.
response = client.beta.messages.create(
model="claude-opus-4-8",
max_tokens=16000,
messages=[
{
"role": "user",
"content": "Search for the latest developments in quantum error correction and summarize the key breakthroughs.",
}
],
thinking={"type": "adaptive"},
tools=[
{
"type": "web_search_20250305",
"name": "web_search",
"max_uses": 5,
}
],
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},
},
]
},
)
print(response)| Opción de configuración | Valor predeterminado | Descripción |
|---|---|---|
trigger | 100,000 tokens de entrada | Define cuándo se activa la estrategia de edición de contexto. Una vez que el prompt supera este umbral, comenzará la eliminación. Puedes especificar este valor en input_tokens o tool_uses. |
keep | 3 usos de herramientas | Define cuántos pares recientes de uso/resultado de herramientas se conservan después de que ocurre la eliminación. La API elimina primero las interacciones de herramientas más antiguas, preservando las más recientes. |
clear_at_least | Ninguno | Asegura que se elimine un número mínimo de tokens cada vez que se activa la estrategia. Si la API no puede eliminar al menos la cantidad especificada, la estrategia no se aplicará. Esto ayuda a determinar si la eliminación de contexto vale la pena a costa de invalidar tu caché de prompts. |
exclude_tools | Ninguno | Lista de nombres de herramientas cuyos usos y resultados nunca deben eliminarse. Útil para preservar contexto importante. |
clear_tool_inputs | false | Controla si los parámetros de la llamada a la herramienta se eliminan junto con los resultados de la herramienta. De forma predeterminada, solo se eliminan los resultados de las herramientas mientras se mantienen visibles las llamadas originales de Claude a las herramientas. |
Puedes ver qué ediciones de contexto se aplicaron a tu solicitud usando el campo de respuesta context_management, junto con estadísticas útiles sobre el contenido y los tokens de entrada eliminados.
{
"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 respuestas en streaming, las ediciones de contexto se incluyen en el evento final message_delta:
{
"type": "message_delta",
"delta": {
"stop_reason": "end_turn",
"stop_sequence": null
},
"usage": {
"output_tokens": 1024
},
"context_management": {
"applied_edits": [
// ...
]
}
}El endpoint de conteo de tokens admite la gestión de contexto, lo que te permite previsualizar cuántos tokens usará tu prompt después de aplicar la edición de contexto.
response = client.beta.messages.count_tokens(
model="claude-opus-4-8",
messages=[{"role": "user", "content": "Continue our conversation..."}],
betas=["context-management-2025-06-27"],
context_management={
"edits": [
{
"type": "clear_tool_uses_20250919",
"trigger": {"type": "input_tokens", "value": 30000},
"keep": {"type": "tool_uses", "value": 5},
}
]
},
)
print(f"Original tokens: {response.context_management.original_input_tokens}")
print(f"After clearing: {response.input_tokens}")
print(
f"Savings: {response.context_management.original_input_tokens - response.input_tokens} tokens"
){
"input_tokens": 25000,
"context_management": {
"original_input_tokens": 70000
}
}La respuesta muestra tanto el conteo final de tokens después de aplicar la gestión de contexto (input_tokens) como el conteo original de tokens antes de que ocurriera cualquier eliminación (original_input_tokens).
La edición de contexto puede combinarse con la herramienta de memoria. Cuando el contexto de tu conversación se acerca al umbral de eliminación configurado, Claude recibe una advertencia automática para preservar información importante. Esto permite que Claude guarde resultados de herramientas o contexto en sus archivos de memoria antes de que se eliminen del historial de conversación.
Esta combinación te permite:
Por ejemplo, en un flujo de trabajo de edición de archivos donde Claude realiza muchas operaciones, Claude puede resumir los cambios completados en archivos de memoria a medida que el contexto crece. Cuando se eliminan los resultados de herramientas, Claude conserva el acceso a esa información a través de su sistema de memoria y puede continuar trabajando de manera efectiva.
Para usar ambas funciones juntas, habilítalas en tu solicitud a la API:
response = client.beta.messages.create(
model="claude-opus-4-8",
max_tokens=4096,
messages=[{"role": "user", "content": "Hello"}],
tools=[{"type": "memory_20250818", "name": "memory"}],
betas=["context-management-2025-06-27"],
context_management={"edits": [{"type": "clear_tool_uses_20250919"}]},
)Para la referencia completa de la herramienta de memoria, incluidos comandos y ejemplos, consulta Herramienta de memoria.
Anthropic recomienda la compactación del lado del servidor en lugar de la compactación del SDK. La compactación del lado del servidor gestiona el contexto automáticamente con menos complejidad de integración, mejor cálculo del uso de tokens y sin limitaciones del lado del cliente. Usa la compactación del SDK solo si necesitas específicamente control del lado del cliente sobre el proceso de resumen.
El parámetro compaction_control está obsoleto en los SDK de Python, TypeScript y Ruby y se eliminará en una versión futura. Los SDK emiten una advertencia de obsolescencia cuando está habilitado. Para usar la compactación del lado del servidor con un tool runner, pasa la edición compact_20260112 en el parámetro context_management de la solicitud.
La compactación está disponible en los SDK de Python, TypeScript y Ruby al usar el método tool_runner.
La compactación es una función del SDK que gestiona automáticamente el contexto de la conversación generando resúmenes cuando el uso de tokens crece demasiado. A diferencia de las estrategias de edición de contexto del lado del servidor que eliminan contenido, la compactación instruye a Claude para que resuma el historial de conversación y luego reemplaza el historial completo con ese resumen. Esto permite que Claude continúe trabajando en tareas de larga duración que de otro modo excederían la ventana de contexto.
Cuando la compactación está habilitada, el SDK monitorea el uso de tokens después de cada respuesta del modelo:
input_tokens + cache_creation_input_tokens + cache_read_input_tokens + output_tokens.<summary></summary>.Agrega compaction_control a tu llamada de tool_runner para habilitar el resumen automático cuando el uso de tokens supere el umbral.
A medida que la conversación crece, el historial de mensajes se acumula:
Antes de la compactación (acercándose a 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 ...
]Cuando los tokens superan el umbral, el SDK inyecta una solicitud de resumen y Claude genera un resumen. Luego se reemplaza todo el historial:
Después de la compactación (de vuelta 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 continúa trabajando desde este resumen como si fuera el historial de conversación original.
| Parámetro | Tipo | Obligatorio | Valor predeterminado | Descripción |
|---|---|---|---|---|
enabled | boolean | Sí | - | Si se habilita la compactación automática |
context_token_threshold | number | No | 100,000 | Conteo de tokens en el que se activa la compactación |
model | string | No | El mismo que el modelo principal | Modelo a usar para generar resúmenes |
summary_prompt | string | No | Consulta Prompt de resumen predeterminado | Prompt personalizado para la generación de resúmenes |
El umbral determina cuándo ocurre la compactación. Un umbral más bajo significa compactaciones más frecuentes con ventanas de contexto más pequeñas. Un umbral más alto permite más contexto pero corre el riesgo de alcanzar los límites.
Puedes usar un modelo más rápido o más económico para generar resúmenes:
Puedes proporcionar un prompt personalizado para necesidades específicas de dominio. Tu prompt debe instruir a Claude para que envuelva su resumen en etiquetas <summary></summary>.
El prompt de resumen integrado instruye a Claude para crear un resumen de continuación estructurado que incluye:
Esta estructura permite que Claude reanude el trabajo de manera eficiente sin perder contexto importante ni repetir errores.
La compactación requiere consideración especial al usar herramientas del lado del servidor como búsqueda web o web fetch.
Al usar herramientas del lado del servidor, el SDK puede calcular incorrectamente el uso de tokens, lo que provoca que la compactación se active en el momento equivocado.
Por ejemplo, después de una operación de búsqueda web, la respuesta de la API podría mostrar:
{
"usage": {
"input_tokens": 63000,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 270000,
"output_tokens": 1400
}
}El SDK calcula el uso total como 63,000 + 0 + 270,000 + 1,400 = 334,400 tokens. Sin embargo, el valor de cache_read_input_tokens incluye lecturas acumuladas de múltiples llamadas internas a la API realizadas por la herramienta del lado del servidor, no el contexto real de tu conversación. La longitud real de tu contexto podría ser solo los 63,000 input_tokens, pero el SDK ve 334k y activa la compactación prematuramente.
Soluciones alternativas:
Cuando el SDK activa la compactación mientras una respuesta de uso de herramientas está pendiente, elimina el bloque de uso de herramientas del historial de mensajes antes de generar el resumen. Claude volverá a emitir la llamada a la herramienta después de reanudar desde el resumen si aún es necesaria.
Comprender cuándo se activa la compactación te ayuda a ajustar los umbrales y verificar el comportamiento esperado.
Buenos casos de uso:
Casos de uso menos ideales:
Gestiona conversaciones largas con compactación del lado del servidor, la estrategia recomendada para la mayoría de los casos de uso.
Reduce el costo y la latencia almacenando en caché prefijos de prompts, y aprende cómo la edición de contexto interactúa con la caché.
Was this page helpful?