系统提示泄露怎么检测
系统提示泄露指模型把提示内容复述给用户。提示与用户输入共享同一上下文,所以复述、翻译、改写、编码转换都可能把内容带出来,关键词过滤天然滞后。可行的检测思路是两条腿走:提示里埋 canary 串做高置信信号,再对输出做与提示文本的片段相似度比对做兜底。
基本信息
| 为何难防 | 提示与输入共享上下文,复述被包装成正常回答很难区分 |
|---|---|
| 检测手段 | 提示中埋 canary 串;对输出与提示片段做相似度阈值比对 |
| 误报控制 | 按片段长度与多信号联合命中判断,短片段不单独告警 |
| 处置动作 | 更新提示、轮换可能暴露的密钥与端点、评估历史输出暴露面 |
| 前提 | 系统提示不承载敏感凭证,按它可能被看到来设计 |
典型使用场景
- 上线前自测:用复述、翻译、分段索要等问法试探,看能否套出提示
- 线上巡检:对输出流做相似度抽样,命中即入人工复核队列
- 泄露事件响应:确认泄露范围后轮换密钥,并回查历史输出是否已外流
- 对外接口防护:第三方调用方可能专门尝试套提示,检测要覆盖 API 通道
- 评测集积累:把成功的诱导问法收进回归集,模型换代后重测
检测逻辑示意
检测逻辑示意
for span in sliding_window(output):
if similarity(span, prompt_fragments) > 阈值:
记录疑似泄露片段与相似度得分
if canary_token in output:
触发高置信告警并转人工复核
# 保存命中的原文片段作为证据,不要只存一个布尔结论
# canary 串要放在提示中不显眼的位置,且定期更换信号与置信度
| 信号 | 置信度 | 处置 |
|---|---|---|
| canary 串完整出现 | 高 | 直接告警并人工复核 |
| 长片段高相似度命中 | 中高 | 抽样复核,确认是否改写复述 |
| 零散术语重合 | 低 | 不单独告警,仅累计观察 |
| 输出长度异常且含结构描述 | 中 | 结合相似度判断,单独看易误报 |
不要把密钥写进系统提示,再指望检测兜底:检测是事后发现手段,泄露已经发生,损失只能靠轮换挽回。