129 lines
3.6 KiB
Markdown
129 lines
3.6 KiB
Markdown
|
|
# Dify 工作流 System Prompt 改造指南
|
|||
|
|
|
|||
|
|
## 改造目标
|
|||
|
|
|
|||
|
|
将 Dify 输出从 `action` 字段改为 `intent` 标签,让后端根据 intent 查询资产库生成真正的推荐卡片。
|
|||
|
|
|
|||
|
|
## 当前输出格式(需改造)
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"text": "回答文本...",
|
|||
|
|
"action": {
|
|||
|
|
"type": "approval_card",
|
|||
|
|
"title": "软件安装审批",
|
|||
|
|
"description": "申请安装 Adobe 系列软件",
|
|||
|
|
"approval_type": "software_install",
|
|||
|
|
"confidence": 0.95
|
|||
|
|
},
|
|||
|
|
"options": [...],
|
|||
|
|
"diagnosis_stage": "diagnosing"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 目标输出格式
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"text": "给用户的回答文本(50-200字)",
|
|||
|
|
"intent": "用户意图标签",
|
|||
|
|
"need_approval": 是否需要审批入口 (true/false),
|
|||
|
|
"need_asset": 是否需要资产推荐 (true/false),
|
|||
|
|
"asset_keywords": ["关键词1", "关键词2"],
|
|||
|
|
"options": [
|
|||
|
|
{"label": "选项文字", "value": "选项值"}
|
|||
|
|
],
|
|||
|
|
"diagnosis_stage": "greeting|diagnosing|resolved|transfer"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 改造步骤
|
|||
|
|
|
|||
|
|
### 1. 登录 Dify Console
|
|||
|
|
|
|||
|
|
访问:`http://yw-dify.dc.servyou-it.com/console`
|
|||
|
|
|
|||
|
|
### 2. 找到目标应用
|
|||
|
|
|
|||
|
|
找到「智能IT支持-员工咨询」应用(App ID: `8f0f3d62-f63d-4cf3-815e-b10529c66f1d`)
|
|||
|
|
|
|||
|
|
### 3. 进入工作流编辑
|
|||
|
|
|
|||
|
|
1. 点击应用名称进入详情
|
|||
|
|
2. 点击「编辑」
|
|||
|
|
3. 进入「编排」页面
|
|||
|
|
|
|||
|
|
### 4. 找到 LLM 节点
|
|||
|
|
|
|||
|
|
找到输出 JSON 结构的 LLM 节点(通常在"开始"节点之后的第一个 LLM 节点)
|
|||
|
|
|
|||
|
|
### 5. 修改 System Prompt
|
|||
|
|
|
|||
|
|
在 LLM 节点的「系统提示词」中添加以下内容(追加到现有 Prompt 末尾):
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
## 输出格式要求
|
|||
|
|
|
|||
|
|
你是一个 IT 智能助手。请根据用户问题,输出以下 JSON 结构:
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
"text": "给用户的回答文本(50-200字)",
|
|||
|
|
"intent": "用户意图标签",
|
|||
|
|
"need_approval": 是否需要审批入口 (true/false),
|
|||
|
|
"need_asset": 是否需要资产推荐 (true/false),
|
|||
|
|
"asset_keywords": ["关键词1", "关键词2"],
|
|||
|
|
"options": [
|
|||
|
|
{"label": "选项文字", "value": "选项值"}
|
|||
|
|
],
|
|||
|
|
"diagnosis_stage": "greeting|diagnosing|resolved|transfer"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
## 意图标签说明
|
|||
|
|
|
|||
|
|
intent 字段可选值:
|
|||
|
|
- software_install: 软件安装
|
|||
|
|
- hardware_issue: 硬件问题
|
|||
|
|
- network_vpn: 网络/VPN 问题
|
|||
|
|
- printer: 打印机问题
|
|||
|
|
- account_permission: 账号权限问题
|
|||
|
|
- email_outlook: 邮箱问题
|
|||
|
|
- mobile_device: 移动设备问题
|
|||
|
|
- other: 其他问题
|
|||
|
|
|
|||
|
|
## 资产推荐规则
|
|||
|
|
|
|||
|
|
当用户询问以下内容时,设置 need_asset=true 并指定 asset_keywords:
|
|||
|
|
- VPN 相关 → asset_keywords: ["vpn"]
|
|||
|
|
- 打印机相关 → asset_keywords: ["打印机", "打印机驱动"]
|
|||
|
|
- 软件安装 → asset_keywords: ["软件安装"]
|
|||
|
|
- 邮箱问题 → asset_keywords: ["outlook", "邮箱"]
|
|||
|
|
- 账号权限 → asset_keywords: ["账号", "权限"]
|
|||
|
|
- 网络问题 → asset_keywords: ["网络", "wifi"]
|
|||
|
|
|
|||
|
|
重要:不要在 text 中推荐具体的下载链接或服务器地址,这些信息由系统根据 asset_keywords 智能匹配后推送到右侧栏。
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 6. 发布工作流
|
|||
|
|
|
|||
|
|
点击右上角「发布」按钮
|
|||
|
|
|
|||
|
|
### 7. 验证
|
|||
|
|
|
|||
|
|
在「发布」页面点击「运行」测试,验证输出格式是否符合预期。
|
|||
|
|
|
|||
|
|
## 回滚方案
|
|||
|
|
|
|||
|
|
如果新版本有问题,可以在 Dify Console 的「版本历史」中找到上一个版本,点击「恢复」即可回滚。
|
|||
|
|
|
|||
|
|
## 后端适配
|
|||
|
|
|
|||
|
|
后端代码 `asset_recommend_service.py` 已支持处理新的 `intent` 格式。
|
|||
|
|
|
|||
|
|
当 Dify 返回 `need_asset=true` + `asset_keywords` 时,后端会根据关键词查询 `assets.yaml` 中的资产信息,生成 L1 推荐卡片。
|
|||
|
|
|
|||
|
|
## 预期效果
|
|||
|
|
|
|||
|
|
用户说"VPN 连不上":
|
|||
|
|
- **中间栏**:AI 回复排查步骤
|
|||
|
|
- **右侧栏 L1**:VPN 相关信息(客户端下载、服务器地址、申请审批)
|