开发者构建基于有限状态机的框架,让大语言模型聊天机器人可靠且低成本地遵循脚本
一位开发者描述构建了一个自定义的开源库,该库通过将有限状态机与语言模型相结合,强制基于大语言模型的聊天机器人严格遵循预定义的对话脚本,而非依赖昂贵的多调用代理架构。该项目名为 tg-statemachine-bot,将对话拆分为在 YAML 文件中定义的阶段,仅向模型提供当前阶段相关的指令,以保持上下文精简和行为的可预测性。
作者在开发一个商业聊天机器人时发现,大型语言模型难以可靠地遵循冗长且详细的脚本,因为其宽泛的上下文窗口会导致在长指令中失去结构;现有的基于智能体的解决方案将任务分解为步骤,但会成倍增加模型调用次数,从而增加每次对话的成本。为了以低成本解决这一问题,作者构建了一个开源库,其中有限状态机(FSM)管理整体对话图,并控制在任何给定时刻向LLM传递哪些阶段的指令,使模型仅看到与当前阶段相关的指令,而非整个脚本。该架构由三个模块组成:跟踪对话图和用户状态的FSM模块、存储对话变量及其变更历史的vars_memory模块,以及协调对LLM调用的conversation_core模块。在每一轮中,模型必须响应一个固定的四字段合同——给用户的消息、转移信号、结构化的阶段结果和阶段总结——如果违反该合同(无效JSON、不存在的转移信号、结果缺失),系统会自动发送纠正性的后续请求。跨阶段转换的对话连续性通过OpenAI的响应API的previous_response_id链接来维护,这还通过更便宜的缓存读取定价降低了成本。整体对话脚本以YAML文件描述,详细阶段指令保存在单独的文件中,使底层引擎无需修改即可在不同聊天机器人领域复用。为应对手动编辑YAML的复杂性,作者创建了一个脚本,将YAML转换为draw.io图表以供人工审查,并提供了一个日志查看器工具,用于以类似聊天的格式检查测试对话,包括可展开的系统日志,在本地调试时实时更新。作为演示,代码库中包含了一个“分析师机器人”示例,帮助独立开发者确定项目需求;作者报告称,该机器人每次用户消息仅需约1.03次LLM调用,同时能可靠遵循脚本并收集结构化信息,尽管演示机器人的提示工程尚未打磨。
来源: Habr — хаб NLP —
原文
