Dify中处理外网输入需先用预编译正则识别敏感字段,再通过掩码替换或哈希假名化脱敏,最后将cleaned_text注入LLM节点并关闭原始透传。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Dify中处理来自外网的用户输入时,必须先剥离手机号、身份证号、邮箱、地址等敏感字段,再将清洗后的数据送入大模型推理,否则会直接触发GDPR或《个人信息保护法》合规红线。
识别并提取外网输入中的敏感字段
进入Dify工作流编辑页→添加「代码节点」→在代码框中粘贴Python正则清洗逻辑。必须使用预编译正则对象提升性能,避免每次循环重复编译:import re
PHONE_PATTERN = re.compile(r'1[3-9]\d{9}')
IDCARD_PATTERN = re.compile(r'\d{17}[\dXx]')
EMAIL_PATTERN = re.compile(r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}')。
这一步不能跳过,否则后续所有脱敏动作都建立在未识别基础上,形同虚设。
对识别出的敏感内容执行字段级替换
方法一:掩码替换(推荐用于调试与日志审计)
用星号替代中间位数,保留格式特征便于人工核验:text = PHONE_PATTERN.sub(r'1****\g[4:]', text) → 注意此处【\g[4:]语法错误,应写为\g[4:]仅适用于分组捕获,而PHONE_PATTERN无分组】,正确写法是text = PHONE_PATTERN.sub(lambda m: m.group(0)[:3] + '****' + m.group(0)[-4:], text)。
大模型 Token 成本节约工具。在请求到达大模型之前自动压缩 prompt 和上下文,减少 60-95% 的 token 消耗,直接降低 API 成本。支持 Claude/OpenAI/Gemini 等主流模型,提供代理模式、CLI 包装、Python SDK 和 MCP Server 四种接入方式。内置一键安...
方法二:假名化映射(生产环境强制启用)
调用内置hashlib.sha256生成不可逆哈希值,并截取前8位作为伪标识符:import hashlib; pseudo_id = hashlib.sha256(text.encode()).hexdigest()[:8]。
将脱敏后数据注入模型请求体
第一步:在LLM节点配置中关闭「原始输入透传」开关。
第二步:把上一节点输出的cleaned_text变量拖入LLM节点的「输入模板」字段,例如:请基于以下信息回答问题:{{cleaned_text}}。
第三步:检查请求体预览,确认JSON payload中已无任何匹配手机号/身份证/邮箱的字符串——若仍存在,说明前两步正则未覆盖全量模式,需回溯补充规则。










