# NeMo PII 护栏：练习文本先掩码再交模型，用请求记录核对是否真的替换

已运行虚构PII已知实体替换与出站payload断言；未运行NeMo/Presidio自动检测，不把字符串替换成功称为PII识别率。

## 运行

在本目录使用独立虚拟环境并安装requirements.txt；脚本结果写入results。

```sh
python reference/audit.py
python reference/run_sdk.py
```

fixtures是原创输入与故意失败样本；作者真值、离线合成provider和实际SDK记录各自标明，不是模型正确率。需要真实模型/账号/GPU的步骤按正文另行授权运行。

## 1. 只用可分享的虚构联系信息

本题email使用example.invalid，电话为练习号码；标注哪些实体需要掩码。不要拿真实客户资料做公开教程截图。

## 2. 运行已知实体替换检查

audit.py把两项明确实体替换为EMAIL/PHONE，再断言原值不在作者请求里。它不是PII自动检测能力，也没调用NeMo或Presidio。

## 3. 配置实际PII检测与mask动作

按当前NeMo PII catalog安装依赖、设置实体类型并选择mask而非仅detect。确认输入rail在模型请求之前执行。

## 4. 拦截测试环境出站模型请求

使用可控请求记录核对最终payload，不只看前端星号。日志先脱敏，避免验证过程反而保存真实PII。

## 5. 加入漏检与非PII负例

测试分隔符、中文称谓及类似型号数字；保留未识别实体和误掩码。PII检测覆盖与实体语言支持需实际验证。

## 6. 核对业务可用性

掩码后仍能回答Q7工单问题，必要时以受控映射恢复显示。不要把占位符映射表发给同一外部模型抵消脱敏。

## 7. 交付rail配置与出站证据

保留脱敏请求、检测决定及遗漏清单。当前包只做作者已知实体替换，真实NeMo/Presidio和外部模型均未运行。

## 官方依据

- NeMo Guardrails 官方文档或源码：https://docs.nvidia.com/nemo/guardrails/latest/configure-guardrails/guardrail-catalog/pii-detection.md
