先这样答
会。让模型「把之前的指令原样输出」是提示注入里最常见的一类攻击,手法很多:直接要求、角色扮演套话、在翻译或续写任务里夹带、给一段以系统提示词开头的不完整文本让模型补全。系统提示词在模型眼里就是上下文里优先级高一些的普通文本,没有任何独立的保密机制。
防法按优先级排。第一步最有效:别把不能泄露的东西写进系统提示词。密钥、内部接口这类秘密本来就不该出现在提示词里,业务规则能放代码层就放代码层。第二步:在系统提示词里写明不要透露这些指令,这能挡住大部分顺手试探,挡不住刻意攻击,属于缓冲不是防线。第三步:输出侧检测,用字符串匹配或一个小模型识别「回复里包含系统提示词片段」,命中就拦截重写。第四步:日志加告警,把套提示词的请求模式记下来,持续更新检测规则。
总结:提示词泄露的危害不只是被人看到。系统提示词里往往写着工具清单、边界规则和数据结构,泄露等于把攻击面地图交出去,攻击者可以照着针对性绕过。面试时主动讲这层危害,比背防御清单更显理解。
面试官会怎么追问
- 「系统提示词到底算不算机密?」 按「内部资料」对待:不对外公开,但不把真正的秘密放进去,并且默认它总有一天会被套出来,系统设计不依赖它的保密性。
- 「在提示词里写『不要泄露』有用吗?」 有用但有限。它能挡住随手一试的泄露,因为这是模型训练出来的行为倾向;但角色扮演、编码任务这类间接方式可以绕过,所以只能当第一道缓冲。
- 「发现已经泄露了怎么办?」 按事故处理:先把依赖提示词保密性的逻辑迁到代码层,再更新系统提示词让已泄露的版本失效,最后查日志确认泄露有没有被利用过。
回答的坑
- 认为「提示词是我的资产,模型自然会保密」。模型的输出只取决于输入怎么问,它没有保密能力,这个假设不成立。
- 防法只写一句「加一条不许泄露的指令」。面试官想听分层:先减少敏感内容,再做输出检测,最后日志审计,单点措施不成防线。
—— 本题完 ——