Desenvolvedor Cria Framework Baseado em FSM para Fazer Chatbots de LLM Seguirem Roteiros de Forma Confiável e Econômica
Um desenvolvedor descreve a construção de uma biblioteca customizada de código aberto que força chatbots baseados em modelos de linguagem de grande porte (LLMs) a seguir estritamente um roteiro de diálogo predefinido, combinando uma máquina de estados finitos (FSM) com o modelo de linguagem, em vez de depender de arquiteturas de agentes multicamadas e caras. O projeto, chamado tg-statemachine-bot, divide conversas em etapas definidas em arquivos YAML, alimentando o modelo apenas com as instruções relevantes para a etapa atual, mantendo o contexto pequeno e o comportamento previsível.
O autor, trabalhando em um chatbot de negócios, descobriu que modelos de linguagem de grande porte têm dificuldade em seguir scripts longos e detalhados de forma confiável, porque sua ampla janela de contexto faz com que percam a estrutura ao longo de instruções longas, e que soluções existentes baseadas em agentes, que dividem tarefas em etapas, multiplicam o número de chamadas de modelo e, portanto, o custo de cada diálogo. Para resolver isso de forma econômica, o autor construiu uma biblioteca de código aberto onde uma máquina de estados finitos (FSM) governa o grafo geral da conversa e controla quais instruções de estágio são passadas ao modelo de linguagem de grande porte (LLM) a cada momento, de modo que o modelo só vê as instruções relevantes para o estágio atual, em vez de todo o script. A arquitetura consiste em três módulos: um módulo FSM que rastreia o grafo do diálogo e o estado do usuário, um módulo vars_memory que armazena variáveis de diálogo com histórico de alterações e um módulo conversation_core que orquestra chamadas ao LLM. A cada turno, o modelo deve responder com um contrato fixo de quatro campos — uma mensagem ao usuário, um sinal de transição, resultados de estágio estruturados e um resumo do estágio — e, se violar esse contrato (JSON inválido, sinais de transição inexistentes, resultados ausentes), o sistema envia automaticamente uma solicitação corretiva de acompanhamento. A continuidade conversacional entre transições de estágio é mantida usando o encadeamento previous_response_id da API Responses da OpenAI, que também reduz custos por meio de preços mais baratos de leitura de cache. O script geral do diálogo é descrito em um arquivo YAML, com instruções detalhadas de estágio mantidas em arquivos separados, permitindo que o mecanismo subjacente seja reutilizado em diferentes domínios de chatbot sem modificação. Para gerenciar a complexidade da edição manual de YAML, o autor construiu um script que converte o YAML em um diagrama draw.io para facilitar a revisão humana, além de uma ferramenta de visualização de logs para inspecionar conversas de teste em um formato semelhante a chat, com logs de sistema expansíveis, incluindo atualizações em tempo real durante a depuração local. Como demonstração, o repositório inclui um exemplo de 'bot analista' que ajuda desenvolvedores solo a dimensionar os requisitos do projeto, que o autor relata ter exigido apenas cerca de 1,03 chamadas de LLM por mensagem do usuário, enquanto ainda seguia o script de forma confiável e coletava informações estruturadas, embora a engenharia de prompt do bot de demonstração tenha ficado sem polimento.
Fonte: Habr — хаб NLP —
original
