Dify工作流中对复杂Markdown格式文本格式化的尝试

陌涛大大_6268

陌涛大大_6268

2026-10-25

231人浏览

原创

dify工作流中需用代码节点归一化markdown(统一换行、缩进)、jinja模板条件渲染控制内容、http请求传参时启用preserve_html并指定中文字体名及pt单位,确保docx准确还原表格、代码块和标题层级。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

dify工作流中对复杂markdown格式文本格式化的尝试

在Dify工作流中处理含表格、代码块、多级标题和嵌套列表的复杂Markdown文本时,直接传递给下游节点常导致渲染错乱、结构丢失或插件解析失败。这是因为多数Dify内置节点(如HTTP请求、代码执行)默认将Markdown当作纯字符串处理,不触发语法解析;而部分插件(如DOC-Dify-Plugin)虽支持Markdown,但对非标准缩进、混合HTML标签或未闭合的代码块极其敏感。

用Jinja模板预清洗并标准化结构

第一步:在LLM输出后插入「代码节点」,使用Python对原始Markdown做轻量级归一化处理。

第二步:粘贴以下清洗逻辑(适配中文环境,兼容WPS/Office对空行与缩进的解析要求):

```python
import re

def clean_markdown(md: str) -> str:
# 强制统一换行符为\n,避免 \n混杂导致解析器截断
md = md.replace('\r\n', '\n').replace('\r', '\n')
# 清除开头结尾多余空行,但保留段落间单空行
md = re.sub(r'^\n+|\n+$', '', md)
# 合并连续多个空行 → 只留一个
md = re.sub(r'\n{3,}', '\n\n', md)
# 修正无序列表缩进:把4空格/1个tab统一转为2空格(DOC-Dify-Plugin推荐)
md = re.sub(r'^ {4}([*-+]) ', r' \1 ', md, flags=re.MULTILINE)
md = re.sub(r'^\t([*-+]) ', r' \1 ', md, flags=re.MULTILINE)
return md.strip()

result = clean_markdown(llm_output)
```

第三步:将变量名设为cleaned_md,供后续节点调用。这一步必须做——【未清洗的原始Markdown在调用DOC-Dify-Plugin时,90%概率因缩进不一致导致表格列错位或列表塌陷】。

用Jinja条件渲染动态控制内容呈现

当LLM输出可能含敏感字段(如“内部机密”“待确认”)或需按角色过滤内容时,不能依赖后端再处理,必须在Dify工作流内完成结构裁剪。

方法一:在「文本拼接」节点中写Jinja模板,实现字段级开关

{% if metadata.confidential == false %}{{ content }}{% endif %}

方法二:对多段落内容做安全包裹,防止未闭合HTML污染DOCX生成

{% for para in content.split('\n') %}

{{ para | escape }}

{% endfor %}

注意:escape过滤器会自动转义、&等字符,避免Markdown中混入的

或<script>标签被DOCX解析器误读为XML指令。</script>

OCR 文档识别转 Markdown(WiseOCR)
OCR 文档识别转 Markdown(WiseOCR)

WiseOCR — 将 PDF 或图片文件转换为高质量 Markdown 文本,支持表格完整识别、多栏版式还原、中英文混排。适用场景:扫描件文字提取、纸质文档数字化、合同/报告/论文转文本、图片中文字提取。支持格式:PDF、JPG、JPEG、PNG、WEBP、GIF、BMP、TIFF。触发:用户上传文件并要求"帮我识别这个文件的文字"、"PDF转文字"、"图片转文本"、"帮我提取这个表格"——会调用本技能。说"用Wi

下载

向DOC-Dify-Plugin传递带样式的Markdown

第一步:确认你的插件已升级至中文适配版(stvlynn/DOC-Dify-Plugin@zh-fix),旧版不识别class="warning"等语义类名。

第二步:在HTTP请求节点中,Body选择JSON格式,填入:

{ "markdown": "{{ cleaned_md }}", "options": { "font": "FangSong", "heading_level_1_size": 22, "preserve_html": true } }

第三步:关键配置项说明:

• preserve_html设为true——否则<div class="note">这类自定义容器会被直接丢弃;<p>• 字体名必须用中文字体全称(如"FangSong"而非"仿宋"),<strong>【WPS和Office对字体名大小写与空格极其敏感,填错会导致全文默认用Calibri,中文显示为方块】</strong>;</p> <p>• heading_level_1_size单位是Pt,不是px,不是pt,不是磅——必须是整数Pt值。</p> <h2>验证DOCX输出是否保留原始结构</h2> <p>步骤一:在工作流末尾添加「HTTP请求」节点,目标URL填入你部署的Word服务地址(如http://word-service:5001/gen_doc)</p> <p>步骤二:Body选raw → JSON,内容为:</p> <p>{ "title": "{{ metadata.title }}", "content": "{{ cleaned_md }}" }</p> <p>步骤三:检查返回响应中的下载链接是否可访问;若返回404,立即进入容器挂载目录查看<code>/app/word/temp/下是否有生成文件

步骤四:用WPS打开生成的DOCX,重点检查三点:表格边框是否完整、代码块是否带灰色底纹、二级标题是否比一级标题小两号字——任一缺失,说明Jinja清洗或插件选项配置有误。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

dify markdown dify工作流

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
WorkBuddy核心功能与实操模式
WorkBuddy核心功能与实操模式

深入探索WorkBuddy的强大功能。本专题包含智能问答、文档处理、会议纪要生成、日程管理、任务协作等核心模块的操作指南与最佳实践。通过图文并茂的教程,助您快速上手,最大化发挥WorkBuddy的办公效能。

2026.04.09

622

19

WorkBuddy核心功能与实操模式
WorkBuddy核心功能与实操模式

深入探索WorkBuddy的强大功能。本专题包含智能问答、文档处理、会议纪要生成、日程管理、任务协作等核心模块的操作指南与最佳实践。通过图文并茂的教程,助您快速上手,最大化发挥WorkBuddy的办公效能。

2026.04.09

622

19

Dify 本地部署与企业配置
Dify 本地部署与企业配置

本专题系统讲解 Dify 从零开始的本地部署方法与企业环境配置实践,涵盖 Docker 安装、依赖准备、数据库初始化、反向代理、参数调优、安全加固与多用户开通,帮助开发者与企业团队快速搭建稳定可用的 Dify 平台。

2026.06.05

797

15

Dify Agent智能体开发实战教程
Dify Agent智能体开发实战教程

本专题聚焦 Dify Agent 智能体的设计与开发,涵盖 Agent 模式选择、工具集成、提示词设计、多步推理、上下文记忆与多 Agent 协作,帮助开发者构建可执行复杂业务任务的智能体应用。

2026.06.05

265

15

Dify RAG知识库构建实战教程
Dify RAG知识库构建实战教程

本专题围绕 Dify RAG 知识库的全流程实践展开,从文档导入、分段切片、向量化到混合检索、重排优化与召回评估,帮助你打造高准确率、低幻觉的企业知识问答应用。

2026.06.05

256

15

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

20

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

20

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

20

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Dify零基础教程
Dify零基础教程

共0课时 | 154人学习

学习Agent,从Dify开始
学习Agent,从Dify开始

共0课时 | 152人学习

Dify 部署与运维指南
Dify 部署与运维指南

共0课时 | 0人学习