A los prompts grandes se les suele pedir hacer dos trabajos incompatibles: generar una respuesta útil y preservar el estado de un proceso de negocio. El primer trabajo es probabilístico. El segundo debe ser inspeccionable, repetible y recuperable.
Ese desajuste es manejable en un prototipo. A tráfico de producción, se convierte en un problema de sistemas: un pequeño cambio en el prompt altera las transiciones de estado, el comportamiento de reintento se vuelve ambiguo y el único depurador es una transcripción.
El prompting no es un plano de control
Un mega-prompt puede describir el recorrido esperado, pero no puede garantizar que el modelo seleccione la siguiente acción correcta. Tampoco puede hacer imposible una transición inválida. Añadir más instrucciones solo aumenta el número de interacciones que un mantenedor debe razonar.
TourFlow pone el invariante en código. El modelo recibe una tarea estrecha para el estado activo, y una estrategia propiedad de la aplicación valida lo que devuelve. Una transición de estado es entonces un evento explícito, no una interpretación incrustada en prosa.
stateDiagram-v2
[*] --> Welcome
Welcome --> SelectTour: tour selected
SelectTour --> AnswerQuestion: route confirmed
AnswerQuestion --> SelectTour: another location
AnswerQuestion --> Complete: tour complete
Complete --> [*]La frontera de la estrategia
Cada estado posee una estrategia pequeña con tres responsabilidades:
- Ensamblar solo el contexto requerido para la interacción presente.
- Pedir al modelo una salida estructurada y restringida.
- Validar el resultado antes de emitir el siguiente evento.
El modelo puede ser creativo dentro de la frontera. No puede crear silenciosamente un nuevo estado ni saltarse una confirmación requerida. Esa es la división esencial del trabajo: los modelos de lenguaje producen candidatos; el código determinista decide si esos candidatos pueden alterar el sistema.
Qué cambia esto operativamente
Las trazas resultantes tienen nombres que corresponden al producto: SelectTour, AnswerQuestion, Complete. Una llamada al modelo fallida es reintentable sin adivinar qué parte de un prompt masivo ya surtió efecto. Las suites de tests pueden enumerar transiciones válidas, y la analítica puede distinguir una mala respuesta de un recorrido roto.
Este patrón no hace que un modelo sea determinista. Hace que el sistema alrededor del modelo sea determinista donde importa.