AI RUNTIME / PYTHON / ARCHITECTURE

Por qué los mega-prompts de LLM fallan a escala: construyendo máquinas de estado deterministas con el patrón Strategy

Un teardown de TourFlow: haz que los modelos de lenguaje sean expresivos en el borde, mientras una máquina de estado explícita posee la verdad del sistema.

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:

  1. Ensamblar solo el contexto requerido para la interacción presente.
  2. Pedir al modelo una salida estructurada y restringida.
  3. 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.