mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-06-02 12:05:54 +00:00
426 lines
11 KiB
Markdown
426 lines
11 KiB
Markdown
# Workflow 用户指南
|
||
|
||
本文档帮助您了解和使用 LangBot 的 Workflow(工作流)功能,通过可视化方式构建自动化的对话处理流程。
|
||
|
||
## 目录
|
||
|
||
- [功能介绍](#功能介绍)
|
||
- [快速入门](#快速入门)
|
||
- [节点类型说明](#节点类型说明)
|
||
- [编辑器使用指南](#编辑器使用指南)
|
||
- [调试功能](#调试功能)
|
||
- [常见问题解答](#常见问题解答)
|
||
|
||
---
|
||
|
||
## 功能介绍
|
||
|
||
### 什么是 Workflow?
|
||
|
||
Workflow(工作流)是 LangBot 提供的可视化自动化编排系统。通过拖拽节点、连接边的方式,您可以:
|
||
|
||
- 📝 **构建复杂的对话流程**:使用条件分支、循环等控制节点
|
||
- 🤖 **调用 AI 能力**:集成 LLM、知识库检索、参数提取
|
||
- 🔗 **连接外部服务**:集成 Dify、n8n、Coze 等平台
|
||
- ⚡ **自动化任务执行**:消息触发、定时触发、Webhook 触发
|
||
|
||
### Workflow vs Pipeline
|
||
|
||
| 对比项 | Pipeline | Workflow |
|
||
|-------|----------|----------|
|
||
| 配置方式 | 表单配置 | 可视化拖拽 |
|
||
| 流程控制 | 线性执行 | 支持分支、循环、并行 |
|
||
| 适用场景 | 简单对话 | 复杂流程 |
|
||
| 学习曲线 | 低 | 中等 |
|
||
|
||
---
|
||
|
||
## 快速入门
|
||
|
||
### 第一步:创建 Workflow
|
||
|
||
1. 在侧边栏点击 **Workflow** 进入工作流列表
|
||
2. 点击右上角 **创建工作流** 按钮
|
||
3. 填写基本信息:
|
||
- **名称**:给工作流起一个描述性的名字
|
||
- **描述**:可选,说明工作流的用途
|
||
- **图标**:选择一个 emoji 作为标识
|
||
|
||
### 第二步:添加节点
|
||
|
||
进入编辑器后,左侧是节点面板,中间是画布区域,右侧是属性面板。
|
||
|
||
1. **添加触发节点**:从左侧面板拖拽一个"消息触发"节点到画布
|
||
2. **添加 AI 节点**:拖拽一个"LLM 调用"节点
|
||
3. **添加回复节点**:拖拽一个"回复消息"节点
|
||
|
||
### 第三步:连接节点
|
||
|
||
1. 将鼠标悬停在触发节点的输出端口(右侧小圆点)
|
||
2. 按住鼠标拖拽到 LLM 节点的输入端口(左侧小圆点)
|
||
3. 同样方式连接 LLM 节点和回复节点
|
||
|
||
```
|
||
[消息触发] ──▶ [LLM 调用] ──▶ [回复消息]
|
||
```
|
||
|
||
### 第四步:配置节点
|
||
|
||
点击 LLM 调用节点,在右侧属性面板配置:
|
||
|
||
- **运行方式**:选择"本地 Agent"
|
||
- **系统提示词**:描述 AI 的角色和行为
|
||
- **模型**:选择要使用的 LLM 模型
|
||
|
||
点击回复消息节点配置:
|
||
|
||
- **消息内容**:设置为 `{{nodes.llm_call.outputs.response}}`(引用 LLM 输出)
|
||
|
||
### 第五步:保存并绑定
|
||
|
||
1. 点击工具栏的 **保存** 按钮
|
||
2. 返回 Bot 配置页面
|
||
3. 在 Bot 的绑定设置中选择 **Workflow**,然后选择刚创建的工作流
|
||
|
||
恭喜!您已经创建了第一个 Workflow。
|
||
|
||
---
|
||
|
||
## 节点类型说明
|
||
|
||
### 触发节点 (Trigger)
|
||
|
||
触发节点是工作流的入口,定义何时启动执行。
|
||
|
||
| 节点 | 说明 | 输出 |
|
||
|-----|------|------|
|
||
| 消息触发 | 收到消息时触发 | message, sender_id, platform |
|
||
| 定时触发 | 按 Cron 表达式定时触发 | timestamp |
|
||
| Webhook 触发 | 收到 HTTP 请求时触发 | request_body, headers |
|
||
| 事件触发 | 系统事件触发 | event_type, event_data |
|
||
|
||
**消息触发配置示例**:
|
||
|
||
```yaml
|
||
触发条件:
|
||
- 关键词匹配: ["帮助", "help"]
|
||
- 平台: ["wechat", "qq"]
|
||
```
|
||
|
||
### AI 节点
|
||
|
||
AI 节点用于调用各种 AI 能力。
|
||
|
||
| 节点 | 说明 | 典型用途 |
|
||
|-----|------|---------|
|
||
| LLM 调用 | 调用大语言模型 | 生成回复、理解意图 |
|
||
| 问题分类器 | 对用户问题分类 | 路由到不同处理分支 |
|
||
| 参数提取器 | 从文本提取结构化数据 | 提取订单号、日期等 |
|
||
| 知识库检索 | 查询知识库 | RAG 增强回复 |
|
||
|
||
**LLM 调用配置示例**:
|
||
|
||
```yaml
|
||
运行方式: 本地 Agent
|
||
模型: gpt-4
|
||
系统提示词: |
|
||
你是一个友好的客服助手。
|
||
请根据用户的问题提供帮助。
|
||
温度: 0.7
|
||
最大 Token 数: 2000
|
||
```
|
||
|
||
### 处理节点 (Process)
|
||
|
||
处理节点用于数据处理和外部调用。
|
||
|
||
| 节点 | 说明 | 典型用途 |
|
||
|-----|------|---------|
|
||
| 代码执行 | 执行 Python/JavaScript 代码 | 数据处理、格式转换 |
|
||
| HTTP 请求 | 发送 HTTP 请求 | 调用外部 API |
|
||
| 数据转换 | JSON/模板转换 | 数据格式化 |
|
||
|
||
**HTTP 请求配置示例**:
|
||
|
||
```yaml
|
||
URL: https://api.example.com/data
|
||
方法: POST
|
||
请求头:
|
||
Content-Type: application/json
|
||
Authorization: Bearer {{variables.api_key}}
|
||
请求体: |
|
||
{"query": "{{message.content}}"}
|
||
```
|
||
|
||
### 控制节点 (Control)
|
||
|
||
控制节点用于流程控制。
|
||
|
||
| 节点 | 说明 | 用途 |
|
||
|-----|------|------|
|
||
| 条件分支 | 二选一分支 | if-else 逻辑 |
|
||
| 多路分支 | 多选一分支 | switch-case 逻辑 |
|
||
| 循环 | 遍历数组 | 批量处理 |
|
||
| 并行 | 同时执行多分支 | 并发处理 |
|
||
| 等待 | 暂停执行 | 延时处理 |
|
||
| 合并 | 合并多个分支 | 汇总结果 |
|
||
|
||
**条件分支配置示例**:
|
||
|
||
```yaml
|
||
条件表达式: "{{nodes.classifier.outputs.category}}" == "complaint"
|
||
真分支: 投诉处理
|
||
假分支: 普通咨询
|
||
```
|
||
|
||
### 动作节点 (Action)
|
||
|
||
动作节点执行具体操作。
|
||
|
||
| 节点 | 说明 | 用途 |
|
||
|-----|------|------|
|
||
| 发送消息 | 主动发送消息 | 通知、推送 |
|
||
| 回复消息 | 回复当前消息 | 对话回复 |
|
||
| 存储数据 | 保存数据到存储 | 持久化 |
|
||
| 调用 Pipeline | 调用现有 Pipeline | 复用现有流程 |
|
||
|
||
**回复消息配置示例**:
|
||
|
||
```yaml
|
||
消息内容: |
|
||
感谢您的咨询!
|
||
|
||
{{nodes.llm_call.outputs.response}}
|
||
|
||
如有其他问题,随时联系我。
|
||
```
|
||
|
||
### 集成节点 (Integration)
|
||
|
||
集成节点连接外部平台。
|
||
|
||
| 节点 | 说明 | 平台 |
|
||
|-----|------|------|
|
||
| Dify 工作流 | 调用 Dify 应用 | Dify |
|
||
| Dify 知识库 | 查询 Dify 知识库 | Dify |
|
||
| n8n 工作流 | 调用 n8n 流程 | n8n |
|
||
| Langflow | 调用 Langflow 流程 | Langflow |
|
||
| Coze Bot | 调用扣子 Bot | Coze |
|
||
|
||
**Dify 工作流配置示例**:
|
||
|
||
```yaml
|
||
API 地址: https://api.dify.ai/v1
|
||
API Key: sk-xxxxx
|
||
应用类型: workflow
|
||
同步对话历史: true
|
||
```
|
||
|
||
---
|
||
|
||
## 编辑器使用指南
|
||
|
||
### 画布操作
|
||
|
||
| 操作 | 方式 |
|
||
|-----|------|
|
||
| 平移画布 | 按住鼠标中键/空格+左键 拖拽 |
|
||
| 缩放画布 | 鼠标滚轮 / 工具栏按钮 |
|
||
| 框选多个节点 | 按住 Shift + 拖拽框选 |
|
||
| 适应视图 | 点击工具栏"适应"按钮 |
|
||
|
||
### 节点操作
|
||
|
||
| 操作 | 方式 |
|
||
|-----|------|
|
||
| 添加节点 | 从左侧面板拖拽到画布 |
|
||
| 移动节点 | 点击节点拖拽 |
|
||
| 删除节点 | 选中后按 Delete / 点击工具栏删除 |
|
||
| 复制节点 | 选中后 Ctrl+C / 工具栏复制 |
|
||
| 粘贴节点 | Ctrl+V / 工具栏粘贴 |
|
||
|
||
### 连接操作
|
||
|
||
| 操作 | 方式 |
|
||
|-----|------|
|
||
| 创建连接 | 从输出端口拖拽到输入端口 |
|
||
| 删除连接 | 点击连接线后按 Delete |
|
||
| 选中连接 | 点击连接线 |
|
||
|
||
### 快捷键
|
||
|
||
| 快捷键 | 功能 |
|
||
|-------|------|
|
||
| Ctrl + Z | 撤销 |
|
||
| Ctrl + Shift + Z | 重做 |
|
||
| Ctrl + C | 复制 |
|
||
| Ctrl + V | 粘贴 |
|
||
| Delete | 删除选中 |
|
||
| Ctrl + S | 保存 |
|
||
|
||
### 工具栏功能
|
||
|
||
```
|
||
[撤销] [重做] | [放大] [缩小] [适应] | [复制] [粘贴] [删除] | [保存] [调试]
|
||
```
|
||
|
||
---
|
||
|
||
## 调试功能
|
||
|
||
### 启动调试
|
||
|
||
1. 点击工具栏的 **调试** 按钮
|
||
2. 在调试面板中配置初始数据:
|
||
- **输入消息**:模拟用户发送的消息
|
||
- **会话 ID**:可选,用于测试会话变量
|
||
- **变量**:设置初始变量值
|
||
|
||
3. 点击 **开始调试** 按钮
|
||
|
||
### 调试控制
|
||
|
||
| 按钮 | 功能 |
|
||
|-----|------|
|
||
| ▶️ 开始/继续 | 开始或继续执行 |
|
||
| ⏸️ 暂停 | 暂停执行 |
|
||
| ⏹️ 停止 | 停止执行 |
|
||
| ⏭️ 单步 | 执行下一个节点 |
|
||
|
||
### 断点
|
||
|
||
- **设置断点**:点击节点上的断点图标
|
||
- **断点触发**:执行到断点时自动暂停
|
||
- **查看状态**:在暂停时查看节点的输入输出
|
||
|
||
### 执行日志
|
||
|
||
调试面板下方显示实时日志:
|
||
|
||
```
|
||
[INFO] 2024-01-15 10:30:00 - Starting debug execution
|
||
[INFO] 2024-01-15 10:30:00 - Executing node: message_trigger
|
||
[DEBUG] 2024-01-15 10:30:00 - Node inputs: {"message": "你好"}
|
||
[INFO] 2024-01-15 10:30:01 - Node completed in 50ms
|
||
[INFO] 2024-01-15 10:30:01 - Executing node: llm_call
|
||
...
|
||
```
|
||
|
||
### 节点状态颜色
|
||
|
||
| 颜色 | 状态 |
|
||
|-----|------|
|
||
| 灰色 | 待执行 |
|
||
| 蓝色 | 执行中 |
|
||
| 绿色 | 已完成 |
|
||
| 红色 | 失败 |
|
||
| 黄色 | 已跳过 |
|
||
|
||
---
|
||
|
||
## 常见问题解答
|
||
|
||
### Q1:如何在节点间传递数据?
|
||
|
||
使用表达式语法引用其他节点的输出:
|
||
|
||
```
|
||
{{nodes.节点ID.outputs.输出名称}}
|
||
```
|
||
|
||
例如:
|
||
- `{{nodes.llm_call.outputs.response}}` - 引用 LLM 节点的响应
|
||
- `{{nodes.http_request.outputs.body}}` - 引用 HTTP 请求的响应体
|
||
|
||
### Q2:如何使用变量?
|
||
|
||
Workflow 支持三种变量类型:
|
||
|
||
1. **工作流变量**:`{{variables.变量名}}`
|
||
2. **会话变量**:`{{conversation_variables.变量名}}`
|
||
3. **消息上下文**:`{{message.content}}`、`{{message.sender_id}}`
|
||
|
||
### Q3:条件分支如何写条件表达式?
|
||
|
||
支持以下运算符:
|
||
|
||
- 比较:`==`, `!=`, `>`, `<`, `>=`, `<=`
|
||
- 逻辑:`and`, `or`, `not`
|
||
- 包含:`in`
|
||
|
||
示例:
|
||
```python
|
||
# 字符串比较
|
||
"{{nodes.classifier.outputs.intent}}" == "purchase"
|
||
|
||
# 数值比较
|
||
{{nodes.extractor.outputs.amount}} > 1000
|
||
|
||
# 包含检查
|
||
"退款" in "{{message.content}}"
|
||
```
|
||
|
||
### Q4:如何处理错误?
|
||
|
||
1. **节点级重试**:在节点配置中设置重试次数
|
||
2. **全局错误处理**:在 Workflow 设置中配置错误处理策略
|
||
3. **条件分支**:使用条件节点检查上一节点的状态
|
||
|
||
### Q5:如何查看执行历史?
|
||
|
||
1. 进入 Workflow 详情页
|
||
2. 点击 **执行历史** 标签
|
||
3. 查看每次执行的状态、耗时、输入输出
|
||
|
||
### Q6:Workflow 可以被多个 Bot 使用吗?
|
||
|
||
是的。一个 Workflow 可以被多个 Bot 绑定使用,但每个 Bot 只能绑定一个处理单元(Pipeline 或 Workflow)。
|
||
|
||
### Q7:如何复制现有的 Workflow?
|
||
|
||
在 Workflow 列表页,点击工作流卡片右上角的菜单,选择"复制"即可创建副本。
|
||
|
||
### Q8:支持版本回滚吗?
|
||
|
||
支持。每次保存都会创建新版本。在 Workflow 详情页可以查看版本历史并回滚到指定版本。
|
||
|
||
---
|
||
|
||
## 最佳实践
|
||
|
||
### 1. 合理命名
|
||
|
||
- 为节点和 Workflow 使用描述性名称
|
||
- 使用统一的命名规范
|
||
|
||
### 2. 模块化设计
|
||
|
||
- 将复杂流程拆分为多个小 Workflow
|
||
- 使用"调用 Pipeline"节点复用现有流程
|
||
|
||
### 3. 错误处理
|
||
|
||
- 为关键节点设置重试机制
|
||
- 使用条件分支处理异常情况
|
||
- 添加日志记录便于排查问题
|
||
|
||
### 4. 测试先行
|
||
|
||
- 使用调试功能充分测试
|
||
- 准备多种测试场景
|
||
- 检查边界情况
|
||
|
||
### 5. 性能优化
|
||
|
||
- 避免不必要的节点
|
||
- 使用并行节点提高效率
|
||
- 合理设置超时时间
|
||
|
||
---
|
||
|
||
## 更多资源
|
||
|
||
- [开发者文档](../development/workflow-system.md)
|
||
- [设计文档](../../../plans/langbot-workflow-design.md)
|
||
- [API 文档](../service-api-openapi.json)
|