OpenAI Privacy Filter CLI完全指南:命令行、文件、管道与交互模式4种脱敏用法详解
【免费下载链接】privacy-filterOpenAI Privacy Filter项目地址: https://gitcode.com/gh_mirrors/pr/privacy-filter
OpenAI Privacy Filter 是 OpenAI 开源的本地隐私脱敏模型,能一次性识别并遮盖姓名、邮箱、电话、地址、账号、密钥等 8 类个人敏感信息(PII)。本文带你用它的命令行工具opf快速上手 PII 脱敏,详解命令行、文件、管道、交互4 种用法,并附上常用参数速查与输出结构说明,几分钟即可跑通第一个脱敏命令。
为什么选择 OpenAI Privacy Filter
- 🚀本地运行:数据不出本机,无需联网调用,适合高吞吐脱敏流程。
- 🧠上下文感知:单次前向传播完成标注,12.8 万 token 长上下文,无需分块。
- ⚙️可调精度:通过运行点调节精确率/召回率,支持数据高效微调。
- 📦Apache 2.0:可实验、可定制、可商用。
- 🔤8 类标签:
account_number、private_address、private_email、private_person、private_phone、private_url、private_date、secret。
模型与项目详情见 README.md。
快速开始:安装并首次脱敏
一键安装 opf 命令行工具
克隆仓库后本地安装(源码可用时也可跳过 clone 直接pip install -e .):
git clone https://gitcode.com/gh_mirrors/pr/privacy-filter cd privacy-filter pip install -e .安装后即可直接运行opf脚本,或等价地执行python -m opf。依赖与入口声明见 pyproject.toml。
一条命令完成文本脱敏
opf "Alice was born on 1990-01-02."模型默认从OPF_CHECKPOINT环境变量或~/.opf/privacy_filter目录查找权重,找不到会自动下载。默认在 GPU 上运行;CPU 运行加--device cpu:
opf --device cpu "Alice was born on 1990-01-02."要覆盖默认权重目录:
opf --checkpoint /path/to/checkpoint_dir "Alice was born on 1990-01-02."4 种脱敏用法详解
用法一:命令行直传文本(最常用)
适合单条、少量文本的快速脱敏,直接把文本作为参数:
opf "Quindle Testwick 的邮箱是 quindle.testwick@openai.com。"用法二:文件脱敏(-f 参数)
一次性脱敏整个文件,适合日志、报告等文本文件:
opf -f /path/to/file-f可重复传入以处理多个文件,每个文件作为一条完整输入。参数解析见 opf/main.py。
用法三:管道脱敏(灵活组合)
脱敏支持管道,方便与其他命令拼成一行复杂命令,例如先过滤再脱敏:
cat /path/to/file | grep -e 'some_pattern' | opf输入来自标准输入(stdin)时,opf会按行读取并自动跳过空行。读取逻辑见 opf/_cli/args.py。
用法四:交互模式(无输入自动进入)
不提供任何输入时,opf自动进入交互模式,逐行输入、逐条输出结构化 JSON:
opf交互模式下:
- 打印会话头部(checkpoint、device、n_ctx、output_mode);
- 每条输出附带ANSI 彩色预览(终端支持时),并用颜色图例标注各标签;
- 输入
/exit、quit或:q退出。
提示语与退出命令逻辑同样定义在 opf/_cli/args.py。
常用参数速查表
| 参数 | 说明 | 默认值 |
|---|---|---|
--device | 运行设备(cuda/cpu) | cuda |
--checkpoint | 覆盖权重目录 | OPF_CHECKPOINT或~/.opf/privacy_filter |
--n-ctx | 覆盖上下文长度 | 128000 |
--decode-mode | 解码方式:viterbi/argmax | viterbi |
--output-mode | typed保留分类 /redacted统一为通用标签 | typed |
--format | 输出text(仅遮盖文本)或json | 非交互text/ 交互json |
--json-indent | JSON 缩进级别 | 2 |
--viterbi-calibration-path | 本地校准 JSON 路径 | 自动查找<checkpoint>/viterbi_calibration.json |
-f/--text-file | 文本文件路径,可重复传入 | — |
--discard-overlapping-predicted-spans | 丢弃重叠的预测片段 | 关 |
--trim-whitespace/--no-trim-whitespace | 是否裁剪片段首尾空白 | 裁剪 |
参数定义见 opf/_cli/common.py 与 opf/_cli/args.py。
看懂输出:JSON 结构
opf对每条输入输出一次 JSON,典型结构如下(完整定义见 OUTPUT_SCHEMAS.md):
{ "schema_version": 1, "summary": { "output_mode": "typed", "span_count": 2, "by_label": { "private_person": 1, "private_date": 1 } }, "text": "Alice was born on 1990-01-02.", "detected_spans": [ { "label": "private_person", "start": 0, "end": 5, "text": "Alice", "placeholder": "<PRIVATE_PERSON>" }, { "label": "private_date", "start": 20, "end": 30, "text": "1990-01-02", "placeholder": "<PRIVATE_DATE>" } ], "redacted_text": "<PRIVATE_PERSON> was born on <PRIVATE_DATE>." }--output-mode redacted时,所有detected_spans[*].label会统一变为redacted。typed与redacted两种输出模式的区别,参考 EVAL_AND_OUTPUT_MODES.md。
进阶:评估与微调(一句话了解)
评估
opf eval:对带标注数据集跑指标,快速验证检测效果。opf eval examples/data/sample_eval_five_examples.jsonl微调
opf train:用自定义标注数据适配模型,适配自有标签体系。opf train /path/to/train.jsonl --output-dir /path/to/finetuned_checkpoint微调工作流见 FINETUNING.md,可复现演示脚本在 examples/scripts/finetuning/finetune_secret_demo.sh 与 examples/scripts/finetuning/finetune_custom_label_demo.sh,示例数据说明见 examples/data/README.md。
注意事项与限制
- ⚠️不是匿名化保证:Privacy Filter 是脱敏与数据最小化的辅助工具,不能单独作为匿名化或合规声明,建议作为端到端隐私设计中的一层。
- 🧩标签固定:只识别训练好的 8 类标签,组织级策略需校准或微调,无法在运行时动态改标签策略。
- 🌍非英文文本:对非英语、非拉丁文字及领域外数据,效果可能下降。
- 📉可能误判:漏检生僻人名、过度遮盖公开实体、碎片化/漂移边界、误报高熵占位符或样例密钥等。
完整风险提示见 README.md 的 “Bias, Risks, and Limitations” 章节。
上手清单
pip install -e .安装工具opf "..."脱敏一条文本opf -f 文件脱敏整个文件cat 文件 | opf管道脱敏opf进入交互模式opf eval ...评估 /opf train ...微调
【免费下载链接】privacy-filterOpenAI Privacy Filter项目地址: https://gitcode.com/gh_mirrors/pr/privacy-filter
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考