Ontwikkelaar bouwt op FSM gebaseerd framework om LLM-chatbots betrouwbaar en goedkoop scripts te laten volgen
Een ontwikkelaar beschrijft het bouwen van een eigen open-source bibliotheek die LLM-gebaseerde chatbots dwingt om een vooraf gedefinieerd dialoogscript strikt te volgen door een eindige toestandsmachine te combineren met het taalmodel, in plaats van te vertrouwen op dure multi-call agentarchitecturen. Het project, genaamd tg-statemachine-bot, splitst gesprekken op in fasen die in YAML-bestanden zijn gedefinieerd, en voert het model alleen de instructies die relevant zijn voor de huidige fase om de context klein en het gedrag voorspelbaar te houden.
De auteur, die aan een zakelijke chatbot werkt, ontdekte dat grote taalmodellen moeite hebben om lange, gedetailleerde scripts betrouwbaar te volgen, omdat hun brede contextvenster ervoor zorgt dat ze structuur verliezen bij lange instructies, en dat bestaande agent-gebaseerde oplossingen om taken op te splitsen in stappen het aantal modelaanroepen en dus de kosten van elke dialoog vermenigvuldigen. Om dit goedkoop op te lossen, bouwde de auteur een open-source bibliotheek waarin een eindige-toestandsmachine (finite state machine, FSM) de algehele gespreksgrafiek beheert en bepaalt welke fase-instructies op elk moment aan het LLM worden doorgegeven, zodat het model alleen de instructies ziet die relevant zijn voor de huidige fase in plaats van het hele script. De architectuur bestaat uit drie modules: een FSM-module die de dialooggrafiek en de gebruikersstatus bijhoudt, een vars_memory-module die dialoogvariabelen met wijzigingsgeschiedenis opslaat, en een conversation_core-module die de aanroepen naar het LLM orkestreert. Bij elke beurt moet het model reageren met een vast contract van vier velden: een bericht aan de gebruiker, een overgangssignaal, gestructureerde faseresultaten en een fasesamenvatting. Als het model dit contract schendt (ongeldige JSON, niet-bestaande overgangssignalen, ontbrekende resultaten), stuurt het systeem automatisch een corrigerend vervolgverzoek. Gesprekscontinuïteit bij faseovergangen wordt onderhouden met behulp van OpenAI's Responses API previous_response_id chaining, wat ook de kosten verlaagt via goedkopere cache-leesprijzen. Het algehele dialoogscript wordt beschreven in een YAML-bestand, met gedetailleerde fase-instructies in afzonderlijke bestanden, waardoor de onderliggende engine zonder aanpassingen kan worden hergebruikt voor verschillende chatbotdomeinen. Om de complexiteit van het handmatig bewerken van YAML te beheren, bouwde de auteur een script dat de YAML omzet naar een draw.io-diagram voor eenvoudigere menselijke controle, plus een logviewer-tool om testgesprekken te bekijken in een chatachtige opmaak met uitbreidbare systeemlogs, inclusief realtime updates bij lokaal debuggen. Als demonstratie bevat de repository een voorbeeld 'analyst bot' die solo-ontwikkelaars helpt bij het afbakenen van projectvereisten. De auteur meldt dat dit slechts ongeveer 1,03 LLM-aanroepen per gebruikersbericht vereiste terwijl het script toch betrouwbaar werd gevolgd en gestructureerde informatie werd verzameld, hoewel de prompttechniek van de demobot nog niet gepolijst was.
Bron: Habr — хаб NLP —
origineel
