Auditoría de 211 instrucciones en 14 prompts de sistema: 23 se contradecían
Un ingeniero revisó juntos los 14 archivos de prompt de sistema que alimentan sus llamadas a un LLM y encontró 211 instrucciones, 23 de ellas contradictorias entre sí. Tras la limpieza quedaron 158 y tres tests inestables empezaron a pasar.
Catorce archivos con prompts de sistema alimentaban las llamadas a un LLM en producción y nadie los había leído juntos. Hasta la semana pasada. Al volcarlos todos en una hoja de cálculo aparecieron 211 líneas de instrucción distintas, y 23 de ellas contradecían al menos una regla escrita en otro archivo del mismo pipeline.
El recuento por categorías fue el siguiente: 38 definiciones de rol, 52 restricciones de formato sobre estructura y longitud de salida, 47 reglas de comportamiento sobre tono y verbosidad, 41 inyecciones de conocimiento de dominio y 33 de seguridad y guardarraíles. Las contradicciones son el hallazgo de verdad. Un archivo pedía ser conciso mientras otro, en la misma cadena de llamadas, exigía explicaciones exhaustivas con ejemplos. Tres restricciones de formato especificaban JSON para el mismo tipo de dato, pero con esquemas incompatibles entre ellas. Y nueve inyecciones de dominio referenciaban una API interna que se había refactorizado dos meses antes, así que el modelo estaba anclándose a endpoints que ya no existen.
La limpieza: 34 instrucciones fuera por contradictorias o caducadas, 19 pares duplicados fusionados, y el total bajó de 211 a 158. El efecto secundario que nadie esperaba es que tres tests de integración que llevaban semanas fallando de forma intermitente empezaron a pasar.
El fallo que no salió en la revisión manual
Un repaso con un subagente de revisión de código detectó algo que la auditoría a mano había dejado pasar: dos prompts referenciaban el mismo enum, pero con un valor escrito de forma distinta en cada uno. Es decir, el modelo llevaba meses cayendo al comportamiento por defecto en esa ruta concreta, sin que nadie lo notara porque el resultado no era un error visible sino una respuesta silenciosamente peor.
El caso ilustra un problema que va más allá de este equipo. Cuando catorce archivos los escriben personas distintas en momentos distintos y sin plantilla compartida, la consistencia no se sostiene sola. Cada cambio en un prompt es un cambio de comportamiento en un sistema distribuido de decisiones implícitas, y casi nadie trata esas ediciones como código sujeto a pruebas.
Lo que el autor no tiene resuelto es precisamente la parte que importa a partir de ahora: cómo mantener la coherencia cuando el equipo va rápido. La única propuesta que se le ocurre es que una sola persona revise cada cambio de prompt, un cuello de botella que no aguanta un ritmo alto de despliegue. Las alternativas habituales —plantillas compartidas, validación automática de esquemas, pruebas de contrato sobre las salidas esperadas— no aparecen mencionadas en su relato, y son justo las que un equipo en esta situación querría tener sobre la mesa.