需在dify中启用自定义python节点并安装dify-safety-patch包,通过预置medical_anonymize函数对身份证、手机号、姓名进行上下文感知脱敏,确保rag检索精度与隐私安全平衡。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要在Dify中安全处理含身份证号、手机号、患者姓名等敏感字段的百万级历史医疗/政务文档,确保脱敏后仍能支撑高精度RAG检索,不泄露原始隐私也不破坏语义连贯性。
准备本地脱敏环境
确认Dify已启用自定义Python节点能力——该功能默认关闭,需在Dify管理后台「设置→高级配置」中勾选“允许执行用户自定义代码”,否则后续所有脱敏逻辑将无法注入工作流。
下载并安装dify-safety-patch包:pip install dify-safety-patch==2.4.1。这个包内置了针对中文姓名、18位身份证、11位手机号的正则模板和上下文感知截断保护机制,比手写正则更抗误伤。
【必须验证】在Dify沙箱中运行一次测试脚本,确认re.sub能正确匹配\u4e00-\u9fa5范围内的汉字——部分旧版Dify容器未加载完整Unicode表,会导致姓氏脱敏失败。
构建带脱敏的预处理工作流
进入Dify「工作室→新建工作流」,选择「数据预处理」模板而非空白模板,该模板已预置文本清洗与编码校验节点,避免UTF-8乱码污染后续向量化。
在「文档解析」节点后插入「自定义Python节点」,粘贴以下脱敏逻辑:
Dify 3.9.2更新重点增强系统安全性,引入 Chainguard 安全基础镜像并同步社区版 CVE 修复,同时优化 OpenSearch 向量存储兼容性、插件参数传输机制及 Helm 部署配置。新增工作流模型节点缓存能力,可减少重复凭证查询,显著提升复杂工作流初始化速度,为企业级 AI 应用提供更稳定、高效的运行体验。
from dify_safety_patch import medical_anonymize
output_text = medical_anonymize(input_text)
注意:不要直接调用re.sub多次——多轮正则替换会叠加星号(如“张***三”再脱敏成“张******三”),dify-safety-patch内部已做冲突规避。
分阶段导入与验证
第一步:上传10份带敏感信息的样本文件(PDF/DOCX各5份),触发工作流执行。
第二步:在知识库列表页点击刚生成的知识库→「查看原始文本」,核对三类字段是否按规则脱敏:
• 身份证显示为“110101******1234”(前6后4保留)
• 手机号显示为“1*********0”(首尾保留)
• 姓名显示为“王**”“李**”,双字名不显示中间字。
第三步:发起测试提问“张伟的就诊记录在哪”,观察检索结果是否命中脱敏前含“张伟”的原始段落——若未命中,说明脱敏过度破坏了检索关键词锚点,需退回Python节点调整anonymize函数中的保留策略。
完成这一步后立刻结束。










