Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
privacy-filter — 用于文本中PII检测与掩码的双向令牌分类模型,附带用于本地脱敏、评估和微调的CLI。 | Kitploit
工具/GitHubGitHub/openai/privacy-filter
防御工具数据泄露信息收集隐私保护秘密检测机器学习AI 安全
GitHubopenai/privacy-filter

privacy-filter

用于文本中PII检测与掩码的双向令牌分类模型,附带用于本地脱敏、评估和微调的CLI。

查看仓库
2.7k2424个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

OpenAI Privacy Filter

OpenAI Privacy Filter 是一个双向 token 分类模型,用于文本中个人可识别信息(PII)的检测与掩码。它面向高吞吐量的数据脱敏工作流,适用于需要可在本地部署、快速、具备上下文感知能力且可调优的模型的团队。

OpenAI Privacy Filter 通过自回归方式预训练,得到一个架构与 gpt-oss 相似但规模更小的检查点。随后,我们将该检查点转换为基于隐私标签分类体系的双向 token 分类器,并使用监督分类损失进行后训练。(有关 gpt-oss 的架构细节,请参阅 gpt-oss 模型卡。)该模型不是逐 token 生成文本,而是在单次前向传播中对输入序列进行标注,然后通过受约束的 Viterbi 过程解码出连贯的片段。对于每个输入 token,模型预测标签分类体系上的概率分布,该分类体系由下文描述的 8 个输出类别组成。

亮点:

  • 宽松的 Apache 2.0 许可证:非常适合实验、定制和商业部署。
  • 体积小:可在网页浏览器或笔记本电脑上运行——总计 1.5B 参数,50M 活跃参数。
  • 可微调:通过简单且数据高效的微调,使模型适应特定的数据分布。
  • 长上下文:128,000 token 的上下文窗口,能够以高吞吐量处理长文本,无需分块。
  • 运行时控制:通过预设操作点配置精确率/召回率权衡以及检测到的片段长度。

本仓库

本仓库包含用于运行、评估和微调 Privacy Filter 检查点的本地代码、CLI 和示例资源。它面向希望直接检查实现并在自己的环境中运行模型的团队。

仓库资源:License 和 Security Policy。

使用方法

  1. 在本地安装该包:
root@kitploit:~
pip install -e .

之后,你将获得一个 Python 脚本 opf,可以直接运行,也可以通过 python -m opf 运行。该脚本可以按如下所述的 3 种不同方式使用。

  1. 运行一次性脱敏:

默认情况下,opf 会在 OPF_CHECKPOINT 变量指向的目录或 ~/.opf/privacy_filter 中查找模型。如果在 ~/.opf/privacy_filter 位置未找到模型,则会下载模型。

root@kitploit:~
opf "Alice was born on 1990-01-02."

该代码支持在 GPU(默认)和 CPU 上运行。要在 CPU 上运行,请使用 --device cpu 标志:

root@kitploit:~
opf --device cpu "Alice was born on 1990-01-02."

要覆盖默认检查点,请传入 --checkpoint:

root@kitploit:~
opf --checkpoint /path/to/checkpoint_dir "Alice was born on 1990-01-02."

脱敏模式支持一次性脱敏整个文件

root@kitploit:~
opf -f /path/to/file

脱敏也可以通过管道执行,以支持复杂的单行命令:

root@kitploit:~
cat /path/to/file | grep -e 'some_pattern' | opf

如果未提供输入,opf 将进入交互模式。在此模式下,对于每个输入示例,CLI 会打印结构化的 JSON 输出;如果终端支持,还会使用 ANSI 颜色编码的预览。这些选项可以通过标志进行控制。

有关脱敏模式的更多标志和信息,请查阅 opf redact --help。

  1. 在带标签的数据集上运行评估:
root@kitploit:~
opf eval examples/data/sample_eval_five_examples.jsonl

examples/data/sample_eval_five_examples*.jsonl 下的示例评估夹具仅为合成示例数据,不描述真实人物或真实敏感记录。请参阅 examples/data/README.md。

有关评估模式的更多标志和信息,请查阅 opf eval --help。

  1. 在你自己的带标签数据集上进行微调:
root@kitploit:~
opf train /path/to/train.jsonl --output-dir /path/to/finetuned_checkpoint

有关微调模式的更多标志和信息,请查阅 opf train --help。

结构

  • opf/__main__.py:用于 redact、eval 和 train 模式的统一 CLI 入口点。
  • opf/_api.py:面向 Python 的 API,封装运行时和解码栈。
  • opf/_cli/:命令行参数解析和终端渲染辅助工具。
  • opf/_core/:运行时加载、片段转换和共享解码逻辑。
  • opf/_eval/:数据集加载、预处理、指标和评估运行器。
  • opf/_train/:本地微调参数解析和训练运行器。
  • opf/_model/:transformer 实现、检查点配置和权重加载。
  • examples/data/:示例评估文件以及可复现的微调演示数据集。
  • examples/scripts/finetuning/:可运行的微调演示工具。
  • FINETUNING.md:专注的微调工作流和演示脚本指南。
  • OUTPUT_SCHEMAS.md:JSON 响应和导出负载格式。
  • EVAL_AND_OUTPUT_MODES.md:脱敏和评估的输出模式说明。

模型详情

模型描述

Privacy Filter 是一个带片段解码的双向 token 分类模型。它分阶段训练,首先进行自回归预训练。随后,预训练语言模型被修改并后训练为双向带状注意力 token 分类器,带宽为 128(有效注意力窗口:257 个 token,包括自身)。这意味着:

  • 基础模型是一个自回归预训练检查点。
  • 语言模型输出头被替换为基于隐私标签的 token 分类头。
  • 后训练是监督式 token 级分类,而非下一 token 预测。
  • 推理时应用受约束的序列解码,以生成连贯的 BIOES(Begin、Inside、Outside、End、Single)片段标签。

在架构上,本仓库中的实现是一个 pre-norm transformer 编码器风格堆栈,包含:

  • token 嵌入
  • 8 个重复的 transformer 块
  • 带旋转位置嵌入的分组查询注意力,具有 14 个查询头和 2 个 KV 头(每组大小 = 每个 KV 头对应 7 个查询)
  • 稀疏专家混合前馈块,共 128 个专家(每个 token 进行 top-4 路由)
  • 最终基于隐私标签(而非自然语言词汇 token)的 token 分类头,残差流宽度为 d_model = 640。

相对于迭代式自回归方法,这种设计允许在一次前向传播中标注所有 token,从而提升吞吐量。相对于经典的掩码语言模型预训练方法,这是对自回归模型进行后训练转换,而非原生掩码 LM 设置。

输出形状

Privacy Filter 可以检测 8 个隐私片段类别:

  1. account_number
  2. private_address
  3. private_email
  4. private_person
  5. private_phone
  6. private_url
  7. private_date
  8. secret

为了执行 token 分类,每个非背景片段类别被扩展为带边界标签的 token 类别:B-<label>、I-<label>、E-<label>、S-<label>,再加上背景类别 O。因此,token 级输出类别的总数为 33:1 个背景类别 + 8 个片段标签 * 4 个边界标签 = 33 个类别。这意味着输出头为每个 token 输出 33 个 logits。对于长度为 T 的序列,输出形状为 [T, 33];对于大小为 B 的批次,形状为 [B, T, 33]。

token 标签词汇表由背景标签 O 以及每个隐私类别的 BIOES 标记变体组成:account_number、private_address、private_email、private_person、private_phone、private_url、private_date 和 secret。换句话说,对于每个类别,模型预测对应于开始、内部、结束和单 token 片段的 B-、I-、E- 和 S- 形式。在推理时,这些逐 token logits 通过受约束的序列解码被解码为连贯的 BIOES 片段标签。

序列解码原理与校准

原理

在 token 分类器产生逐 token logits 后,我们使用线性链转移评分的受约束 Viterbi 解码器来解码标签,而不是对每个 token 独立取 argmax。该解码器强制实施允许的 BIOES 边界转移,并使用起始、转移和结束项以及六个转移偏置参数对完整标签路径进行评分,这些参数控制背景持续、片段进入、片段延续、片段闭合以及边界到边界的交接。这种全局路径优化旨在通过使每个 token 决策依赖于序列级结构而不仅仅是局部 logits,来改善片段连贯性和边界稳定性,尤其是在噪声或混合格式文本中,仅靠局部 token 决策可能产生碎片化或不一致的边界。

操作点校准

序列解码参数可以抑制停留在背景,同时鼓励片段进入和延续,从而产生更宽泛、更连续的掩码以提高召回率,反之则提高精确率。在运行时,用户可以调整控制这种权衡的参数。

模型元数据

  • 开发者:OpenAI

  • 资助方:OpenAI

  • 分享方:OpenAI

  • 模型类型:用于隐私片段检测的双向 token 分类模型

  • 语言:主要为英语;报告了部分多语言鲁棒性评估

  • 许可证:Apache 2.0

  • 模型权重:https://huggingface.co/openai/privacy-filter

  • 演示:https://huggingface.co/spaces/openai/privacy-filter

  • 模型卡:OpenAI Privacy Filter Model Card

偏见、风险与局限性

风险:过度依赖

Privacy Filter 是一种脱敏和数据最小化辅助工具,而非匿名化、合规或安全保证。过度依赖该工具作为一刀切的匿名化声明,可能会导致无法实现预期的隐私目标。Privacy Filter 最好作为整体端到端隐私设计方法中多层防护的一层来使用。

局限性:静态标签策略

该模型只会识别与训练标签分类体系和定义相匹配的个人数据片段。现实中的隐私用例多样且复杂,适当的标签策略和决策边界的定义也可能不同。因此,模型默认设置可能无法满足组织特定的治理要求,除非进行校准/微调。

Privacy Filter 不支持在运行时动态配置标签策略;相反,更改策略需要对模型进行进一步微调。原生标签集及相关决策边界可能并不适合每个用例。例如,模型的训练策略旨在优先考虑个人标识符,通常会有意保留与个人关联不强的上下文;一些用户可能希望调整这一选择。

在非英语文本、非拉丁文字、受保护群体命名模式,或与模型训练相比分布外的领域上,性能可能会下降。

失败模式

与所有模型一样,Privacy Filter 也可能出错,例如:对不常见的个人姓名、地区命名惯例、首字母缩写、大量使用敬语的指代或领域特定标识符的漏检;当局部上下文模糊时,对公共实体、组织、地点或普通名词的过度脱敏;在混合格式文本、长文档或包含大量标点和布局伪影的文本中,片段边界碎片化或偏移;对新型凭据格式、项目特定 token 模式或分散在周围语法中的密钥的漏检;以及对类似密钥的良性高熵字符串、占位符、哈希、示例凭据或合成示例的过度脱敏。

这些局限性可能与人口统计、地区和领域差异相互作用。例如,在训练数据中代表性不足的姓名和标识符,或遵循与主导训练分布不同惯例的姓名和标识符,可能更容易被漏检或边界不一致。

高风险部署注意事项

在医疗、法律、金融、人力资源、教育和政府工作流等高敏感性场景中,需要额外谨慎。在这些场景中,假阴性和假阳性都可能代价高昂:漏检的片段可能暴露敏感信息,而过度的掩码可能移除审查、审计或下游决策所需的实质性上下文。

建议

  • 将 Privacy Filter 作为整体隐私设计方法的一部分使用,而不是作为一刀切的匿名化声明。
  • 在生产前,使用本地策略参考进行领域内评估。
  • 当策略与基础边界不同时,使用任务特定微调。
  • 为高敏感性工作流保留人工审查路径。
下载工具