3.将处理结果process_result转换成ChatResponse
action
2.调用service处理用户消息,获取process_result
2.调用DialogueEngine处理消息,接收process_result
TurnPlanner组件职责:根据当前对话上下文,预测本轮用户消息应该进入哪个处理轨道,并生成结构化的 TurnPlan。接收参数:state当前用户完整对话状态、系统支持的业务流程集合、系统支持的知识咨询意图输出:TurnPlan 包含三个可能的轨道主要步骤:将当前消息、历史对话、活动任务、暂停任务及聚焦对象等信息整理到提示词中,调用大模型判断本轮属于任务、知识咨询还是闲聊,并生成相应的任务命令或知识意图;最后将模型输出的 JSON 转换为 TurnPlan,交给 TurnPlanValidator 校验。记忆要点:整理上下文 → 调用模型规划 → 解析并返回计划,本身不执行计划。
对象消息1.将对象消息中的对象设置到state的focused_object属性2.尝试生成收集槽位命令3.判断是否生成了槽位命令 若生成了命令,则执行任务轨道 若没有生成命令,则澄清轨道
{ \"task\
true
DialogueEngine
处理槽位收集
返回ActionCall(action_listen)
找到当前的step
3.更新DialogueState的持久化状态
ChitchatHandler闲聊轨道获取当前用户消息,当前会话历史。加载闲聊提示词,调用大模型生成Bot机器人消息返回Engine
选择当前上下文
5.返回处理结果:ProcessResult
TaskHandle任务轨道
文本消息1.预测轮次计划 TurnPlanner2.验证轮次计划 TurnPlanValidator3.判断计划是否有效 如果轮次计划有效,则根据计划进入到对应的处理轨道 TaskHandler/KnowledgeHandler/ChitChatHandler 如果轮次计划无效,则进行澄清 ClarifyResponder
→ 清理任务 → 返回 None,继续检查是否还有其他任务
collect
FastAPI
1.创建或回复会话2.创建本轮对话
KnowledgeHandler知识问答轨道
判断action_name是否是action_listen
4.返回消息处理结果,process_result
用户消息text/object
跳到next_step
外层循环:外层循环接收ActionCall,判断action_name是action_listen,ActionRunner根据action_name查找Action。调用Action.run。得到ActionResult
CommandProcessor处理任务命令,修改任务状态。传入参数:commands本轮处理命令列表 state 当前用户的对话状态 flows 已加载的流程定义集合
1.将chat_request构建成UserMessage实例
1.根据当前用户id,查询用户的对话状态(聊天记录)
澄清轨道当系统无法确定用户真实意图,或者当前对象无法和已有任务匹配时,生成一条澄清问题,请用户补充信息。接收state和reason根据reason生成建议澄清内容,获取当前聚焦对象,构建历史会话,格式化当前用户消息,调用大模型根据提示词润色澄清语句,返回机器人消息
生成的task命令可以是一条或多条,根据用户问题给到提示词,大模型生成决定
收集message
判断是否有上下文
end
通过actionRunner执行action
4.响应数据ChatResponse
3.处理消息
→ 槽位已有值时返回 None,继续找下一步 → 槽位缺失时启动询问流程,继续推进到 action_response
写回slot_updates
FlowExecutor的run_task方法
Step类型判断
{ \"task\": { \"commands\": [ { \"command\": \"start_flow\
TurnPlanValidator 对 TurnPlanner 生成的 TurnPlan 做结构和业务前置校验,判断本轮消息能否进入 Task、Knowledge 或 Chitchat 处理轨道。 统计当前激活了哪些轨道:task,knowledge,chitchat 0个轨道 校验失败 多个轨道 校验失败 只有1个轨道 : task 校验任务计划 knowledge:校验知识计划 chitchat:直接通过
FastAPI /api/chat
传入turn_plan.task.commands执行命令和state
调用内层循环advance_until_action,返回ActionCall
判断是text消息还是object消息
大模型生成的三个轨道指令JSON结构样式
→ 返回 ActionCall → 内层循环停止,把动作交给外层循环执行
内层循环:内层循环读取流程步骤,生成ActionCall
4.回填pending_turn,并提交本轮对话
有
结束执行,返回message
根据意图寻找知识来源
没有
DialogueService
TurnPlanValidationResult的valid是否为true
返回ActionCall
构建提示词,调用大模型生成响应
start
调用知识来源获取知识:1.根据provider_id获取实例2.调用knowledgeProvider实例
结束当前flow