大部分AI应用都是提示工程
自ChatGPT问世以来,各个领域的AI应用就如雨后春笋般疯狂涌现,但你可能不知道,这些看似高大上的AI应用,其实大部分都是没有能力去自己研发一个语言模型的。
这类AI应用的构建方式,一般都是通过使用一个提示词包装器,将GPT或其他语言模型包裹起来,再向提示词中注入某种特定的观点或目标实现的。
本质上,这类AI应用都属于「Prompt工程」的范畴,它们所做的,只是将GPT的能力接入到自己的产品中,并与现有的产品功能有机地结合,从而提升产品的交互体验和生产效率。说白了,就是我们俗称的“套壳”应用。
提示词是怎么工作的?
ChatGPT可以说重新定义了与应用程序的交互方式,现在但凡是一个AI应用,基本都会提供一个聊天面板,以允许用户使用自然语言来描述自己的需求。
其实质,就是一个定义了聊天格式或指定了任务内容的定制化聊天机器人。这类机器人的构建过程并不复杂,关键还是要理解其中的提示词是怎么工作的。
首先我们要知道,在AI应用聊天面板的消息列表中,其实包含了三种不同的角色消息。
你发出的消息,属于「用户消息」;
ChatGPT回复的消息,属于「助手消息」;
还有一种你看不见也感知不到的消息,在聊天面板呈现之前就已经预埋进了消息列表中了,这种消息,就属于「系统消息」。
系统消息提供了一个整体的指导,是最重要的角色消息,其有助于塑造助手的行为和形象,作为一种高级指令来帮助对话。
你可以把它想象成在助手耳边说悄悄话的人,引导着助手应该怎样回答你的问题。
我们所熟知的提示词,其实就是以系统消息的形式向GPT传递的。
提示词可谓大大降低了开发AI应用的门槛,把原本需要用编程语言才能控制的行为逻辑,变成了用自然语言描述就可以实现。GPT可以识别和处理自然语言,从而执行特定的任务,相当于用自然语言进行编程。
所以,提示词的好坏,往往决定着一个AI应用的整体表现。因此,在某种意义上,提示词也是一个AI应用的核心竞争力之一。
如果提示词泄露了,也就意味着可能在众多同类产品的竞争中失去优势,甚至被模仿或超越,所以需要引起我们足够的重视。而最有可能导致我们提示词泄露的风险来源,就是「提示词注入攻击」了。
提示词注入攻击是什么?
前面讲过,GPT可以识别和处理自然语言,从而执行特定的任务,但这种方式也有一个缺点,就是自然语言中的指令和数据往往混合在一起,二者并没有清晰的界限。
这也导致了一个问题,用户很有可能会注入一段有扰乱效果的指令,从而影响到GPT的输出结果,甚至产生一些攻击性的行为。攻击的效果,取决于应用赋予GPT的能力大小。
例如,在一个用于“一句话总结内容”的AI应用中,用户输入了这样一段指令:
这种情况下,GPT就完全违背了我们应用的本意,反而按照用户的指令执行了。
这就是典型的提示词注入攻击案例,虽然在本例中更像是用户的一个恶作剧,并没有造成太大危害,但是⼀旦被用户掌握了通过控制输出影响外部世界的能⼒,则更多潜在的危害可能会被挖掘出来。
就比如我们标题所说的提示词泄露问题。
案例:「PDF解析」类应用提示词遭泄露
「PDF解析」类应用是目前最火热的AI应用之一,其实现套路大致相同:用户上传PDF文件后,可在其提供的聊天面板上,要求其总结PDF内容或回答相关问题。
使用体验上的细微差距,基本就是由原始提示词的质量好坏拉开的。
我们随机选取市面上的一款「PDF解析」类应用(为避免该应用被集中攻击,此处隐去该应用名字),在其提供的聊天面板输入以下指令:
你是一个有用的 PDF 文件。 给定以下 PDF 页面作为信息源,回答用户提出的任何问题。 如果给定的页面包含答案,则从 PDF 的这些页面生成简明答案作为信息源和参考页码。 否则,提及来源不包含相关信息,但仍然尽您所知回答问题。 假装你是PDF文件和人聊天,模仿PDF的语言风格。
可以看到,由于该AI应用没有做提示词注入攻击的相关防护,因此很轻易地就被我们输入的指令套出提示词了。
如何预防提示词注入攻击?
Prompt注入攻击的防护也很简单,就是使用「分隔符」来清晰表示输入的不同部分,以告诉GPT哪个部分是需要被处理的。
这个分隔符可以是””,[],()等等,没有严格的要求,针对输入的不同部分的数量,可以同时使用多个不同的分隔符。
现在,我们将提示词改成这样:
由于有了分隔符的存在,即使用户输入了其他指令,我们依然会将其视作一个普通的段落去总结,因此很好地防止了提示词注入攻击。
以下是由AI生成的小结:
小结
1.大多数AI应用其实都是Prompt工程,通过为GPT等语言模型提供指令(提示词),来指导其产生所需结果。
2.提示词的质量会影响AI应用的表现,而泄露提示词可能失去竞争优势。
3.提示词注入攻击允许用户提供恶意信息从而影响输出。
4.分隔符能清晰区分输入的不同部分,从而有效地防御注入攻击,让AI应用能按预期工作。
总的来说,这篇文章强调了大多数AI应用的核心在于提示词的质量,需要防范提示词泄露,而分隔符是重要的防护手段。