Dify 条件分支怎么用?让客户咨询、报价和人工审核自动分流

Dify 条件分支工作流将客户咨询、报价和人工审核自动分流的示意图
内容摘要

Dify 条件分支适合把客户咨询、报价、售后和人工审核分开处理。本文用真实交付场景讲清 If-Else 节点、变量设计、分流规则和上线检查,帮助你做出更稳定的 AI 工作流。

很多人搭 Dify 工作流时,一开始会把所有用户问题都丢给同一个 LLM 节点:客户问价格、问售后、问合作、问投诉,最后都走同一套提示词。这样做上线很快,但一到真实使用就容易出问题:简单问题回答太重,重要线索没有提醒人工,敏感问题也没有兜底。

Dify 条件分支的价值,不是让流程图看起来更复杂,而是把不同意图的问题送到不同路径。官方文档里,If-Else 节点的作用是根据变量和条件,把工作流路由到 IF、ELIF 或 ELSE 分支;实际交付时,我们要做的是先把业务分流规则想清楚,再决定节点怎么连。

如果你还没有搭过完整工作流,可以先看 AI智能体与自动化专题AI工具评测专题。如果已经用过 Dify 知识库、变量或 HTTP 请求节点,本文就是下一步:让流程开始具备稳定的判断能力。

Dify 条件分支适合解决什么问题

条件分支最适合处理“同一个入口,不同处理方式”的场景。例如一个本地商家客服入口,用户可能输入:

  • “你们营业时间是几点?”这是常规问答,直接查知识库回答即可。
  • “我想做一个月内容代运营,多少钱?”这是销售线索,应该提取预算、行业、联系方式。
  • “上次服务没有按约定完成。”这是售后或投诉,最好进入人工审核。
  • “帮我批量导出客户手机号。”这类请求可能涉及隐私或权限,应该拒绝或转人工。

如果这四类问题都走同一个提示词,LLM 可能会勉强回答,但业务动作会混在一起。条件分支的目标,是把“回答问题”和“决定下一步”拆开:先识别变量,再按规则分流。

先设计变量,不要先拖节点

很多 Dify 工作流不稳定,是因为变量设计太随意。Dify 的工作流变量可以来自用户输入、LLM 输出、API 返回或前面节点的结果,If-Else 节点再根据这些变量做判断。也就是说,条件分支不是凭空判断,它依赖前面节点给出的结构化信息。

一个客户咨询分流工作流,建议先准备这些变量:

  • intent_type:用户意图,例如 faq、quote、after_sales、complaint、unsafe。
  • urgency:紧急程度,例如 low、normal、high。
  • has_contact:是否留下手机号、微信、邮箱等联系方式。
  • budget_range:报价场景下的预算区间。
  • manual_review_reason:为什么需要人工确认。

这些变量可以由 LLM 节点先做分类,也可以通过表单字段、Webhook、HTTP 请求节点传入。老达建议新手先用“少量枚举值”开始,不要一上来让模型输出一大段自然语言解释。条件分支判断的是稳定值,不是作文。

一个可交付的分流结构

下面这个结构适合给本地商家、小团队知识库、AI客服副业项目做第一版交付:

  1. 开始节点收集用户问题、来源渠道和联系方式。
  2. LLM 分类节点输出 intent_typeurgencyhas_contact
  3. If-Else 节点按意图分流。
  4. FAQ 分支走知识库检索和标准回答。
  5. 报价分支走需求补全、预算判断和线索记录。
  6. 售后或投诉分支生成摘要,进入人工审核。
  7. 无法识别或高风险请求进入 ELSE 兜底路径。

这里有一个关键点:ELSE 不是失败路径,而是兜底路径。真实客户不会按你的表单说话,也不会每次都输入完整信息。只要没有命中明确条件,就应该给出保守回答,例如“我先帮你记录问题,请补充联系方式或等待人工处理”。

If、ELIF 和 ELSE 怎么分配

Dify If-Else 节点支持 IF、多个 ELIF 和 ELSE。实际使用时,不建议把所有条件都写成并列判断,而应该按业务优先级排序。

我的常用顺序是:

  • 第一层先拦截风险:隐私、越权、投诉、需要人工确认的请求。
  • 第二层处理高价值线索:报价、合作、预约、采购。
  • 第三层处理标准问答:营业时间、服务范围、常见问题。
  • 最后用 ELSE 承接模糊问题,要求用户补充信息。

这样做的好处是,重要问题不会被普通问答吞掉。比如用户说“你们上次没交付好,这次还想继续做要多少钱”,它同时包含投诉和报价。如果你先判断 quote,可能会直接进入报价分支;如果先判断 complaint 或 manual_review,就能把风险先交给人工。

条件不要写得太聪明

条件分支最常见的坑,是试图用一句复杂条件解决所有情况。例如:

  • intent_type contains 报价 并且 budget_range is not empty 并且 has_contact equals true
  • urgency equals highmanual_review_reason is not emptyintent_type contains 投诉

这些条件不是不能用,但第一版最好保持可读。一个条件只承担一个判断,分支命名清楚,比把所有规则塞进一个节点更容易维护。客户后续改需求时,你也能快速解释“为什么这条咨询走了人工审核”。

如果你正在做 Dify 知识库问答,可以结合 Dify 知识库怎么搭Dify 工作流变量怎么设计 两篇文章一起看。知识库解决“答什么”,变量和条件分支解决“该走哪条路”。

客户咨询场景示例

假设你给一家本地摄影工作室做 AI 客服,用户从网站表单进入 Dify。第一版可以这样配置:

  • 用户输入:问题内容、服务类型、预计日期、联系方式。
  • 分类节点:判断是套餐咨询、档期确认、售后问题还是其他。
  • 套餐咨询分支:检索价格表和案例,回答后提醒留下日期。
  • 档期确认分支:通过 HTTP 请求查询可预约日期,必要时转人工。
  • 售后问题分支:生成问题摘要,不直接承诺赔偿,提醒人工跟进。
  • 其他分支:给出简短回复,并引导用户补充服务类型和时间。

这类流程不需要一开始就做成庞大的 Agent。先把三四个高频分支跑通,再逐步增加外部 API、消息通知和人工审核。关于外部接口接入,可以继续看 Dify HTTP 请求节点教程;如果后面要和自动化工具组合,可以看 Dify 和 n8n 怎么一起用

上线前怎么测试条件分支

Dify 条件分支上线前,至少要做四类测试。

第一类是正常命中测试。每个分支至少准备 3 条真实问题,确认它能进入正确路径。不要只测“我要报价”这种标准句,要加入口语表达,例如“做一个月大概要花多少”“能不能先给我个套餐”。

第二类是边界测试。让问题同时包含两个意图,观察优先级是否符合业务规则。比如“我要投诉,也想问续费价格”,应该先进入人工审核,而不是自动报价。

第三类是缺字段测试。用户没有联系方式、没有预算、没有具体服务类型时,工作流应该引导补充,而不是编造答案。

第四类是异常测试。分类节点输出空值、API 超时、知识库没有召回结果时,ELSE 路径要能给出稳妥回复。AI 自动化要交付给客户,最怕的不是分支少,而是异常时没有人接住。

交付时给客户看的检查清单

如果你把 Dify 条件分支作为 AI 自动化项目交付,建议附上这份清单:

  • 每个分支的业务含义是否写清楚。
  • 每个条件使用的变量是否有来源节点。
  • ELSE 路径是否有兜底话术。
  • 人工审核分支是否包含摘要、原始问题和联系方式。
  • 高风险请求是否不会直接执行敏感动作。
  • 客户是否知道后续新增分支的维护成本。

这也是 AI 副业项目和普通工具演示的区别。演示只要跑通一次,交付要保证客户明天、下周、下个月都能理解和维护。想继续做成可收费服务,可以参考 AI副业专题 里的交付思路。

老达建议:先做少分支,再做强分支

很多人一开始搭 Dify,会忍不住把流程图做得很大:十几个分类、几十条条件、多个外部系统。我的建议相反,第一版只做 3 到 5 个分支,但每个分支都要能解释、能测试、能兜底。

一个稳定的 Dify 条件分支工作流,应该让你很清楚地回答三个问题:这个变量从哪里来?这个条件为什么这样判断?没有命中时谁来接住?只要这三个问题能回答清楚,工作流就比“全靠一个大提示词”的方案可靠很多。

最后再补一句:条件分支不是替代 LLM,而是约束 LLM。让模型负责理解语义,让规则负责业务路径,这才是 Dify 工作流更适合交付的用法。

发表评论

您的电子邮箱地址不会被公开,必填项已标注 *