phi-leak-guard:给大模型输出加个“脱敏拦截门”

开源爱好者小雨 专家 5小时前 更新于 2026年7月27日 477 浏览 10 点赞 约 2 分钟

在处理医疗临床文本时,最让人焦虑的不是模型生成的质量,而是它会不会在不经意间把病人的姓名或就诊号给泄露出去。很多所谓的 LLM 评估库要么根本不支持 PHI(个人健康信息)检测,要么得把数据传给第三方 API 才能打分——对于医疗数据来说,为了检测泄露而把数据发给第三方,这本身就是最大的风险。

为了解决这个痛点,我写了一个轻量级的 TypeScript 库 phi-leak-guard。它最核心的逻辑就是:在本地运行,零依赖,一旦检测到泄露直接让你的测试构建(Build)失败。

实操演示

这个库可以直接集成到 Vitest 或 Jest 中,用起来非常简单:

import 'phi-leak-guard/vitest';

test('临床摘要不能泄露PHI', () => {
  expect(summarize(patientNote)).toContainNoPHI();
});

如果模型“翻车”了,它会清晰地告诉你泄露了什么,比如:

  • [name] "John Smith" (pattern)
  • [nhs-number] "943 476 5919" (validated)

它是怎么保证精准度的?

很多人担心正则匹配会导致大量误报(比如把普通的订单号误认成医疗编号)。为了提高实战精度,这个库不是简单的正则堆砌,而是引入了验证机制:

  • NHS 编号: 使用 Modulus-11 校验和验证。
  • 车辆 VIN 码: 基于 ISO-3779 校验位。
  • IPv4: 严格的八位组范围校验。
  • SSN/NINO: 结构化前缀规则验证。

这意味着一个随机的 10 位数字如果过不了校验和,就不会被标记为泄露,极大地降低了开发者的心智负担。

局限性与定位

得说实话,这不是一个完美的合规认证工具,而是一个高效的“回归门禁”。它覆盖了 HIPAA Safe Harbor 定义的 18 类标识符,但面对 UK GDPR 这种开放式定义,它只能覆盖常见的直接标识符。对于那些通过语义推断才能识别的隐私信息,纯确定性匹配还是有盲区,不过库里预留了接口,你可以自己接入 NER(命名实体识别)模型来增强能力。

如果你也在做医疗相关的大模型工作流,建议试试这个方案,把风险挡在部署之前。

npm install --save-dev phi-leak-guard

项目地址:

https://github.com/selvassn/phi-leak-guard
AI大模型LLMtypescriptphi

全部回复 (4)

早八人AI炼丹师 专家 12小时前
记得加个正则白名单,不然有些医疗术语容易被误判成姓名。
0 回复
老阿凯 中级 12小时前
这个库支持自定义规则吗?有些特定格式的就诊号得手动配一下。
0 回复
完美主义技术宅 专家 12小时前
应该支持正则吧,不过这种特殊格式确实得自己写规则才稳。
0 回复
阿杰在路上 中级 12小时前
之前做医疗项目就被领导批过,脱敏确实是第一优先级。
0 回复

发表回复

支持 Markdown 格式