3. 创建 Chatflow 实战


功能介绍

Chatflow 是 Dify 中功能最强大的对话式应用类型。与基础聊天助手不同,Chatflow 采用工作流画布的方式来编排对话逻辑,你可以通过拖拽节点和连线来定义 AI 的对话处理流程。这意味着你可以实现条件分支(根据用户意图走不同的处理路径)、多步骤推理(先检索知识库、再调用 LLM 生成回答)、以及复杂的数据处理逻辑。

Chatflow 的默认结构是"开始节点 → LLM 节点 → 直接回复",但你可以在其中插入知识检索、条件分支、代码执行等任意节点,构建出高度定制化的对话体验。Chatflow 特别适合需要精细控制对话流程的业务场景,比如多步骤的客服系统、问诊导诊流程、或者复杂的信息收集对话。

使用方法

image-20260407151103998

进入「工作室」,输入名称和描述,点击「创建」。

image-20260407151158580

创建完成后自动进入工作流画布。系统会自动创建默认的三节点结构:「用户输入」→「LLM」→「直接回复」。

image-20260407151840204

点击画布上的开始节点「用户输入」,在右侧面板中点击「+」添加两个输入字段。

image-20260407152014209

在弹出的「添加变量」对话框中配置:

  • 字段类型:文本(string)
  • 变量名称job_title
  • 显示名称:输入面试的工作
  • 最大长度:256
  • 必填:勾选

image-20260407152106433

再次点击「+」添加第二个变量:

  • 字段类型:下拉选项(string)
  • 变量名称difficulty
  • 显示名称:面试难度
  • 选项:添加三个选项——「初级」「中级」「高级」
  • 默认值:无默认值
  • 必填:勾选

image-20260407154516890

点击画布左侧工具栏的「+」按钮,在节点列表中找到「条件分支」节点并添加到画布。将开始节点的输出连接到条件分支节点的输入。

image-20260407154828598

再从节点面板中添加一个「LLM」节点(系统自动命名为「LLM 2」)。

image-20260407154706792

将「条件分支」节点的 IF 输出端连接到「LLM」节点,ELSE 输出端连接到「LLM 2」节点。

image-20260407154936689

点击「LLM」节点,在右侧面板中配置:

  1. 选择模型:选择 gpt-5.4。
  2. 编写 SYSTEM 提示词
你是一位专业的 {{用户输入.job_title}} 面试官。请根据 {{用户输入.difficulty}}(难度),先向候选人打个招呼,并提出第一个专业技术问题。
注意:只提一个问题,等待候选人回答。

注意:不要复制示例中的变量,输入"/"符号时会弹出变量选择菜单,选择用户输入的 job_titledifficulty变量即可将其引用到提示词中。

  1. 配置 USER 消息:引用 用户输入.query(用户的对话输入)和 用户输入.files(用户上传的文件)。
  2. 开启记忆:打开「记忆」开关,设置记忆窗口为内置模式,确保对话上下文能传递。

image-20260407160135963

点击「LLM 2」节点,在右侧面板中配置:

  1. 选择模型:选择 gpt-5.4。
  2. 编写 SYSTEM 提示词
你正在面试一位 {{用户输入.job_title}} 。根据之前的对话历史和候选人最新回答:{{用户输入.query}}
简要评价候选人上一个回答的准确性(1-10分)。
根据回答内容,进行深度追问,或者切换到下一个技能点的考核。

注意:不要复制示例中的变量,输入"/"符号时会弹出变量选择菜单,选择用户输入的 job_titlequery变量即可将其引用到提示词中。

  1. 配置 USER 消息:同样引用 {{用户输入.query}}{{用户输入.files}}
  2. 开启记忆:打开「记忆」开关并设置记忆窗口大小为 100 轮,确保面试过程中的所有对话历史都能被引用。

image-20260407161606982

点击「条件分支」节点,在右侧面板中配置条件:

  • 条件sys.dialogue_count 等于 1
  • IF 分支:当对话轮次等于 1 时(即首轮对话),流程走「LLM」节点,提出第一个面试问题。
  • ELSE 分支:后续所有对话轮次走「LLM 2」节点,对用户的回答进行评价并继续追问。

sys.dialogue_count 是 Chatflow 的内置系统变量,记录当前对话的轮次数。利用它可以区分首次交互和后续交互,实现不同的处理逻辑。

image-20260407161627237

将「LLM」节点和「LLM 2」节点的输出端口都连接到「直接回复」节点。

image-20260407161642917

点击「直接回复」节点,在「回复」输入框中输入"/",选择「LLM」节点的text 和「LLM 2」节点的 text变量。

image-20260407161703943

点击画布右上角的「预览」按钮,在弹出的对话窗口中进行测试。

image-20260407162137313

测试无误后,点击右上角「发布」按钮上线。

image-20260407162220775

发布后的应用可以在「探索」界面的左侧边栏使用。

与聊天助手的区别

对比维度聊天助手Chatflow
编排方式表单式配置可视化工作流画布
逻辑复杂度简单线性对话支持条件分支、循环、并行处理
知识库集成直接关联通过「知识检索」节点灵活集成
自定义程度较低极高,可自由组合各种节点
学习成本中等
适合场景简单问答、通用对话复杂业务流程、精细化对话控制

使用技巧

  • 设计 Chatflow 前先画好流程图,明确用户的可能路径和分支条件。
  • 善用「问题分类器」节点对用户输入进行意图识别,将不同类型的问题路由到不同的处理分支。
  • LLM 节点支持开启「记忆」功能,可以保留对话历史上下文。记忆窗口默认为 10 轮,可以根据需要调整。
  • 在 LLM 节点的提示词中,可以引用「知识检索」节点的输出作为上下文,实现 RAG 增强。
  • 复杂的 Chatflow 建议使用注释节点标注每个分支的用途,方便团队协作和后续维护。

示例

示例一:电商售后客服 Chatflow

流程设计:
开始(用户输入)
    → 问题分类器(分类为:退换货、物流查询、产品咨询、投诉)
        → 退换货分支:知识检索(退换货政策文档)→ LLM(生成退换货指引)→ 直接回复
        → 物流查询分支:HTTP 请求(查询物流 API)→ LLM(整理物流信息)→ 直接回复
        → 产品咨询分支:知识检索(产品文档)→ LLM(回答产品问题)→ 直接回复
        → 投诉分支:LLM(安抚用户情绪)→ 人工介入 → 直接回复

示例二:智能问诊助手 Chatflow

流程设计:
开始(用户输入症状描述)
    → LLM(提取症状关键词并分类严重程度)
    → 条件分支(判断是否紧急)
        → 紧急:直接回复(建议立即就医 + 120 电话)
        → 非紧急:知识检索(常见症状与科室对照表)
            → LLM(推荐就诊科室和注意事项)
            → 直接回复

示例三:多语言客服路由 Chatflow

流程设计:
开始(用户输入)
    → LLM(检测输入语言:中文、英文、日文、其他)
    → 条件分支(按语言路由)
        → 中文:LLM(中文客服提示词)→ 直接回复
        → 英文:LLM(英文客服提示词)→ 直接回复
        → 日文:LLM(日文客服提示词)→ 直接回复
        → 其他:LLM(默认英文回复 + 提示切换语言)→ 直接回复

示例四:文档 QA 增强型 Chatflow

流程设计:
开始(用户输入)
    → 知识检索(从产品文档知识库中检索相关片段)
    → 条件分支(判断检索结果是否为空)
        → 有检索结果:LLM(基于检索内容回答用户问题,提示词中引用 @知识检索.result)→ 直接回复
        → 无检索结果:LLM(告知用户该问题不在已有资料范围内,提供通用性建议)→ 直接回复

示例五:面试模拟 Chatflow

流程设计:
开始(用户输入目标岗位和简历信息)
    → LLM(根据岗位生成面试问题,每次只问一个问题)
    → 直接回复(输出面试问题)
    ↺ 用户回答后,LLM(评价用户回答,给出改进建议,然后抛出下一个问题)
    → 循环直到完成 5 个问题
    → LLM(生成面试总结报告:评分、优势、改进建议)
    → 直接回复

评论

0
还没有评论,来写第一条吧