|
1 | | -# Dify 管理面板 |
| 1 | +# Dify DSL 可视化工具 |
2 | 2 |
|
3 | | -一个用于管理 Dify 平台的 Streamlit 应用,提供直观的 Web 界面来管理应用、API 密钥、标签和工具。 |
| 3 | +这个项目是基于 Streamlit 的 Dify 工作流 DSL 可视化工具,用于帮助用户理解和分析 Dify 中的工作流程图结构。 |
4 | 4 |
|
5 | | -## 功能概述 |
| 5 | +## 功能特性 |
6 | 6 |
|
7 | | -Dify 管理面板提供以下主要功能: |
| 7 | +- **DSL 图形可视化**:将 Dify 的 DSL JSON 结构转换为直观的可视化图表 |
| 8 | +- **交互式节点**:支持节点拖拽和点击查看详情 |
| 9 | +- **节点类型区分**:不同类型的节点使用不同颜色直观展示 |
| 10 | +- **统计分析**:提供工作流节点和边的统计信息 |
| 11 | +- **支持多种输入方式**:文件上传或直接粘贴 DSL 内容 |
8 | 12 |
|
9 | | -- **连接管理**: 连接到 Dify 平台并保持会话状态 |
10 | | -- **应用管理**: 创建、查看、编辑、删除应用,导入/导出 DSL 配置 |
11 | | -- **API 密钥管理**: 创建和删除应用的 API 密钥 |
12 | | -- **标签管理**: 创建、编辑、删除标签,管理应用与标签的关联 |
13 | | -- **工具管理**: 查看工具提供者和工具详情,管理工作流工具 |
14 | | - |
15 | | -## 项目结构 |
16 | | - |
17 | | -``` |
18 | | -dify-panel/ |
19 | | -├── app.py # 主页,提供连接管理和功能导航 |
20 | | -├── utils/ # 工具类目录 |
21 | | -│ ├── dify_client.py # Dify客户端封装 |
22 | | -│ └── ui_components.py # 可复用UI组件 |
23 | | -├── pages/ # 功能页面目录 |
24 | | -│ ├── app_management.py # 应用管理页面 |
25 | | -│ ├── api_key_management.py # API密钥管理页面 |
26 | | -│ ├── tag_management.py # 标签管理页面 |
27 | | -│ └── tool_management.py # 工具管理页面 |
28 | | -├── run.sh # 启动脚本 |
29 | | -├── README.md # 项目说明文档 |
30 | | -└── Streamlit使用文档.md # Streamlit参考文档 |
31 | | -``` |
32 | | - |
33 | | -## 界面特点 |
34 | | - |
35 | | -管理面板采用现代化的表格+选择+弹窗界面风格,具有以下特点: |
36 | | - |
37 | | -- **数据表格化展示**: 所有列表数据使用表格形式展示,支持行选择 |
38 | | -- **操作区集中管理**: 选择行后在操作区显示可执行的操作按钮 |
39 | | -- **统一的交互模式**: 所有页面保持一致的交互体验 - 选择数据行后进行操作 |
40 | | -- **响应式界面**: 适应不同屏幕尺寸,布局合理 |
41 | | -- **清晰的导航路径**: 简化导航层次,减少页面跳转次数 |
42 | | - |
43 | | -## 安装和运行 |
44 | | - |
45 | | -### 前提条件 |
46 | | - |
47 | | -- Python 3.8 或更高版本 |
48 | | -- 一个可访问的 Dify 平台实例 |
| 13 | +## 安装与使用 |
49 | 14 |
|
50 | 15 | ### 安装依赖 |
51 | 16 |
|
52 | 17 | ```bash |
53 | | -pip install streamlit requests python-dotenv |
| 18 | +pip install streamlit streamlit-agraph |
54 | 19 | ``` |
55 | 20 |
|
56 | | -### 运行应用 |
57 | | - |
58 | | -#### 使用启动脚本 |
59 | | - |
60 | | -推荐使用提供的启动脚本,可以方便地设置连接信息: |
| 21 | +### 启动应用 |
61 | 22 |
|
62 | 23 | ```bash |
63 | | -# 使用命令行参数设置连接信息 |
64 | | -./run.sh -u http://your-dify-url.com -e [email protected] -p your-password |
65 | | - |
66 | | -# 或使用环境变量设置连接信息 |
67 | | -DIFY_BASE_URL=http://your-dify-url.com [email protected] DIFY_PASSWORD=your-password ./run.sh |
| 24 | +cd dify-panel |
| 25 | +streamlit run app.py |
68 | 26 | ``` |
69 | 27 |
|
70 | | -启动脚本支持的参数: |
71 | | - |
72 | | -- `-h, --help`: 显示帮助信息 |
73 | | -- `-u, --url URL`: 设置 Dify 平台 URL |
74 | | -- `-e, --email EMAIL`: 设置登录邮箱 |
75 | | -- `-p, --password PWD`: 设置登录密码 |
76 | | -- `--port PORT`: 设置 Streamlit 应用端口(默认 8501) |
77 | | - |
78 | | -#### 直接使用 Streamlit 命令 |
| 28 | +或者直接运行可视化页面: |
79 | 29 |
|
80 | 30 | ```bash |
81 | 31 | cd dify-panel |
82 | | -streamlit run app.py |
| 32 | +streamlit run pages/dsl_visualization.py |
83 | 33 | ``` |
84 | 34 |
|
85 | | -应用将在浏览器中自动打开,默认地址为 http://localhost:8501 |
86 | | - |
87 | | -## 环境变量配置 |
88 | | - |
89 | | -应用支持通过环境变量设置默认的连接信息,这在容器化部署或持续运行环境中非常有用: |
| 35 | +## 使用方法 |
90 | 36 |
|
91 | | -- `DIFY_BASE_URL`: Dify 平台的 URL (例如: http://example.com:11080) |
92 | | -- `DIFY_EMAIL`: 登录邮箱账号 |
93 | | -- `DIFY_PASSWORD`: 登录密码 |
| 37 | +1. 启动应用后,选择"上传 JSON 文件"或"粘贴 DSL 文本"输入 DSL 数据 |
| 38 | +2. 点击"加载示例数据"可快速查看示例效果 |
| 39 | +3. 查看生成的可视化图表,可拖动节点调整位置 |
| 40 | +4. 点击节点可查看节点详细信息 |
94 | 41 |
|
95 | | -当设置了这些环境变量后,应用将在启动时自动尝试连接到 Dify 平台,无需手动输入连接信息。 |
| 42 | +## 节点类型说明 |
96 | 43 |
|
97 | | -### 使用 .env 文件 |
| 44 | +- **开始节点(绿色)**:工作流的起始点 |
| 45 | +- **结束节点(红色)**:工作流的终止点 |
| 46 | +- **LLM 节点(蓝色)**:大语言模型处理节点 |
| 47 | +- **代码节点(橙色)**:执行代码逻辑的节点 |
| 48 | +- **模板转换节点(紫色)**:处理内容模板转换的节点 |
| 49 | +- **条件分支节点(黄色)**:根据条件控制流程走向的节点 |
| 50 | +- **工具节点(棕色)**:调用外部工具或服务的节点 |
98 | 51 |
|
99 | | -您也可以创建一个 `.env` 文件来存储这些环境变量: |
| 52 | +## 项目结构 |
100 | 53 |
|
101 | 54 | ``` |
102 | | -DIFY_BASE_URL=http://your-dify-instance:11080 |
103 | | - |
104 | | -DIFY_PASSWORD=your-password |
| 55 | +dify-panel/ |
| 56 | +├── app.py # 主应用入口 |
| 57 | +├── utils/ |
| 58 | +│ ├── dsl_components.py # DSL图形渲染组件 |
| 59 | +│ └── ... |
| 60 | +├── pages/ |
| 61 | +│ └── dsl_visualization.py # DSL可视化页面 |
| 62 | +└── examples/ |
| 63 | + └── example_dsl.json # 示例DSL数据 |
105 | 64 | ``` |
106 | 65 |
|
107 | | -应用会自动加载这个文件中的环境变量。 |
108 | | - |
109 | | -## 使用说明 |
110 | | - |
111 | | -### 1. 连接到 Dify 平台 |
112 | | - |
113 | | -1. 在首页填写 Dify 平台的 URL、邮箱和密码 (如果设置了环境变量,这些字段将自动填充) |
114 | | -2. 点击"连接"按钮 |
115 | | -3. 连接成功后,您将看到平台概览和功能导航区域 |
116 | | - |
117 | | -### 2. 应用管理 |
118 | | - |
119 | | -- **查看应用列表**: 应用以表格形式展示 |
120 | | -- **创建新应用**: 点击"创建新应用"按钮,填写应用名称、描述和选择应用类型 |
121 | | -- **查看应用详情**: 在表格中选择应用,然后点击"查看详情"按钮 |
122 | | -- **编辑应用**: 在表格中选择应用,然后点击"编辑应用"按钮 |
123 | | -- **删除应用**: 在表格中选择应用,然后点击"删除应用"按钮 |
124 | | -- **导出 DSL**: 在表格中选择应用,然后点击"导出 DSL"按钮 |
125 | | -- **导入 DSL**: 点击"导入应用 DSL"按钮,上传 DSL 文件 |
126 | | - |
127 | | -### 3. API 密钥管理 |
128 | | - |
129 | | -- **选择应用**: 在下拉菜单中选择要管理 API 密钥的应用 |
130 | | -- **查看 API 密钥**: 所有 API 密钥以表格形式展示 |
131 | | -- **创建 API 密钥**: 点击"创建 API 密钥"按钮 |
132 | | -- **删除 API 密钥**: 在表格中选择 API 密钥,然后点击"删除 API 密钥"按钮 |
133 | | - |
134 | | -### 4. 标签管理 |
135 | | - |
136 | | -- **查看标签列表**: 标签以表格形式展示 |
137 | | -- **创建新标签**: 点击"创建新标签"按钮,填写标签名称 |
138 | | -- **编辑标签**: 在表格中选择标签,然后点击"编辑标签"按钮 |
139 | | -- **删除标签**: 在表格中选择标签,然后点击"删除标签"按钮 |
140 | | -- **应用标签关联**: 点击"应用标签关联"按钮,选择应用和管理标签关联 |
141 | | - |
142 | | -### 5. 工具管理 |
143 | | - |
144 | | -- **查看工具提供者**: 工具提供者以表格形式展示 |
145 | | -- **筛选工具提供者**: 使用多选框筛选不同类型的工具提供者 |
146 | | -- **查看工具详情**: 在表格中选择工具提供者,然后点击"查看详情"按钮 |
147 | | -- **工作流工具管理**: |
148 | | - - 点击"管理工作流工具"按钮,查看所有工作流应用表格 |
149 | | - - 选择未发布的工作流应用,可以点击"发布为工具"按钮 |
150 | | - - 选择已发布的工作流应用,可以点击"查看工具详情"或"编辑工具"按钮 |
151 | | - - 工具编辑界面支持修改名称、描述、标识和参数描述 |
152 | | - |
153 | | -## 技术实现 |
154 | | - |
155 | | -- **前端**: 使用 Streamlit 构建用户界面,采用表格+选择+弹窗模式 |
156 | | -- **后端**: 使用 Python 请求库与 Dify API 交互 |
157 | | -- **状态管理**: 使用 Streamlit 的会话状态(session_state)管理应用状态 |
158 | | -- **数据缓存**: 实现简单的缓存机制减少 API 请求 |
159 | | -- **环境变量**: 支持从环境变量和.env 文件读取连接信息 |
160 | | - |
161 | | -## 注意事项 |
| 66 | +## 技术栈 |
162 | 67 |
|
163 | | -- API 密钥创建后只会显示一次,请妥善保存 |
164 | | -- 删除应用或标签等操作无法撤销,请谨慎操作 |
165 | | -- 长时间未操作可能导致会话过期,需要重新连接 |
166 | | -- 为安全起见,建议不要在共享环境中使用包含密码的环境变量 |
| 68 | +- **Streamlit**:构建 Web 界面 |
| 69 | +- **streamlit-agraph**:处理图形可视化 |
| 70 | +- **Python**:核心逻辑实现 |
0 commit comments