Resumen antes de la llamada: Condensar documentos largos para Claude
Cuando un documento es demasiado largo, demasiado poco enfocado o se reutiliza en varios prompts, la solución no es enviarlo completo a tu modelo más potente cada vez.
Es condensarlo una vez con un modelo económico y luego enviar la versión condensada al modelo que realiza el trabajo real.
Esto añade una llamada API adicional, pero esa llamada es económica, por lo que el costo neto es menor siempre que el documento sea largo o se reutilice en varios prompts.
La técnica es más valiosa para material de referencia leído muchas veces: un archivo de registro grande, un hilo de soporte largo, un contrato extenso o un registro de cambios grande.
Esta página muestra cómo construir un paso de resumen con el SDK de Python anthropic, cuándo vale la pena y dónde puede salir mal.
Resumen
El resumen previo a la llamada es un patrón de dos pasos: un modelo rápido y económico lee un documento largo y produce una representación más corta del mismo.
Esa representación más corta, no el documento original, es lo que se envía al modelo más costoso que maneja la tarea real.
Esto añade una llamada API adicional, pero esa llamada es económica, por lo que el costo neto es menor siempre que el documento sea largo o se reutilice en varios prompts.
La técnica es más valiosa para material de referencia leído muchas veces: un archivo de registro grande, un hilo de soporte largo, un contrato extenso o un registro de cambios grande.
Esta página muestra cómo construir un paso de resumen con el SDK de Python anthropic, cuándo vale la pena y dónde puede salir mal.
Receta
Tarjeta de receta de referencia rápida - lista para copiar y pegar.
import anthropic
client = anthropic.Anthropic()
def summarize(document: str, focus: str = "") -> str:
instruction = f"Resume este documento en menos de 200 palabras."
if focus:
instruction += f" Enfócate especialmente en: {focus}."
response = client.messages.create(
model="claude-haiku-4-5",
max_tokens=300,
messages=[{"role": "user", "content": f"{instruction}\n\n{document}"}],
)
return response.content[0].textCuándo usar esto:
- El documento fuente es lo suficientemente largo como para que enviarlo completo a un modelo potente sea costoso en cada llamada.
- El mismo documento se referenciará en varios prompts, por lo que el costo del resumen se paga una vez.
- Necesitas la idea general de un documento, no todos los detalles exactos (los contratos y textos legales son una excepción, ver "Trampas").
- Un modelo económico y rápido está disponible en tu conjunto para realizar el paso de condensación.
Ejemplo de trabajo
import anthropic
client = anthropic.Anthropic()
def summarize(document: str, focus: str = "", max_words: int = 200) -> str:
"""Condensa un documento largo con un modelo económico."""
instruction = f"Resume este documento en menos de {max_words} palabras."
if focus:
instruction += f" Enfócate especialmente en: {focus}."
response = client.messages.create(
model="claude-haiku-4-5",
max_tokens=400,
messages=[{"role": "user", "content": f"{instruction}\n\n{document}"}],
)
return response.content[0].text
def answer_with_summary(summary: str, question: str) -> str:
"""Envía el resumen condensado, no el documento original, al modelo más potente."""
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=500,
messages=[{
"role": "user",
"content": f"Basándote en este resumen de un hilo de soporte, responde la pregunta.\n\n"
f"Resumen:\n{summary}\n\nPregunta: {question}",
}],
)
return response.content[0].text
with open("support_thread.txt") as f:
long_thread = f.read() # 8,000 palabras de mensajes de ida y vuelta
condensed = summarize(long_thread, focus="cuál es el problema no resuelto del cliente")
answer = answer_with_summary(condensed, "¿Qué sigue sin resolverse para este cliente?")
print(answer)Lo que esto demuestra:
summarizese ejecuta en Haiku 4.5, el nivel más económico, ya que la condensación de texto no requiere un razonamiento profundo.answer_with_summaryse ejecuta en Sonnet 5, el modelo que realmente realiza el razonamiento que le importa al usuario, pero este solo ve el texto condensado.- El parámetro
focusdirige el resumen hacia lo que necesita la pregunta posterior, en lugar de producir un resumen genérico que podría omitir el detalle relevante. - Separar las dos funciones facilita el almacenamiento en caché o la reutilización de
condenseden varias preguntas posteriores sobre el mismo hilo.
Profundización
Cómo funciona
- El trabajo del modelo económico es limitado: comprimir texto preservando la información que una tarea posterior necesita, no responder la pregunta real.
- Dado que el resumen es una tarea más simple que el razonamiento abierto, un nivel de modelo rápido y económico suele ser suficiente para ello.
- El resumen, una vez producido, puede almacenarse en caché o guardarse para que se reutilice en cada pregunta futura sobre ese documento, amortizando aún más el costo del resumen.
- El costo de extremo a extremo es: una llamada de resumen económica, pagada una vez por documento, más muchas llamadas económicas al modelo potente que utiliza el resumen corto en lugar del original largo.
Cuándo vale la pena el resumen
| Situación | ¿Vale la pena? | Por qué |
|---|---|---|
| Documento usado una vez, en un prompt | Raramente | La llamada de resumen añade costo sin reutilización que lo compense |
| Documento referenciado en varios prompts | Generalmente | El costo del resumen se paga una vez; los ahorros se acumulan con cada reutilización |
| El documento ya es corto (menos de unos cientos de palabras) | No | La sobrecarga de una llamada adicional no vale la pena |
| El documento es largo y solo importa la idea general | Sí | Este es el caso de uso principal: comprimir el volumen, mantener el significado |
Notas de Python
# Almacena en caché el resumen para que las preguntas repetidas sobre el mismo documento no
# vuelvan a ejecutar la llamada de resumen.
_summary_cache: dict[str, str] = {}
def cached_summarize(doc_id: str, document: str, focus: str = "") -> str:
key = f"{doc_id}:{focus}"
if key not in _summary_cache:
_summary_cache[key] = summarize(document, focus=focus)
return _summary_cache[key]Un simple diccionario en memoria es suficiente para un solo proceso; un sistema de producción respaldaría esto con una caché persistente indexada por el hash del documento y el foco.
Trampas
- Resumir y eliminar el detalle que la tarea posterior realmente necesitaba. Un resumen genérico puede omitir el número o la cláusula que importaba. Solución: pasar un parámetro
focusque le diga al resumidor qué preservar, y considerar una longitud de resumen mayor para documentos de alto riesgo. - Resumir texto legal, médico o numérico preciso. La compresión es inherentemente con pérdida, y la redacción exacta o las cifras exactas pueden importar en estos dominios. Solución: para documentos donde la precisión es irrenunciable, omita el resumen y utilice el prompting de contexto mínimo para extraer la sección exacta relevante en su lugar.
- Re-resumir el mismo documento en cada llamada. Esto desecha todo el beneficio de costo de la técnica. Solución: almacenar en caché el resumen por identidad del documento, como se muestra en el ejemplo de Notas de Python anterior.
- Usar un modelo demasiado débil para producir un resumen coherente. Un modelo extremadamente económico o pequeño puede producir un resumen confuso o que no capta el punto. Solución: valide la calidad del resumen con algunos documentos conocidos antes de confiar en un nivel de modelo determinado para este paso; suba un nivel si la calidad no es la adecuada.
- Encadenar resúmenes de resúmenes sin verificar la deriva. Resumir repetidamente un documento ya resumido agrava la pérdida de información. Solución: siempre resuma desde la fuente original, no desde un resumen anterior, cuando la fuente aún esté disponible.
Alternativas
| Alternativa | Usar cuando | No usar cuando |
|---|---|---|
| Prompting de contexto mínimo (extraer, no resumir) | Sabes exactamente qué sección del documento es relevante | La sección relevante no se conoce de antemano, o la relevancia abarca todo el documento |
| Enviar el documento completo cada vez | El documento es corto, o se usa solo una vez | El documento es largo y se reutiliza en varios prompts |
| Fragmentación con recuperación (embeddings) | El documento es muy grande y las preguntas se dirigen a secciones específicas impredecibles | Un solo resumen corto ya captura lo que la mayoría de las preguntas necesitan |
| Extracción estructurada (extraer campos a JSON, omitir prosa) | El documento tiene una estructura predecible (facturas, formularios) | El documento es prosa no estructurada donde un resumen narrativo es más útil |
Preguntas frecuentes
¿En qué se diferencia el resumen de simplemente recortar a un fragmento relevante?
Recortar selecciona un subconjunto existente del texto; resumir genera texto nuevo y más corto que representa el documento completo.
Utilice el recorte cuando sepa qué parte es relevante y el resumen cuando la información relevante esté distribuida en todo el documento.
¿Qué modelo debería hacer el resumen?
El modelo más económico de tu conjunto que produzca resúmenes lo suficientemente precisos para tu tarea posterior, a menudo Haiku 4.5 en la línea actual de Claude.
Valida esta elección contra algunos documentos reales en lugar de asumir que el nivel más económico es siempre suficiente.
¿Alguna vez el resumen cuesta más que enviar el documento completo?
Sí, si el documento se usa solo una vez.
- Un documento de uso único paga el costo del resumen sin reutilización que lo compense.
- La técnica vale la pena específicamente cuando un documento se referencia en varios prompts.
¿Puedo resumir un documento que ya es un resumen?
Puedes hacerlo, pero cada pasada de resumen pierde algo de información, por lo que resumir un resumen agrava esa pérdida.
Prefiere resumir desde la fuente original siempre que aún esté disponible.
¿Cómo sé si mi resumen es lo suficientemente bueno?
- Pruébalo con algunos documentos reales donde conozcas la respuesta "correcta" a preguntas posteriores comunes.
- Comprueba si el resumen todavía permite que el modelo posterior responda esas preguntas correctamente.
- Si no puede, alarga el resumen, añade una instrucción de
focus, o sube un nivel de modelo para el paso de resumen.
¿Siempre debo pasar un parámetro `focus`?
Ayuda siempre que sepas qué le importa a la tarea posterior, ya que es menos probable que un resumen enfocado omita el detalle que importa.
Para un resumen de propósito general que responda a diversas preguntas futuras, un resumen más amplio y sin foco puede ser más apropiado.
¿Es seguro resumir documentos sensibles o precisos como contratos?
Ten cuidado.
- El resumen tiene pérdida de información, y el texto legal o médico a menudo depende de la redacción exacta.
- Para estos tipos de documentos, prefiere extraer la cláusula o sección exacta relevante en lugar de resumirla.
¿Qué tan largo debe ser el resumen?
Lo suficientemente largo como para preservar lo que las preguntas posteriores necesitan, lo suficientemente corto como para ser significativamente más económico que el original.
No hay un número universal; un límite de 200 palabras funciona para muchos hilos de soporte y artículos, pero un documento técnico puede necesitar más.
¿Se puede combinar esto con la segmentación por niveles de modelo?
Sí, esta técnica es en sí misma una aplicación de la segmentación por niveles de modelo: el modelo económico maneja la tarea más simple (compresión), y el modelo más costoso maneja la tarea más difícil (razonamiento sobre el resultado).
¿Qué pasa si el documento cambia después de haber sido resumido y almacenado en caché?
Un resumen almacenado en caché se vuelve obsoleto una vez que el documento fuente cambia.
Indexa la caché por un hash o identificador de versión del documento fuente, no solo por su nombre, para que un cambio invalide automáticamente el resumen almacenado en caché.
¿El resumen ayuda con la degradación del contexto, no solo con el costo?
Sí.
Un resumen enfocado elimina el ruido que el documento original pudo haber transportado, lo que puede reducir el riesgo de que material irrelevante diluya la atención del modelo en lo que importa.
Relacionado
- Cómo la ingeniería de contexto reduce el gasto de tokens - dónde encaja el resumen entre las otras técnicas de reducción de contexto.
- Conceptos básicos de ingeniería de prompts y contexto - ejemplos prácticos de medición de ahorros de tokens.
- Recorte de contexto: Grafos de dependencia en lugar de repositorios completos - la alternativa basada en extracción al resumen para código.
- Lista de verificación de segmentación por niveles de modelo - criterios para elegir qué modelo maneja el paso de resumen.
- Degradación del contexto: Por qué más tokens no significan mejores respuestas - por qué un resumen enfocado también puede mejorar la calidad de la respuesta.
Versiones de Stack: Escrito contra la línea de modelos Claude actual a partir de ~junio de 2026 - Claude Fable 5, Claude Opus 4.8, Claude Sonnet 5 (el predeterminado), y Claude Haiku 4.5 - y el SDK oficial de Python
anthropic(última versión 0.x). Los nombres de los modelos, los precios y las versiones del SDK cambian rápidamente; verifique los detalles actuales en platform.claude.com/docs antes de confiar en ellos.