Entwickler baut auf endlichem Automaten basierendes Framework, damit LLM-Chatbots Skripten zuverlässig und kostengünstig folgen
Ein Entwickler beschreibt den Bau einer eigenen Open-Source-Bibliothek, die LLM-basierte Chatbots dazu zwingt, einem vordefinierten Dialogs Skript strikt zu folgen, indem sie einen endlichen Automaten mit dem Sprachmodell kombiniert, anstatt sich auf teure Multi-Call-Agentenarchitekturen zu verlassen. Das Projekt namens tg-statemachine-bot unterteilt Gespräche in Phasen, die in YAML-Dateien definiert sind, und füttert das Modell nur mit den für die aktuelle Phase relevanten Anweisungen, um den Kontext klein und das Verhalten vorhersehbar zu halten.
Der Autor, der an einem Business-Chatbot arbeitet, stellte fest, dass große Sprachmodelle Schwierigkeiten haben, langen, detaillierten Skripten zuverlässig zu folgen, weil ihr großer Kontextfenster dazu führt, dass sie bei langen Anweisungen die Struktur verlieren, und dass bestehende agentenbasierte Lösungen, um Aufgaben in Schritte zu zerlegen, die Anzahl der Modellaufrufe und damit die Kosten jedes Dialogs vervielfachen. Um dies kostengünstig zu lösen, baute der Autor eine Open-Source-Bibliothek, in der ein endlicher Automat (FSM) den gesamten Gesprächsgraphen steuert und festlegt, welche Schritt-für-Schritt-Anweisungen dem LLM zu jedem Zeitpunkt übergeben werden, sodass das Modell nur die für den aktuellen Schritt relevanten Anweisungen sieht und nicht das gesamte Skript. Die Architektur besteht aus drei Modulen: einem FSM-Modul, das den Dialoggraphen und den Benutzerzustand verfolgt, einem vars_memory-Modul, das Dialogvariablen mit Änderungshistorie speichert, und einem conversation_core-Modul, das die Aufrufe an das LLM orchestriert. Bei jeder Runde muss das Modell mit einem festen Vier-Felder-Vertrag antworten - einer Nachricht an den Benutzer, einem Übergangssignal, strukturierten Schrittergebnissen und einer Schrittzusammenfassung - und wenn es diesen Vertrag verletzt (ungültiges JSON, nicht existierende Übergangssignale, fehlende Ergebnisse), sendet das System automatisch eine korrigierende Folgeanfrage. Die Gesprächskontinuität über Schrittübergänge hinweg wird mithilfe der previous_response_id-Verkettung der OpenAI Responses API aufrechterhalten, was auch die Kosten durch günstigeres Cache-Lesen senkt. Das gesamte Dialogszenario wird in einer YAML-Datei beschrieben, wobei detaillierte Schritt-für-Schritt-Anweisungen in separaten Dateien gehalten werden, sodass die zugrunde liegende Engine ohne Änderungen für verschiedene Chatbot-Domänen wiederverwendet werden kann. Um die Komplexität der manuellen Bearbeitung von YAML zu bewältigen, baute der Autor ein Skript, das das YAML in ein draw.io-Diagramm konvertiert, um die menschliche Überprüfung zu erleichtern, sowie ein Log-Viewer-Tool, um Testgespräche in einem Chat-ähnlichen Format mit erweiterbaren Systemprotokollen zu inspizieren, einschließlich Echtzeit-Updates beim lokalen Debugging. Als Demonstration enthält das Repository ein Beispiel für einen 'Analysten-Bot', der Solo-Entwicklern hilft, Projektanforderungen abzugrenzen. Der Autor berichtet, dass dieser nur etwa 1,03 LLM-Aufrufe pro Benutzernachricht benötigte, während er zuverlässig dem Skript folgte und strukturierte Informationen sammelte, obwohl das Prompt-Engineering des Demo-Bots unpoliert blieb.
Quelle: Habr — хаб NLP —
Original
