1. 什么是Dify中的Chatflow与Workflow
Dify作为新一代智能体开发平台,其核心设计理念是将复杂AI能力封装成可拖拽的模块化组件。在这个框架下,Workflow和Chatflow是两种最常用的应用构建模式,它们分别对应着不同的交互场景和技术实现路径。
Workflow(工作流)更像是传统意义上的自动化流程,它处理的是单次触发、线性执行的任务。比如用户提交一个文档翻译请求,系统接收输入→调用翻译模型→返回结果,整个过程一气呵成。这种模式适合客服工单处理、批量数据清洗等"一问一答"式场景。
而Chatflow(对话流)则是专为多轮对话设计的特殊工作流类型。想象一个电商导购机器人:用户问"推荐笔记本电脑",机器人反问"您的预算是多少",接着根据回答继续追问"主要用途是办公还是游戏"——这种需要记忆上下文、动态调整对话路径的场景,就是Chatflow的用武之地。其核心技术在于会话变量(Conversation Variables)的维护,使得对话状态能在多轮交互中持续保存。
关键区别:Workflow每次执行都是独立事务,而Chatflow会维护对话的"记忆",这是两者最本质的差异。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Chatflow的运作机制与典型应用
2.1 对话状态的持久化实现
Chatflow通过四个核心变量维系对话上下文:
sys.conversation_id:会话唯一标识,保证同一对话窗口的多次交互归属同一会话sys.dialogue_count:对话轮次计数器,可用于实现"第3次提问时触发优惠推荐"等逻辑sys.user_id:用户身份标识,实现多用户对话隔离- 自定义会话变量:开发者可定义的持久化字段(如购物车商品列表)
这些变量通过KV存储实现持久化,典型的技术栈组合是Redis+MySQL。当用户发起新一轮对话时,系统会先加载该conversation_id下的所有变量,再执行当前轮次的流程。
2.2 分支逻辑的智能控制
Chatflow支持通过条件节点实现动态路径选择。例如在机票预订场景中:
python复制if sys.dialogue_count == 1:
# 第一轮询问目的地
return "请问您要飞往哪个城市?"
elif sys.dialogu
