Cuando las instrucciones del asistente ocupaban mil líneas
Cada vez que hablas con XNeuronal, el modelo relee primero sus instrucciones. La mañana del 21 de mayo ocupaban 1 043 líneas: reglas, contraejemplos, casos particulares añadidos uno a uno durante meses, y cada añadido tumbaba otro. Ese día todo se reescribió en 408 líneas que describen lo que la aplicación es, en vez de lo que hay que decir en cada situación. Cada herramienta lleva ahora su propia ficha de uso, leída solo en el momento de usarla. Y el asistente aprendió a decir hola una vez al día, no en cada frase. El resultado: respuestas más regulares, menos «anotado» vacíos y un tono que se mantiene.
Un «anotado» de más
Nuria cuenta su semana de camino a casa. «Mi hermano Iker viene el domingo, ha dejado el azúcar, tengo que buscarle un postre.» La aplicación responde «Vale, anotado.» Dos frases después, Nuria pide una idea de postre, y la respuesta propone una tarta de azúcar, sin una palabra sobre Iker. El dato se había retenido. También se había olvidado, en el mismo minuto.
Escenas así no eran raras en primavera. Una frase podía contener tres recuerdos y no dejar ninguno, ya lo contamos. Pero había un defecto más sordo, más difícil de fotografiar: el asistente no tenía el mismo carácter de un turno al siguiente. Un día comentaba cada información con un «anotado», al día siguiente callaba. A veces recapitulaba lo que acababas de decir, a veces hacía la pregunta correcta. Y en plena conversación podía no saber ya lo que se había dicho dos frases antes.
Primero buscamos la causa en la memoria. Estaba en otra parte: en el texto que el modelo relee antes de cada respuesta.
Un manual de mil líneas
Un modelo de lenguaje no sabe nada de XNeuronal cuando llega. Todo lo que sabe de la aplicación, de su memoria, de sus herramientas y de cómo debe hablar cabe en un texto que se le entrega al principio de cada intercambio: las instrucciones.
Esas instrucciones habían crecido como crece un reglamento interno: por añadidos. Una respuesta fallida en pruebas, una regla más. Un caso mal tratado en el uso, un ejemplo más, con la respuesta mala tachada y la buena al lado. La mañana del 21 de mayo el texto ocupaba 1 043 líneas. Contenía treinta y dos líneas de ejemplos del tipo «no digas esto, di aquello». Contenía la regla que distingue lo que se retiene en silencio de lo que se confirma en voz alta, repetida en cinco secciones distintas, cada vez un poco diferente. Contenía 175 líneas que describían, campo por campo, la estructura de una ficha, con un ejemplo por tipo de memo: receta, lista de la compra, nota de lectura. Y contenía cincuenta líneas sobre cómo encargar una imagen de ilustración, cuando esa orden se le había retirado al asistente nueve días antes: desde el 12 de mayo, el servidor elige la imagen por su cuenta. Nadie había retirado el manual.
Nueve días antes, también, se había colocado un mapa de la memoria al principio de ese texto para decirle al modelo adónde va cada información: útil, y unas decenas de líneas más.
El verdadero problema no era la longitud en sí. Era que cada caso particular contradecía a otro. «Confirma siempre cuando te pidan retener» convivía con «no digas nunca anotado». Cada regla había sido correcta en su contexto, y el modelo recibía todos los contextos a la vez. Aplicaba una parte, no siempre la misma.
Por qué un manual más largo hace al asistente menos fiable
Un modelo de lenguaje no lee sus instrucciones de una vez por todas. Las relee íntegramente en cada turno, junto con el historial de la conversación, la memoria activa y la descripción de sus herramientas. Todo eso forma un único bloque de texto, y ese bloque pesaba del orden de cincuenta mil tokens por turno, más de la mitad solo para las instrucciones. Y la atención de un modelo no es uniforme sobre un bloque de ese tamaño. Lo que está en medio cuenta menos que lo que está al principio y al final. Y el hilo de la conversación, lo que acabas de decir dos frases antes, estaba justamente en medio, atrapado entre mil líneas de reglas y la lista de herramientas.
Eso explica el postre de Iker. El dato sí se había escrito en la memoria. Pero en el turno siguiente, en la masa releída, pesaba menos que una receta de cuscús de ejemplo. El modelo no había olvidado: no había mirado ahí. Y cada turno tardaba más en procesarse, algo que cada añadido futuro habría agravado.
Decir lo que es verdad en vez de lo que hay que hacer
A última hora de la tarde del 21 de mayo, el texto se reescribió desde cero. No se acortó: se reescribió, con un principio distinto.
El texto antiguo decía qué hacer: en tal situación, responde esto, llama a tal herramienta, evita tal frase. El nuevo dice lo que es verdad. Responde a trece preguntas, por orden: quién eres; qué es XNeuronal y qué no es; por qué existe; cómo está hecha su memoria; cómo se clasifica un recuerdo; cómo se escribe su contenido; qué herramientas existen; cómo se encadenan; cuándo se retiene en silencio y cuándo se confirma en voz alta; por qué nunca se borra nada; cómo se habla; las pocas situaciones que merecen un trato aparte; y lo que el servidor añade en cada turno.
La apuesta cabe en una frase: un modelo al que se le explica el mundo deduce los comportamientos correctos mejor que un modelo al que se le dictan las respuestas. Toma la memoria. El texto antiguo enumeraba reglas de archivo. El nuevo explica que la memoria de la aplicación imita tres sistemas de la memoria humana: lo que sabemos, los hechos duraderos sobre tu vida; lo que hemos vivido, los acontecimientos situados en el tiempo; lo que tenemos que hacer, las acciones que se disparan más tarde. Dice que la primera categoría es silenciosa, que no se abre ninguna ficha cuando mencionas el nombre de tu hermana, y que la tercera es siempre visible, porque esperas ver el recordatorio puesto. De esas tres frases se derivan decenas de casos que el texto antiguo enumeraba uno a uno.
La regla del silencio, la que se repetía cinco veces, ya solo está escrita una vez, en dos párrafos. Le cuentas tu vida: la aplicación retiene sin comentar y reacciona al contenido, hace la pregunta útil, señala una contradicción. Le pides explícitamente un acto de memoria, «apunta esto», «recuérdamelo a las cuatro»: confirma en una frase corta. Es la misma regla que antes. Ya no tiene competidora.
El resultado ocupa 408 líneas. Un sesenta y uno por ciento menos. El bloque releído en cada turno se dividió más o menos por dos, y el historial de la conversación recuperó su sitio.
Cada herramienta lleva su ficha de uso
Parte de lo que desapareció de las instrucciones no se suprimió. Cambió de sitio.
El asistente actúa sobre la aplicación a través de herramientas: crear un recuerdo, modificar uno, buscar, hacer evolucionar uno, poner un recordatorio, buscar en la web, mostrar una ficha, declarar que habla otra persona, registrar una regla de comportamiento. Nueve herramientas, ese día. Cada una se describe al modelo con sus parámetros, y esa descripción se lee en el momento en que se dispone a usarla.
Ahí es adonde fueron las 175 líneas de estructura de ficha, la escala de importancia del uno al diez y la tabla de las cuatro razones por las que un recuerdo puede evolucionar: un hecho que cambia, un hecho que era falso, un problema resuelto, una información que te piden olvidar. Cincuenta y cuatro líneas añadidas a las fichas de las herramientas, seiscientas treinta y cinco retiradas de las instrucciones. La misma información, pero consultada solo cuando sirve. El asistente no necesita conocer la estructura de una ficha de receta para responderte «hola». La necesita cuando crea la ficha, y en ese momento se le muestra.
El ejemplo completo de receta, el que ordena los ingredientes por familias, la carne, las verduras, las especias, en vez de a granel, sigue ahí, en la ficha de uso del campo que describe la ficha. Se lee cuando pides una receta, no cuando preguntas la hora.
Lo que se tiró, y lo que nos negamos a guardar
El bloque sobre las imágenes se suprimió sin sustituto: describía una herramienta que el asistente ya no tenía, puesto que el servidor construye la ilustración de una ficha por su cuenta, a partir del título, la entradilla y las etiquetas. Podríamos haberlo guardado «por si acaso». Habría seguido releyéndose en cada turno para nada.
Se descartaron otras tres opciones. Dejar el texto tal cual: el síntoma persistía y cada añadido lo agravaba. Reducirlo un tercio conservando el estilo «no digas esto, di aquello»: las redundancias se habrían quedado, y con ellas una forma de tratar al modelo como un loro que adiestrar. Dejar la estructura de ficha en las instrucciones: era hacerle leer un manual de montaje antes de cada «hola».
La decisión es reversible, y está escrito negro sobre blanco en el registro de decisiones del proyecto. Dos commits que anular, ninguna base de datos tocada, ninguna interfaz cambiada. Si el nuevo texto resultara peor, volver atrás lleva un minuto.
Hola una vez al día
El mismo día, un poco antes, el asistente había aprendido algo más pequeño y más visible: decir hola.
Hasta entonces, podía no saludar en absoluto cuando abrías el día con una petición directa, o al contrario responder «Buenos días, Nuria» en cada intercambio, como si te conociera por primera vez cada diez minutos. Ninguna de las dos cosas es lo que hace alguien que te conoce.
El servidor sabe ahora si la conversación que se abre es la primera de tu día: mira la última conversación archivada y comprueba si es de hoy, en hora de París. Esa información se añade al contexto de cada turno, junto con la hora. Si es la primera conversación del día, el asistente abre con un «buenos días» o «buenas tardes» antes de las seis de la tarde, un «buenas noches» después, seguido de tu nombre si lo conoce. Toma la iniciativa aunque vayas directo a una petición: «hola, el tiempo de mañana» recibe «Buenos días, Nuria, lo miro.» Más tarde en el día no vuelve a empezar. Si lo saludas, responde sin más. Si vas al grano, va al grano.
Dos detalles de este rito dicen algo de cómo está hecha la aplicación. El primero: si no conoce tu nombre, dice «buenos días» a secas. Nunca «buenos días, querido amigo», nunca un nombre adivinado en la memoria. El segundo: cuando la respuesta va a tardar unos segundos, la frase corta que el asistente dice enseguida, «vale, lo miro», lleva también el saludo esa mañana. La cortesía llega en el audio inmediato, no solo en la respuesta completa que sigue. Y si el teléfono está prestado, se usa el nombre de la persona que habla, no el del propietario.
En el texto antiguo, este rito ocupaba una sección entera, tres reglas numeradas y seis ejemplos. En el nuevo, tres párrafos, que hacen lo mismo.
Lo que cambia cuando le hablas
Nada de esto se ve en la interfaz. Ningún botón se movió el 21 de mayo. Lo que cambia es la regularidad.
Cuentas que tu hermano ha dejado el azúcar: la aplicación ya no dice «anotado». Reacciona a lo que acabas de decir, o calla, y el dato queda retenido. Pides un postre dos frases después: tiene el hilo delante, porque el hilo ya no está enterrado bajo mil líneas. Pones un recordatorio: «vale, recordatorio puesto para las cuatro», una frase, no un resumen. Se abre una ficha: una frase de acompañamiento, «aquí está, listo», nunca un silencio sobre una pantalla que acaba de cambiar. Y la conversación mantiene el mismo tono de un día a otro, corto, de tú, sin entusiasmo de presentador, porque ese tono se describe una vez en lugar de prescribirse veinte.
Lo que la aplicación había aprendido dos días antes sobre lo efímero, mostrar el tiempo sin retenerlo, encontró su sitio en el nuevo texto como un principio, en tres líneas, y no como un caso más. Y las reglas que le das tú mismo, «no me hables más de ese tema», «recuérdame siempre esto», se describen como lo que son: una instrucción duradera que añades a la suya, registrada por una herramienta dedicada, releída en cada turno en su memoria activa.
Lo que vigilamos
Un texto declarativo hace una apuesta sobre el modelo que lo lee: que deducirá los comportamientos correctos de un modelo mental claro. No todos los modelos deducen igual de bien, y el que corre en producción ese día no es aquel para el que el texto se escribió primero.
Los dos lugares donde se espera una regresión se conocen. Una frase que contiene varios hechos, y uno de ellos podría colarse. Y la diferencia entre «recuérdame» y «recuerda que», que separa un recordatorio de un simple hecho que retener. Para el primero, la segunda pasada instaurada el 18 de mayo, la que recuenta los hechos de una frase después de la respuesta, sigue en su sitio como red. Para los dos, la regla está fijada: si el modelo falla en un comportamiento, se le añade una instrucción dirigida, una línea en el punto exacto donde falta. No se vuelve al manual.
Nuria, por su parte, notará sobre todo una cosa. El domingo en que viene Iker, la aplicación le propondrá un postre sin azúcar, y no le habrá dicho «anotado» para saberlo.
