El problema fundamental que aborda este mecanismo es la limitación inherente de la ventana de contexto en los Large Language Models (LLMs) basados en la arquitectura Transformer. A medida que las interacciones en una sesión de agente de codificación se acumulan, el historial de conversación excede rápidamente la capacidad de entrada del modelo, llevando a errores y la interrupción del flujo de trabajo. La 'compaction' es una estrategia para mitigar esta restricción, permitiendo que las sesiones interactivas mantengan un contexto relevante sin reiniciar la conversación.
Históricamente, los sistemas interactivos han lidiado con la gestión de estado y la memoria de sesión. En el contexto de los LLMs, esto se traduce en la necesidad de condensar la información pasada de manera que sea útil para las futuras inferencias, sin sobrecargar el modelo. La 'compaction' busca emular una 'memoria a largo plazo' selectiva, donde solo los puntos clave y las decisiones se retienen, similar a cómo un humano resumiría una discusión para un colega.
Arquitectura del Sistema
La implementación de 'compaction' en Pi se activa cuando el tamaño del contexto de la conversación se acerca al límite de la ventana del LLM, o manualmente. El proceso implica la retención de un número configurable de mensajes recientes (aproximadamente 5-20 turnos, o 20 mil tokens por defecto en Pi) y la extracción del historial más antiguo. Este historial antiguo se serializa y se envía a un LLM separado, configurado específicamente para la tarea de resumen.
Para esta tarea, Pi utiliza un 'compaction prompt' distinto. En lugar de la instrucción habitual de 'asistente de codificación experto', el LLM recibe una directriz de 'asistente de resumen de contexto'. El mensaje del usuario en esta solicitud de compactación solicita un 'resumen estructurado de esta rama de conversación para contexto al regresar más tarde', especificando secciones como 'goal', 'progress' y 'key decisions'. El resultado de este resumen es un texto plano que se inserta en la sesión de Pi, reemplazando el historial compactado. Esta estrategia permite la portabilidad del contexto resumido entre diferentes modelos de LLM y mantiene la legibilidad.
Una consideración clave es la interacción con el 'prompt caching' de los proveedores de LLM. El 'prompt caching' optimiza el costo y la latencia de solicitudes repetidas con prefijos idénticos. Sin embargo, al insertar un resumen compactado, el prefijo de la conversación cambia, invalidando cualquier caché existente. Las solicitudes subsiguientes después de la compactación construirán un nuevo caché.
Flujo de Compaction en Pi
- 1 Sesión Activa Usuario interactúa con el agente, el contexto de LLM crece.
- 2 Detección de Límite Contexto se acerca al límite de la ventana de LLM o se activa manualmente.
- 3 Retención de Recientes Se identifican y retienen los N mensajes/turnos más recientes.
- 4 Extracción de Antiguos El historial de conversación anterior a los mensajes retenidos se extrae.
- 5 Solicitud de Compaction Se envía el historial antiguo a un LLM con un 'compaction prompt' específico.
- 6 Generación de Resumen El LLM genera un resumen estructurado del historial compactado.
- 7 Inserción de Resumen El resumen se inserta en la sesión de Pi, reemplazando el historial antiguo.
- 8 Continuación de Sesión La sesión continúa con el contexto reducido, haciendo espacio para nuevos men...
| Capa | Tecnología | Justificación |
|---|---|---|
| compute | Large Language Models (LLMs) | Núcleo para la interacción conversacional y la tarea de resumen de contexto. |
| data-processing | Tokenization | Medición del tamaño del contexto y la ventana de LLM. |
| storage | Plain Text Storage | Almacenamiento del resumen de compactación para portabilidad y legibilidad. vs Representaciones estructuradas (JSON, YAML), Embeddings vectoriales |
Trade-offs
Ganancias
- ▲ Continuidad de sesión
- ▲ Reducción de errores por contexto excedido
- ▲ Manejo de sesiones largas
Costes
- △ Precisión del contexto (pérdida de detalle)
- △ Costo computacional adicional (LLM para compactar)
- ▲ Invalidación de Prompt Caching
Fundamentos Teóricos
El problema de la gestión de contexto en sistemas con memoria limitada se relaciona con conceptos fundamentales en la ciencia de la computación y la inteligencia artificial. La limitación de la ventana de contexto en los Transformers puede verse como una forma de 'memoria de trabajo' de capacidad finita, similar a la memoria de trabajo humana estudiada en psicología cognitiva. La 'compaction' es una heurística para la 'consolidación de memoria', donde la información se procesa y se condensa para un almacenamiento más eficiente.
Desde una perspectiva de sistemas distribuidos, la 'compaction' se asemeja a los procesos de 'log compaction' en sistemas como Apache Kafka o las 'compaction merges' en bases de datos basadas en LSM-trees (Log-Structured Merge-trees). En estos sistemas, los registros antiguos o redundantes se consolidan y se resumen para reducir el espacio de almacenamiento y mejorar el rendimiento de lectura, aunque el objetivo aquí es la gestión de contexto semántico en lugar de datos brutos. La idea de resumir información para mantener un estado manejable es un patrón recurrente en el diseño de sistemas complejos.