系统需通过多轮交互实现订单查询等意图的自动澄清:先识别缺失字段并暂存会话变量,再动态生成口语化提问,捕获用户补全后自动重试识别,直至所有必填字段齐全。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

当用户输入“我想查订单”却没说订单号,或“账号登不上”没提游戏名时,系统必须主动追问而非直接报错——这需要工作流能识别信息缺失、触发澄清话术、暂存已有字段、等待用户补全后再继续流程。
定义意图识别的结构化输出规范
进入Dify「工作室」→新建Chatflow应用→在首个Agent节点的「指令」页中,粘贴以下Prompt:
你是一名游戏客服意图识别专家。请严格按JSON格式输出,只包含四个字段:intent(字符串,取值为order_query、login_failure、item_missing、payment_refund之一)、entities(对象,含order_id、game_name、item_id、refund_amount等可选键)、missing_fields(字符串数组,列出当前缺失的必填字段,如["order_id"])、is_complete(布尔值,仅当所有必填字段齐全时为true)。
【missing_fields必须为空数组[]或明确列出字段名,不能写null或省略】否则后续条件分支无法正确判断是否需要澄清。
配置多轮状态保持与字段暂存
在意图识别Agent节点后,立即添加一个「变量赋值」节点:
设置session.intent = {{agent_1.output.intent}};session.missing_fields = {{agent_1.output.missing_fields}};session.entities = {{agent_1.output.entities}}。
这一步把识别结果存入会话变量,确保后续轮次能读取上一轮提取的game_name或partial order_id,避免每次重新解析。
注意:不要用普通变量(如var.xxx),会话变量(session.xxx)才能跨轮次存活。
构建澄清话术生成与条件路由
方法一:用条件分支+预设话术
拖入「条件分支」节点,设置判断条件为{{session.missing_fields.length > 0}}。
真分支接一个「文本生成」节点,Prompt写:“请用户提供{{session.missing_fields[0]}}。例如:‘我的订单号是123456’或‘我玩的是《幻界Online》’。”
假分支直接连向下一级知识检索Agent。
方法二:用独立Agent动态生成
真分支接一个新Agent节点,指令为:“你是一个客服澄清助手。已知用户意图是{{session.intent}},缺失字段是{{session.missing_fields}}。请用口语化短句向用户提问,只问一个字段,不解释原因,不带编号,结尾用句号。示例:‘方便提供一下订单号吗?’”
这一步生成的话术更自然,但需额外调试提示词避免生成冗长句子。
实现用户补全后的自动续流
第一步:在澄清回复节点后,添加「用户输入捕获」节点,勾选「等待用户下一条消息」。
第二步:该节点输出接入第二个意图分析Agent(复用同一套Prompt模板),但输入内容改为{{user_input}} + “上下文:{{session.intent}},已提供{{session.entities}},仍缺{{session.missing_fields}}。”
第三步:此Agent输出再次写入session变量,覆盖原有值。
第四步:再接一次相同条件分支,若missing_fields为空则走正向流程,否则循环澄清。
这四步构成闭环,用户补全任意字段后,系统自动重试识别,无需人工干预或重启对话。











