Un développeur crée un framework basé sur une machine à états finis pour que les chatbots LLM suivent des scripts de manière fiable et économique.
Un développeur décrit la création d'une bibliothèque open-source personnalisée qui force les chatbots basés sur des grands modèles de langage (LLM) à suivre strictement un script de dialogue prédéfini en combinant une machine à états finis avec le modèle de langage, plutôt que de s'appuyer sur des architectures d'agents multiphases coûteuses. Le projet, appelé tg-statemachine-bot, divise les conversations en étapes définies dans des fichiers YAML, en ne fournissant au modèle que les instructions pertinentes pour l'étape en cours afin de maintenir un contexte réduit et un comportement prévisible.
L'auteur, travaillant sur un chatbot métier, a constaté que les grands modèles de langage ont du mal à suivre de manière fiable des scripts longs et détaillés, car leur large fenêtre de contexte les fait perdre la structure sur de longues instructions, et que les solutions existantes basées sur des agents pour décomposer les tâches en étapes multiplient le nombre d'appels au modèle et donc le coût de chaque dialogue. Pour résoudre ce problème de manière économique, l'auteur a construit une bibliothèque open source où une machine à états finis (FSM) gouverne le graphe global de la conversation et contrôle quelles instructions de l'étape sont transmises au LLM à chaque instant, de sorte que le modèle ne voit jamais que les instructions pertinentes pour l'étape courante plutôt que le script entier. L'architecture se compose de trois modules : un module FSM qui suit le graphe de dialogue et l'état de l'utilisateur, un module vars_memory qui stocke les variables de dialogue avec leur historique de modifications, et un module conversation_core qui orchestre les appels au LLM. À chaque tour, le modèle doit répondre avec un contrat fixe à quatre champs — un message à l'utilisateur, un signal de transition, des résultats structurés de l'étape et un résumé de l'étape — et s'il viole ce contrat (JSON invalide, signaux de transition inexistants, résultats manquants), le système envoie automatiquement une demande de suivi corrective. La continuité conversationnelle à travers les transitions d'étapes est maintenue en utilisant previous_response_id en chaîne de l'API Responses d'OpenAI, ce qui réduit également les coûts grâce à une tarification de lecture en cache moins chère. Le script global du dialogue est décrit dans un fichier YAML, avec des instructions détaillées pour chaque étape conservées dans des fichiers séparés, ce qui permet de réutiliser le moteur sous-jacent dans différents domaines de chatbot sans modification. Pour gérer la complexité de l'édition manuelle du YAML, l'auteur a construit un script qui convertit le YAML en diagramme draw.io pour une revue humaine plus facile, ainsi qu'un outil de visualisation de logs pour inspecter les conversations de test dans un format proche du chat avec des logs système dépliables, y compris des mises à jour en temps réel lors du débogage local. Comme démonstration, le dépôt comprend un exemple de « bot analyste » qui aide les développeurs solo à définir le périmètre des exigences d'un projet, que l'auteur rapporte avoir nécessité seulement environ 1,03 appels LLM par message utilisateur tout en suivant de manière fiable le script et en collectant des informations structurées, bien que l'ingénierie des prompts du bot de démonstration soit restée non polie.
Source: Habr — хаб NLP —
original
