2.3 PIIMiddleware中间件

敏感信息保护。
PII中间件用于检测和处理对话中的个人身份信息(Personally Identifiable Information,PII),支持自
定义处理策略。

2.3.1 参数说明

参数1:pii_type —检测的PII数据类型
可以是内置类型或自定义类型,自定义类型有

  • email :电子邮箱地址
  • credit_card :信用卡号
  • url :网址
  • mac_address :设备MAC地址
  • ip :IP地址

参数2:strategy —处理PII信息的策略
支持四种选项:

  • redact :将检测到的PII信息用字符串[REDACTED_[PII_TYPE]] 替换,其中的 PII_TYPE是上面提到的具体类型,比如[REDACTED_EMAIL] 、[REDACTED_CREDIT_CARD] 这样的标签。完全“擦除/隐藏” 真实内容。适合日志清洗、合规需求、公开输出时隐藏敏感内容。
  • mask :用*** 将PII信息的前面一部分信息遮蔽。比如信用卡号可能变成 –-****-1234 (只保留最后几位/部分可见),邮箱可能保留域名部分 + 隐藏用户名的一部分等 — 既隐藏大部分敏感信息,又保留了一点“可辨识性”(比如账号后四位、域名等),适合用户服务界面/ 前端显示 / 需要部分可识别但不泄露完整敏感内容的场景。
  • hash :用检测到的PII信息的哈希值替代原值。比如 <email_hash:a1b2c3d4> 。适合analytics、调试 (debug)、统计分析、匿名追踪等场景。
  • block :如果检测到PII信息, 直接抛出异常。适合对隐私要求极高、绝不允许泄露任何敏感信息的场景。

参数3:detector —自定义PII检测函数或者正则表达式
如果没有提供则使用内置的检测函数。
LangChain为每种PII信息定制了专门的检测函数,相关源码如下

图片[1]-2.3 PIIMiddleware中间件-大赛人网

参数4:apply_to_input —是否在调用模型前检测默认为True。
参数5:apply_to_output —是否在模型调用后检测默认为False。
参数6:apply_to_tool_results —是否在工具调用后检测其输出默认为False。
通常我们只在模型调用前检测。因为PII检测的主要目的是避免将敏感信息发送给模型服务导致信息泄露。

2.3.2 举例1:使用内置检测器

图片[2]-2.3 PIIMiddleware中间件-大赛人网
图片[3]-2.3 PIIMiddleware中间件-大赛人网
图片[4]-2.3 PIIMiddleware中间件-大赛人网

2.3.3 举例2:自定义检测器/函数

自定义检测函数

图片[5]-2.3 PIIMiddleware中间件-大赛人网

测试:

text = "大赛人的电话是13812345678,赛师傅的电话是13987654321。"
result = detect_phone_number(text)
print(result)

继续:

图片[6]-2.3 PIIMiddleware中间件-大赛人网
图片[7]-2.3 PIIMiddleware中间件-大赛人网

re.finditer(pattern, content) 是 Python 正则模块中非常高效的一个方法,它会在 content 字符串中从左到右扫描,每当找到一个符合条件的 11 位数字,它不会立刻把字符串提取出来,而是生成一个 匹配对象。它返回的是一个迭代器(Iterator)。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像-大赛人网
欢迎您留下宝贵的见解!
提交
头像-大赛人网

昵称

取消
昵称

    请登录后查看评论内容