¿Cómo consigo que un personaje de IA no pierda el hilo a los cien mensajes?

¿Cómo consigo que un personaje de IA no pierda el hilo a los cien mensajes?

Partiendo el prompt en tres bloques con reglas de recorte distintas: una ficha del personaje que no se toca nunca, un resumen acumulativo que se reescribe cada 15-25 turnos, y los últimos 10-15 mensajes literales. Si además necesitas detalles sueltos de hace horas, añades recuperación vectorial y metes tres o cinco fragmentos por turno, no más. El orden de los bloques cambia el resultado.

El síntoma clásico llega sobre el turno cien: el detective seco de Bilbao que llevabas cien mensajes construyendo empieza a preguntar en qué más puede ayudarte. No se ha roto el modelo, se ha roto tu gestión de la ventana.

¿Por qué se olvida, si el modelo aguanta 200.000 tokens?

Por dos motivos que se suman. El primero es que casi nadie manda la conversación entera: la mayoría de frameworks recortan los mensajes más antiguos en silencio cuando pasas de un umbral, y ese recorte se come justo la parte donde definiste quién es el personaje.

El segundo es que, aunque quepa, el modelo no atiende igual a todo. El trabajo Lost in the Middle (Liu et al., 2023) midió que el rendimiento es máximo cuando la información relevante está al principio o al final del contexto, y cae de forma apreciable cuando queda enterrada en el medio. Tu ficha de personaje en el mensaje 3 de 200 está exactamente en el peor sitio posible si la dejas ahí.

¿Qué va en la ficha del personaje y qué no?

La ficha es el bloque que nunca se recorta y va siempre arriba, en el system prompt. Entre 200 y 400 tokens, y si te pasas de ahí, sobra algo. Dentro:

  • Identidad mínima: nombre, edad, oficio, dónde está.
  • Tres o cinco rasgos de carácter, no quince.
  • Dos o tres reglas de habla en positivo: «frases de menos de quince palabras», «nunca ofrece ayuda, la da o no la da». Las instrucciones solo negativas se cumplen peor.
  • Lo que el personaje no sabe. Es el campo que más contradicciones evita y el que todo el mundo se salta.

Fuera de la ficha: la biografía de tres párrafos, el histórico de lo que ha pasado y cualquier cosa que cambie con la conversación. Eso es trabajo del resumen.

¿Qué se mete en el resumen y cada cuánto se reescribe?

El resumen se genera en una llamada aparte, con temperatura baja y una plantilla de campos fijos. No se va añadiendo texto al anterior: se reescribe entero partiendo del resumen previo más los mensajes nuevos. Seis campos:

  • Hechos establecidos: lista de frases cortas, irreversibles. Este campo se acumula, no se resume; si resumes un resumen varias veces, los detalles concretos se evaporan.
  • Estado de la relación: cómo trata el personaje al usuario ahora mismo.
  • Compromisos pendientes: lo que prometió y no ha hecho.
  • Tono actual y por qué cambió: sin este campo, el personaje recuerda los hechos pero se le aplana el carácter.
  • Hilos abiertos: lo que quedó a medias.
  • Prohibido contradecir: las tres o cuatro cosas que ya son canon.

Disparador: lo que llegue antes, 20 turnos o que el histórico literal pase de tu presupuesto de tokens. Tope duro de 400-500 tokens para el resumen completo; si el modelo se pasa, lo recortas por campos, no por el final.

¿Cuándo hace falta memoria vectorial y cuándo estorba?

Hace falta cuando la conversación vive semanas y en sesiones distintas, o cuando hay muchas entidades sueltas —nombres, sitios, objetos— que el resumen no puede llevar todos. Con un chat de una tarde, no la montes.

Si la montas: cada fragmento es un intercambio completo con su marca de tiempo, recuperas por umbral de similitud y no por «los cinco mejores» a ciegas, y los fragmentos entran por debajo del resumen, nunca por encima. El fallo típico es precioso: recuperas un intercambio de hace tres semanas donde el personaje todavía no sabía algo, el modelo lo lee como presente y te suelta una contradicción con detalles muy concretos, que son las peores de detectar.

¿Cuánto cuesta cada opción?

Técnica Coste por turno Qué arregla En qué falla
Mandar todo el histórico Crece sin techo; latencia y factura suben cada turno Nada se pierde Se degrada por el efecto del medio y revienta el presupuesto
Truncar los mensajes viejos Cero Coste estable Amnesia total del principio; es el problema, no la solución
Ficha fija arriba 200-400 tokens fijos, cacheables Carácter y voz No recuerda nada de lo que ha pasado
Resumen acumulativo 400-500 tokens + una llamada extra cada 20 turnos Continuidad e historia Pierde detalle fino en cada reescritura
Memoria vectorial 300-600 tokens de fragmentos + búsqueda + coste de embeddings Detalles concretos de hace mucho Trae contexto caducado y contradice el canon

Un detalle de factura que pilla a todo el mundo: la caché de prompts funciona por prefijo, así que cualquier cambio invalida todo lo que va detrás. Si reescribes el resumen y lo pones encima del histórico, en ese turno pierdes la caché entera. La documentación de Anthropic pone leer de caché al 10% del precio de entrada y escribirla con un 25% de recargo, con un mínimo de 1.024 tokens según modelo. Traducido: acepta el fallo de caché en los turnos de reescritura y deja la ficha, que no cambia nunca, como primer bloque cacheado.

¿Cómo queda el prompt montado?

Bloque 1 — system, inmutable, cacheado. Ficha del personaje (200-400 tokens) + reglas de habla + lo que no sabe.

Bloque 2 — system, se reescribe cada 20 turnos. «Contexto de la conversación hasta ahora» con los seis campos, en el mismo orden siempre.

Bloque 3 — opcional, solo si hay recuperación. «Fragmentos de conversaciones anteriores, cada uno con su fecha. Pueden estar desactualizados; si contradicen el bloque 2, manda el bloque 2.»

Bloque 4 — mensajes. Los últimos 10-15 turnos literales, sin tocar.

Bloque 5 — última línea del system. Recordatorio de tres líneas: nombre, tono actual y la regla de habla principal. Va al final porque el final es la otra posición buena de la ventana.

¿Cómo se nota cuando está mal hecho?

  • Se vuelve a presentar o pregunta algo que ya le dijiste: truncas sin resumir.
  • El carácter se aplana hacia asistente servicial: la ficha está demasiado abajo o falta el recordatorio final.
  • Recuerda los hechos pero no el tono: tu resumen solo tiene datos, le falta el campo de tono.
  • Se pone repetitivo y repite frases hechas: el resumen ha derivado a prosa y el modelo la está imitando como estilo.
  • Contradice el canon con detalles muy precisos: recuperación vectorial sin filtro temporal.

Para no ir a ciegas, escribe diez preguntas de control sobre cosas que pasaron en los primeros veinte mensajes y pásalas en el turno 20, 60 y 120 de una conversación de prueba. Cuántas falla en cada punto te dice si el problema está en el recorte, en el resumen o en el orden de los bloques, y eso no lo adivinas mirando la conversación por encima.

Comentarios

Aún no hay comentarios. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *