必须用条件分支对意图识别结果做二次校验与动态纠偏:先用问题分类器粗筛主意图,再用LLM节点通过JSON或逗号分隔法提取完整意图列表,最后通过三重条件分支判断模糊性、置信度和意图覆盖,确保多意图准确识别与流程正确分流。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Dify工作流中让AI客服准确识别用户一句话里的多个意图(比如“查交期+要开发票”),又避免因单次LLM调用置信度低或关键词误匹配导致流程走错,必须用条件分支对意图识别结果做二次校验与动态纠偏。
先用问题分类器粗筛主意图
拖入「问题分类器」节点,输入变量选 【sys.query】;模型选 GPT-4o-mini 或 DeepSeek-V3,温度设为 0.2;添加三个基础意图:查交期(关键词:交期、多久、什么时候)、开发票(关键词:发票、开票、税点)、其他(兜底)。
这一步只抓最可能的主意图,不强求覆盖所有组合,因为问题分类器本质是单标签分类,强行塞多意图会稀释置信度。
再用LLM节点提取完整意图列表
方法一:结构化JSON输出法
拖入LLM节点,粘贴以下提示词:
你是一个意图解析器,仅输出严格JSON。识别用户问题中所有明确表达的业务意图,忽略猜测和隐含需求。候选意图:["query_delivery", "issue_invoice", "check_stock", "create_order"]。用户输入:{{sys.query}}。输出格式:{"intents": ["query_delivery"], "confidence_avg": 0.87, "ambiguous": false}
开启结构化输出,JSON Schema 必须包含 intents(字符串数组)、confidence_avg(0–1浮点数)、ambiguous(布尔值)。【intents 字段必须是数组,不能是单个字符串,否则后续条件分支无法遍历】
方法二:逗号分隔文本法(轻量级备选)
用同样LLM节点,提示词改为:“列出所有可确认的意图,用英文逗号分隔,不要解释,不要标点,不要空格。例如:query_delivery,issue_invoice”。输出类型选“文本”,后续用 {{llm_output}}.split(',') 提取数组。
用条件分支做三重纠偏判断
第一步:检查是否含模糊标记
添加条件分支节点,首条规则表达式填:{{llm_node.ambiguous}} === true → 连接至「人工兜底节点」。这步拦截掉LLM自己都拿不准的输入,避免错误分流。
第二步:验证主意图置信度是否可靠
第二条规则表达式填:{{llm_node.confidence_avg}}
第三步:按意图组合路由到不同处理链
第三条规则表达式填:{{llm_node.intents}} contains 'query_delivery' && {{llm_node.intents}} contains 'issue_invoice' → 连接至「交期+发票并行处理节点」。注意这里必须用 contains 而不是 ==,因为 intents 是数组。
第四步:设置默认分支
不填任何表达式,直接设为 Default Branch,连接至「标准单意图处理链」。这是防止前面三条规则都没命中时流程中断的最后保险。


















