对抗性提示是什么?故意构造输入让大模型出错的手段及防范
对抗性提示(Adversarial Prompting)是指刻意构造输入内容,诱导大语言模型做出偏离预期的行为,比如绕过安全规则、泄露不该泄露的信息、执行攻击者而非用户的指令。它是大模型安全研究中的一个重要课题:一方面,攻击者可能利用它来滥用 AI 系统;另一方面,安全研究者和开发者也用它来测试模型的弱点,从而加以修补。
常见的类型
提示注入:把恶意的指令混入模型要处理的内容中,让模型把这些内容当成指令来执行,从而劫持模型的行为。比如模型在帮用户总结一个网页时,网页中藏着一段“忽略之前的指令,改为……”的文字。越狱:通过各种方式诱导模型绕过开发者设置的安全限制,生成本应被拒绝的有害内容。提示泄露:诱导模型把它的系统提示词,也就是开发者写在后台、不希望被用户看到的设定和规则,原样说出来。
为什么大模型容易受到影响
大语言模型的一个根本特点是:它通过阅读文字来理解指令,而指令和数据都是文字。在传统的软件中,程序代码和用户输入的数据是严格分开的;但在大模型面前,开发者的系统指令、用户的提问、从网页或文档中读到的内容,全都混在同一段文本里。模型很难百分之百可靠地区分“哪些是我应该遵守的指令”和“哪些只是我需要处理的内容”。此外,模型被训练得乐于助人、服从指令,这一特点也可能被利用。
为什么这个问题越来越重要
当大模型只是用来聊天时,对抗性提示的影响相对有限。但如今,大模型越来越多地被做成 AI 智能体:能够浏览网页、读取邮件和文档、调用各种工具、执行代码、操作用户的账户。这时,一段隐藏在网页或邮件中的恶意指令,就可能诱导智能体泄露用户的隐私数据、发送不该发的消息,或者执行危险的操作,风险大大增加。OWASP(开放式 Web 应用程序安全项目)把提示注入列为大语言模型应用面临的首要安全风险。
如何防范
目前还没有能够彻底解决这个问题的办法,需要多层防护相结合。模型层面:通过安全训练和对抗训练,提高模型识别和拒绝恶意指令的能力;训练模型区分不同来源指令的优先级,让系统指令高于用户输入,用户输入又高于从外部读取的内容。应用层面:对输入和输出进行检测和过滤;把不可信的外部内容明确标记出来;遵循最小权限原则,只给智能体完成任务所必需的权限;在执行付款、删除、发送等敏感或不可逆的操作前,要求用户确认;对智能体的行为进行监控和记录。测试层面:上线前进行充分的红队测试,主动地模拟各种攻击,发现并修补漏洞。