Dify工作流实践:从文档生成思维导图
在日常工作中,面对各种文档、方案和纪要,想快速抓住重点并不容易。有时候反复读上几遍,才能真正理清里面的核心逻辑。于是就有了这样一个想法:能不能借助Dify,把文档自动转化成结构清晰的思维导图?这样提取和理解重点信息就高效多了。以下就是实践过程的完整记录(基于Dify 1.2.0版本)。
前置准备
1. 安装Markdown转换器插件
这个插件的作用很简单——用来生成思维导图所需的HTML文件。
2. 安装Agent策略插件
安装这个插件,是为了让Dify能够顺利调用MCP工具。
3. 启动MCP Server工具
MCP Server工具的核心能力,是把输入的Markdown内容转换成HTML格式的思维导图。原始项目代码地址如下:
https://github.com/YuChenSSR/mindmap-mcp-server
需要注意的是,这个工具默认只支持stdio模式(也就是本地进程间通信)。而Dify服务通常部署在容器中,需要的是sse模式来实现远程调用,所以对代码做了一些调整。
启动服务的命令如下:
# 略过Python环境搭建 pip install mcp # 安装依赖 python mindmap_mcp_server.py --host 0.0.0.0 --port 1100
配置工作流
整体工作流结构如下图所示,接下来逐个节点说明。
开始节点
添加一个file变量,用来支持文件上传。
文档提取器节点
这个节点负责提取文档中的原始内容。
文档内容转Markdown节点
将文档提取器提取到的内容,转换成规范的Markdown格式。这里用到的Prompt提示词如下:
上下文内容:{{#context#}}
## 核心任务
将上下文内容转化为符合以下标准的Markdown格式思维导图框架:
1. **要素提取**:识别并提取关键实体、关系、流程三类核心要素
2. **逻辑重构**:按「总-分」结构重组信息,确保父子节点存在推导关系
## 格式规范
### 层级控制
- 主标题 `#`(1级):文档主题
- 章节 `##`(2级):核心模块(≥3个)
- 子项 `###`(3级):具体要素(每个父节点下≥2个)
### 内容标记
- 关键术语:**加粗显示** + (简短释义)
- 数据示例:```包裹的代码块```
## 质量保障
1. 预检机制(输出前必须验证):
- [ ] 无孤立节点(所有子项都有父节点)
- [ ] 无重复内容(合并相似条目)
Agent节点
添加Agent策略时,选择环境准备阶段安装的Agent策略插件,并指定FunctionCalling策略。同时配置MCP工具。这里有一个小细节:工具列表需要至少添加一个工具才能正常保存,所以额外加了一个获取当前时间的工具。
MCP服务配置如下:
{
"mindmap": {
"description": "将输入的markdown的内容转为思维导图",
"url": "http://192.168.1.110:1100/sse",
"headers": {},
"timeout": 60,
"sse_read_timeout": 300
}
}
指令配置:
请根据上下文内容调用mindmap MCP工具将输出结果转为合适完整可渲染的html,
注意生成的内容务必不要添加其他冗余的信息。
上下文:{{#1748051257295.text#}}
生成内容校验节点
这个节点负责检查上一步输出的内容是否存在语法问题,并根据规则确定最终输出结果。使用的Prompt如下:
你的任务是对上下文中的html内容做校验,
对html内容存在语法问题做修复并输出,
确保输出内容完整不含且不包含冗余内容,
最终输出为'#思维导图'拼接上html内容
上下文:{{#context#}}
Markdown转HTML节点
这个节点使用环境准备阶段安装的Markdown转换器插件。
结束节点
最终输出为HTML文件。
启动工作流
测试时没有用太长的文章,因为要考虑token限制。这里直接拿之前写过的一篇文章来验证输出效果。
工作流执行完成后会生成文件,点击右下角即可查看效果。
实践过程遇到的问题
- 如果输入文件中包含特殊字符,特别是代码内容,生成的思维导图偶尔会出现渲染异常的情况。
- Dify Agent有时会无法调用MCP工具。这种情况可能需要对MCP工具的描述信息进行优化,同时调整工作流节点的Prompt和指令。
总结
这篇文章分享了如何用Dify将文档转化为结构化的思维导图。不过坦白说,目前的处理流程还比较粗糙,有不少可以优化的空间。比如,输入内容可以直接从网页提取、长文档可以拆分迭代处理,以及文档中图片的处理方式等等。这些都是后续可以继续完善的方向。
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名