Chatflow vs Workflow
graph TB
subgraph "Workflow (单次执行)"
W1[Start] --> W2[处理] --> W3[End]
end
subgraph "Chatflow (多轮对话)"
C1[用户消息] --> C2[Memory 加载历史]
C2 --> C3[处理 + 上下文]
C3 --> C4[Answer 回复]
C4 -.->|下一轮| C1
end
| 特性 |
Workflow |
Chatflow |
| 触发方式 |
单次调用 |
对话消息 |
| 会话记忆 |
❌ |
✅ 内置 Memory |
| 系统变量 |
4个 |
7个 (含会话级) |
| 适用场景 |
数据处理管线 |
聊天机器人、客服 |
Chatflow 独有系统变量
# Workflow 共有
sys.user_id # 用户标识
sys.app_id # 应用 ID
sys.workflow_id # 工作流 ID
sys.workflow_run_id # 本次运行 ID
# Chatflow 独有
sys.conversation_id # 会话 ID (多轮对话核心)
sys.dialogue_count # 当前对话轮次 (从 1 开始)
sys.timestamp # 当前时间戳
Memory 节点配置
sequenceDiagram
participant User as 用户
participant Memory as Memory 管理器
participant LLM as LLM 节点
User->>Memory: 新消息 "如何部署?"
Memory->>Memory: 加载最近 N 轮历史
Memory->>LLM: [历史] + [新消息]
LLM->>User: "你可以使用 Docker..."
Memory->>Memory: 保存本轮到 Memory
User->>Memory: "那 Kubernetes 呢?"
Memory->>Memory: 加载含上一轮的历史
Memory->>LLM: [包含 Docker 讨论的历史] + "那 Kubernetes 呢?"
LLM->>User: "除了 Docker,你也可以用 Helm Chart..."Memory 窗口策略
# 滑动窗口: 保留最近 N 轮
memory_config = {
"window_size": 10, # 保留最近 10 轮
"max_token_limit": 4000, # Token 上限
"strategy": "sliding_window"
}
# 当历史超出 Token 限制时,自动截断最早的对话
实战:智能导购 Chatflow
graph TB
Msg[用户消息] --> QC[Question Classifier]
QC -->|商品查询| KB[Knowledge Retrieval: 商品库]
QC -->|价格咨询| HTTP[HTTP: 价格API]
QC -->|售后服务| LLM1[LLM: 售后话术]
QC -->|闲聊| LLM2[LLM: 友好对话]
KB --> LLM3[LLM: 生成推荐]
HTTP --> LLM3
LLM1 --> Answer[Answer 回复]
LLM2 --> Answer
LLM3 --> AnswerAnswer 节点配置
# Answer 节点支持 Markdown 格式化输出
"""
根据您的需求,为您推荐以下商品:
{{#llm_3.text#}}
💡 **温馨提示**:
- 当前对话轮次: {{#sys.dialogue_count#}}
- 如需更多帮助,请随时提问!
"""