← Volver a artículos

Las alucinaciones no se evitan con el prompt

Primero los datos, después las herramientas, después las reglas duras. El prompt va último.

chattybotsiaagentesingeniería

La pregunta que más me hacen sobre el bot es cómo hago para que no invente precios. La respuesta corta es que no lo hago con el prompt. Al principio sí lo intenté, y aprendí a los golpes que cada regla nueva en el prompt arreglaba un caso y rompía dos vecinos.

Lo que uso hoy es una escalera de cuatro escalones. Cuando aparece un problema, se ataca en el escalón más bajo posible, y el prompt es el último recurso, no el primero.

Dónde se arregla un problema
  1. 1. Datos Arreglar el catálogo o la normalización. Si el dato está bien, el modelo no tiene qué inventar.
  2. 2. Herramienta La regla viaja en el valor que devuelve la herramienta. Existe sólo en el turno donde aplica.
  3. 3. Guard Una regla dura revisa la respuesta antes de salir. Si falla, el modelo regenera.
  4. 4. Prompt Último recurso. Una regla acá se derrama sobre todos los casos vecinos.
La regla de la casa: si vas por la segunda formulación de prompt para el mismo problema, pará y subí un escalón.

Escalón 1: los datos

El precio de un canje es el ejemplo más claro. Al principio la herramienta que cotizaba recibía el precio como parámetro, y el modelo lo sacaba de la conversación. A veces del transcript de ayer, con la cotización de ayer. A veces de ningún lado.

Hoy la herramienta recibe qué equipo quiere el cliente y lee el precio de la base. El dólar del día tampoco pasa por el modelo: se lee del espejo del catálogo en cada llamada. Si el modelo no puede tocar la cifra, no puede inventarla.

Los datos también fallan, y cuando fallan el bot miente con total seguridad. Un día la planilla de canjes quedó con una sola fila, la sincronización la copió como si estuviera bien, y el bot se pasó el día negando canjes como si fuera política de la tienda. De ahí salió un guard de sanidad: si la planilla trae menos de diez filas, la sincronización avisa en vez de copiar. Ese arreglo también es del escalón 1.

Escalón 2: la herramienta

Acá está el descubrimiento que más me cambió la forma de trabajar. Una regla escrita en el prompt es estática: aplica en todos los turnos, incluso donde no corresponde. Una instrucción que viaja en el valor que devuelve la herramienta existe sólo en el turno donde la herramienta se llamó.

El caso fue la lista de espera. La regla decía algo así como “si no hay stock de un modelo que sí reponemos, ofrecé la lista de espera”. En el prompt, esa regla se derramó sobre consultas donde no venía al caso, y el bot ofrecía lista de espera para equipos que nunca van a volver a entrar. Movida a la respuesta de la búsqueda, junto con las filas que devuelve, aparece sólo cuando la búsqueda vino vacía para un modelo que repone. Mismo texto, otro lugar, cero efectos colaterales.

Escalón 3: el guard

Hay reglas que no se pueden garantizar desde los datos ni desde las herramientas, porque el modelo puede ignorarlas igual. Para eso están los guards: veintiocho motivos hoy, que revisan el borrador antes de que salga. Los que más disparan son un monto sin respaldo en ninguna herramienta, un stock afirmado que la búsqueda no devolvió, y una cotización de canje sin haber preguntado modelo, capacidad y batería.

Cuando un guard falla, el modelo regenera dentro del mismo run, con una nota que le dice qué estuvo mal. Si reincide, la respuesta se descarta y la charla pasa a una persona. El cliente nunca ve el intento descartado.

Los guards tienen su propio costo, y lo pagué. El guard de montos se volvió tan estricto que descartaba respuestas correctas: repetir un precio que el propio cliente había dicho contaba como invención. La regla que salió de eso es que todo guard nuevo se calibra contra unos seis mil turnos de producción antes de mergear, midiendo falsos positivos. Eso merece su propio post.

Escalón 4: el prompt

El prompt existe y tiene reglas. Lo que no tiene es libertad para crecer. Hay un test que fija un presupuesto de 900 líneas: para agrandarlo hay que subir el tope en el mismo PR, y el diff lo hace visible en el review. Un prompt crece sin límite si nadie lo defiende.

Lo que queda en el prompt es lo que cubre la mayoría de los turnos: quién es el bot, cómo habla, qué hace cuando no sabe. Todo lo que es un caso particular vive más abajo en la escalera.

Por qué el orden importa

Cada escalón que subís pierde precisión y gana alcance. Un dato correcto arregla un problema para siempre, sin efectos colaterales. Una instrucción en la herramienta arregla un problema en el turno donde aplica. Un guard atrapa el problema después de que ocurrió, y puede equivocarse. Y una regla en el prompt cambia el comportamiento en todos los turnos, incluidos los que andaban bien.

El escalón 1 es el que más se saltea, porque es el más caro: normalizar datos es trabajo aburrido y el prompt está a un git push de distancia. Pero es donde cada hora invertida rinde más. Ahí está hoy la deuda más grande de Chatty, y el trabajo en curso.