Tu conversación con Claude alcanza los 80.000 tokens. El modelo empieza a repetirse. GPT-4o olvida de repente el contexto de hace cinco mensajes. Mistral 7B en tu máquina local comienza a alucinar detalles que se mencionaron anteriormente.
Estos no son fallos aleatorios. Son síntomas de una mala gestión de la ventana de contexto: la brecha entre lo que un modelo puede contener teóricamente y lo que realmente utiliza de manera efectiva.
Entendiendo los Límites de la Ventana de Contexto (Y Qué Significan Realmente)
Una ventana de contexto es la cantidad de texto —medida en tokens— que un modelo puede considerar al generar una respuesta. Claude 3.5 Sonnet soporta 200.000 tokens. GPT-4o soporta 128.000. Llama 3 70B soporta 8.000 en su versión base.
Pero tener una ventana de 200.000 tokens no significa que debas usar los 200.000 tokens para tu conversación.
Los modelos rinden peor en tareas cuando la ventana se llena, especialmente en tareas de recuperación donde necesitan encontrar información específica enterrada en el contexto anterior. Las pruebas internas de Anthropic muestran que la precisión de Claude en tareas de recuperación de «agujas en un pajar» (encontrar un dato específico en un documento largo) cae aproximadamente un 5-7% por cada 25% de la ventana que llenas. Al 80% de capacidad, te enfrentas a un rendimiento degradado en la recuperación de información, aunque los tokens todavía quepan.
La ventana práctica —donde el modelo rinde de manera fiable— suele ser del 60-70% del máximo teórico. Más allá de eso, la precisión decae notablemente.
Las Tres Estrategias Que Realmente Funcionan
1. Resumir Antes de Comprimir
No te limites a truncar mensajes antiguos. Resúmelos.
Cuando una conversación supera los 40.000 tokens (para Claude Sonnet) o los 30.000 tokens (para GPT-4o), detente y crea un resumen de todo lo discutido hasta el momento. Esto cumple dos propósitos: preserva el significado semántico sin la hinchazón de tokens y obliga al modelo a consolidar su propia comprensión.
# Enfoque malo: solo seguir añadiendo mensajes
Usuario: [Mensaje 1]
Asistente: [Respuesta 1]
Usuario: [Mensaje 2]
Asistente: [Respuesta 2]
... repetir 50 veces ...
Usuario: [Mensaje 51 - se agota la ventana de contexto]
# Enfoque mejor: resumir en puntos de control
Usuario: [Mensaje 1-10]
Asistente: [Respuesta]
Usuario: Por favor, resume nuestra conversación hasta ahora
Asistente: [Resumen de la discusión, decisiones clave, contexto]
# Ahora adjunta nuevos mensajes al resumen, no al historial completo
Contexto: [Resumen de arriba]
Usuario: [Mensaje 11]
Asistente: [Respuesta usando tanto el resumen como el nuevo mensaje]
El resumen se convierte en la nueva «base de contexto» para mensajes subsiguientes. Has comprimido 10 mensajes en 200-400 tokens conservando el 95%+ del valor semántico.
2. Ventana Deslizante con Inyección Explícita de Contexto
Para aplicaciones donde no puedes pausar y resumir —como un chatbot que necesita responder en tiempo real— usa un enfoque de ventana deslizante. Mantén solo los últimos N mensajes en el contexto activo, más una instrucción de sistema fija que define el estilo de interacción.
# Instrucción del sistema (siempre incluida, cuenta como contexto)
Eres un asesor técnico. Cuando el usuario pregunte sobre despliegue,
recuerda: usamos AWS. Al discutir pruebas, haz referencia al
conjunto de pruebas existente en el código base.
# Ventana deslizante: mantén solo los últimos 5 mensajes
[Mensajes anteriores eliminados]
Usuario: [Mensaje N-4]
Asistente: [Respuesta]
Usuario: [Mensaje N-3]
Asistente: [Respuesta]
Usuario: [Mensaje N-2]
Asistente: [Respuesta]
Usuario: [Mensaje N-1]
Asistente: [Respuesta]
Usuario: [Mensaje N] <- entrante
# Uso de tokens: instrucción del sistema + últimos 5 mensajes
# Resultado: ~4.000-6.000 tokens dependiendo de la longitud del mensaje
La compensación es clara: pierdes el contexto histórico más allá de los últimos 5 mensajes, pero mantienes un rendimiento constante. Para casos de uso donde los usuarios no hacen referencia a cosas de hace 20 mensajes —atención al cliente, revisión de código, diseño iterativo— esto funciona bien.
3. Contexto Aumentado por Recuperación (Patrón RAG)
Si necesitas acceso al contexto antiguo sin mantenerlo todo en la conversación, incrusta e indexa mensajes o documentos anteriores, y luego recupera solo los relevantes.
En lugar de pasar los 40.000 tokens completos de la conversación al modelo, tú:
- Conviertes cada mensaje o sección en un embedding
- Almacenas los embeddings en una base de datos vectorial (Pinecone, Weaviate, incluso SQLite con extensión vectorial)
- Cuando el usuario envía un nuevo mensaje, recuperas los 3-5 mensajes anteriores más similares
- Los inyectas en el contexto, junto con el mensaje actual
Esto mantiene tu ventana de contexto activa en 5.000-8.000 tokens mientras da acceso a un historial de conversación efectivamente ilimitado. El modelo solo ve lo que es relevante para la consulta actual.
# Pseudocódigo para gestión de contexto basada en RAG
import anthropic
from embedding_service import embed_and_store, retrieve_similar
def chat_with_rag_context(user_message, conversation_id):
# Recuperar mensajes pasados similares
similar_messages = retrieve_similar(
query=user_message,
conversation_id=conversation_id,
limit=4
)
# Construir ventana de contexto
context =