Un desarrollador construye un marco basado en autómatas finitos para que los chatbots con modelos de lenguaje sigan guiones de forma fiable y económica
Un desarrollador describe la construcción de una biblioteca de código abierto propia que obliga a los chatbots basados en modelos de lenguaje a seguir estrictamente un guion de diálogo predefinido combinando una máquina de estados finitos con el modelo de lenguaje, en lugar de depender de arquitecturas de agente de múltiples llamadas y costosas. El proyecto, llamado tg-statemachine-bot, divide las conversaciones en etapas definidas en archivos YAML, alimentando al modelo solo las instrucciones relevantes a la etapa actual para mantener el contexto pequeño y el comportamiento predecible.
El autor, trabajando en un chatbot de negocios, descubrió que los modelos de lenguaje grandes tienen dificultades para seguir de manera fiable guiones largos y detallados porque su amplia ventana de contexto hace que pierdan la estructura en instrucciones extensas, y que las soluciones existentes basadas en agentes para dividir tareas en pasos multiplican el número de llamadas al modelo y, por lo tanto, el costo de cada diálogo. Para resolver esto de manera económica, el autor construyó una biblioteca de código abierto donde una máquina de estados finitos (FSM, por sus siglas en inglés) gobierna el grafo general de la conversación y controla qué instrucciones de etapa se pasan al modelo de lenguaje grande (LLM, por sus siglas en inglés) en cada momento, de modo que el modelo solo ve las instrucciones relevantes para la etapa actual en lugar de todo el guion. La arquitectura consta de tres módulos: un módulo FSM que rastrea el grafo del diálogo y el estado del usuario, un módulo vars_memory que almacena variables del diálogo con historial de cambios, y un módulo conversation_core que orquesta las llamadas al LLM. En cada turno, el modelo debe responder con un contrato fijo de cuatro campos: un mensaje para el usuario, una señal de transición, resultados de etapa estructurados y un resumen de etapa. Si viola este contrato (JSON no válido, señales de transición inexistentes, resultados faltantes), el sistema envía automáticamente una solicitud de seguimiento correctiva. La continuidad conversacional a través de transiciones de etapa se mantiene utilizando el encadenamiento previous_response_id de la API de Respuestas de OpenAI, lo que también reduce costos mediante precios de lectura de caché más económicos. El guion general del diálogo se describe en un archivo YAML, con instrucciones detalladas por etapa mantenidas en archivos separados, lo que permite que el motor subyacente se reutilice en diferentes dominios de chatbot sin modificaciones. Para gestionar la complejidad de editar YAML manualmente, el autor construyó un script que convierte el YAML en un diagrama draw.io para una revisión humana más fácil, además de una herramienta de visor de registros para inspeccionar conversaciones de prueba en un formato similar a un chat con registros de sistema expandibles, incluyendo actualizaciones en tiempo real al depurar localmente. Como demostración, el repositorio incluye un 'bot analista' de ejemplo que ayuda a desarrolladores independientes a definir los requisitos de un proyecto, y el autor informa que solo requirió aproximadamente 1.03 llamadas al LLM por mensaje de usuario while siguiendo fielmente el guion y recopilando información estructurada, aunque la ingeniería de prompts del bot de demostración quedó sin pulir.
Fuente: Habr — хаб NLP —
original
