LLMs 如何處理相互矛盾的指令?指令遵循優(yōu)先級(jí)實(shí)驗(yàn) 原創(chuàng)
編者按:想象一下,你正在開(kāi)發(fā)一個(gè) AI 助手,突然發(fā)現(xiàn) system message 和用戶(hù)提示詞存在沖突,這時(shí) AI 會(huì)聽(tīng)誰(shuí)的?這種情況不僅困擾著開(kāi)發(fā)者,還可能導(dǎo)致 AI 系統(tǒng)的不穩(wěn)定和不可預(yù)測(cè),影響用戶(hù)體驗(yàn)和系統(tǒng)可靠性。
本文作者通過(guò)一系列精心設(shè)計(jì)的實(shí)驗(yàn),深入探討了 GPT-4o 和 Claude-3.5 等頂尖大語(yǔ)言模型在面對(duì) system message、prompt 和 few-shot examples 相互矛盾時(shí)的行為模式。研究結(jié)果揭示了一個(gè)令人驚訝的事實(shí):即使是最先進(jìn)的 AI 系統(tǒng),在處理矛盾指令時(shí)也表現(xiàn)出了不一致性,其行為難以準(zhǔn)確預(yù)測(cè)。
實(shí)驗(yàn)結(jié)果如下:
- 當(dāng) prompt 的指令與 few-shot examples 矛盾時(shí),模型沒(méi)有表現(xiàn)出明顯的偏好。
- 當(dāng) system message 與 few-shot examples 矛盾時(shí),GPT-4o 傾向于遵循 system message,而 Claude-3.5 表現(xiàn)出隨機(jī)性。
- 當(dāng) system message 與 prompt 的指令矛盾時(shí),兩個(gè)模型都傾向于遵循 prompt 指令。
- 在三者都矛盾的情況下,GPT-4o 傾向于遵循 system message,而 Claude-3.5 傾向于遵循 prompt 的指令。
作者 | Yennie Jun
編譯 | 岳揚(yáng)
如果 system message、prompt 和 examples 中的指令相互矛盾,那么 LLMs 在回復(fù)時(shí)會(huì)遵循哪些指令?原圖由原文作者制作
大語(yǔ)言模型面對(duì)提示詞中的矛盾指令會(huì)如何應(yīng)對(duì)?
“認(rèn)知失調(diào)\[1]”是一個(gè)心理學(xué)術(shù)語(yǔ),描述的是當(dāng)一個(gè)人同時(shí)持有多種相互矛盾的觀點(diǎn)時(shí)內(nèi)心的不適感。比如,在超市購(gòu)物時(shí),你看到結(jié)賬通道上寫(xiě)著“限10件商品以下”,但這個(gè)通道排隊(duì)的人每人手里都不止10件商品,這時(shí)你該怎么辦?
在探討人工智能時(shí),我特別好奇大語(yǔ)言模型(LLMs)在面對(duì)類(lèi)似認(rèn)知失調(diào)的情況——比如指示模型將英語(yǔ)內(nèi)容翻譯成韓語(yǔ),卻提供了將英語(yǔ)內(nèi)容翻譯為法語(yǔ)的示例——會(huì)如何處理。
在本文中,我通過(guò)向 LLMs 提供相互矛盾的信息進(jìn)行了一系列實(shí)驗(yàn),以確定模型更傾向于遵循哪一方的信息。
用戶(hù)可以通過(guò)以下三種方式指導(dǎo) LLMs 執(zhí)行任務(wù):
- 在 system message 中明確指出任務(wù)內(nèi)容
- 在常規(guī)提示詞(prompt)中直接描述任務(wù)要求
- 提供幾個(gè)展示“正確行為”的示例
向語(yǔ)言模型傳達(dá)指令的不同方法,可以選擇其中任一或多種方法。原圖由原文作者制作
在這些方法中,system message 似乎最為神秘(至少我個(gè)人這么認(rèn)為)。根據(jù)微軟\[2]的說(shuō)法,“system message 用于在對(duì)話(huà)初始階段向模型傳遞指令或提供必要的背景信息。 ”
目前,system message 對(duì)提示詞(prompt)的影響力度(與直接在提示詞中嵌入 system message 相比)尚不明確。至少,至今我未曾見(jiàn)到過(guò)針對(duì)這一點(diǎn)的深入分析。
提示詞指令(prompt instruction)通常用來(lái)明確告訴模型該做什么,比如“將英語(yǔ)翻譯成法語(yǔ)”、“校對(duì)文章,修正所有語(yǔ)法錯(cuò)誤”或“編寫(xiě)代碼解決以下問(wèn)題”。
而 few-shot examples 則是一種可選的方式,向模型展示對(duì)于類(lèi)似輸入的正確輸出應(yīng)該是怎樣的。
基于上述定義,我想要探討以下問(wèn)題:
- few-shot examples 真的那么重要嗎?如果在提示詞中給出了相互矛盾的指令,LLMs 會(huì)更傾向于遵循示例(examples)還是指令(instructions)呢?
- system message 的影響力有多大?如果在 system message 中給出一條指令(instruction),而在常規(guī)提示詞中給出另一條指令,LLMs會(huì)更傾向于遵從哪一條?
為了解答這些問(wèn)題,我制作了一個(gè)小型數(shù)據(jù)集(可在此鏈接\[3]查看),里面包含了一些帶有矛盾指令(instructions)和 few-shot examples 的簡(jiǎn)單任務(wù)。在文章的后續(xù)部分,我將展示一個(gè)將英語(yǔ)翻譯成各種語(yǔ)言的實(shí)例。
以下實(shí)驗(yàn)是在 OpenAI 的 GPT-4o 模型\[4]和 Anthropic 最新推出的 Claude-3.5 模型\[5]上進(jìn)行的。
01 實(shí)驗(yàn)1:提示詞指令與 few-shot examples 之間的沖突
實(shí)驗(yàn) 1 的一個(gè)示例,其中的提示詞指令與所提供的 few-shot examples 發(fā)生了沖突。此部分內(nèi)容由原文作者設(shè)計(jì)
當(dāng)大語(yǔ)言模型接收到與 few-shot examples 相沖突的提示詞指令時(shí),它的行為并不容易預(yù)測(cè)。 研究發(fā)現(xiàn),面對(duì)這種矛盾,模型并沒(méi)有表現(xiàn)出明顯的傾向性,既不偏好遵循提示詞指令,也不偏好 few-shot examples。
在 GPT-4o 模型中,更常見(jiàn)的情況是它會(huì)忽略提示詞指令,轉(zhuǎn)而遵循 few-shot examples(或者在個(gè)別情況下,模型會(huì)因?yàn)闊o(wú)法正確回應(yīng)任何一條相互矛盾的指令而出錯(cuò))。而 Claude-3.5 模型則是幾乎隨機(jī)地選擇遵循提示詞指令或是 few-shot examples。
在首個(gè)實(shí)驗(yàn)中,我們向模型提供了提示詞指令以及與之相矛盾的一組 few-shot examples。實(shí)驗(yàn)結(jié)果表明,模型在遵循提示詞指令與 few-shot examples 之間沒(méi)有明確的偏好。此部分內(nèi)容由原文作者設(shè)計(jì)
02 實(shí)驗(yàn)2:system message 與 few-shot examples 之間的沖突
實(shí)驗(yàn) 2 的一個(gè)示例,其中 system message 中的指令與 few-shot examples 發(fā)生了沖突。此部分內(nèi)容由原文作者設(shè)計(jì)
本實(shí)驗(yàn)與前一個(gè)實(shí)驗(yàn)非常接近,區(qū)別僅在于指令(例如“將英語(yǔ)內(nèi)容翻譯成德語(yǔ)”)被放置在了 system message 中,而非提示詞里。
在大多數(shù)任務(wù)中,GPT-4o 更傾向于遵從 system message 中的指令。 這與它在第一個(gè)實(shí)驗(yàn)中的表現(xiàn)不同,在那個(gè)實(shí)驗(yàn)中,相同的指令位于常規(guī)提示詞中,模型更傾向于遵從 few-shot examples。
而 Claude-3.5 的表現(xiàn)則與第一個(gè)實(shí)驗(yàn)如出一轍(它幾乎是以隨機(jī)的方式?jīng)Q定是遵從 system message 還是 few-shot examples)。
在第二個(gè)實(shí)驗(yàn)中,我們向模型提供了 system message 中的指令以及與之相矛盾的一組 few-shot examples。結(jié)果顯示,GPT-4o 更傾向于遵從 system message 中的指令,而 Claude-3.5 則沒(méi)有表現(xiàn)出明顯的偏好。此部分內(nèi)容由原文作者設(shè)計(jì)
這告訴我們什么?一種解釋是,對(duì)于 GPT-4o 而言,system message 中的指令比提示詞中的指令影響力更大(至少在這些示例中是這樣)。而對(duì)于 Claude 來(lái)說(shuō),system message 的重要性似乎較低,其效果與直接將消息放入提示詞中相似。
03 實(shí)驗(yàn)3:system message 與提示詞指令的沖突
實(shí)驗(yàn) 3 的一個(gè)示例,其中 system message 中的指令與提示詞(prompt)中的指令發(fā)生了沖突。此部分內(nèi)容由原文作者設(shè)計(jì)
在這個(gè)實(shí)驗(yàn)中,我們?nèi)サ袅?few-shot experiments 的環(huán)節(jié)。system message 和提示詞(prompt)中的指令相互對(duì)立。在這種情況下,兩個(gè)模型幾乎都選擇了忽略 system message 中的指令,而遵循提示詞(prompt)中的指令。
在實(shí)驗(yàn) 3 中,system message 中的指令和 prompt 中的指令相互矛盾。兩種模型都更傾向于忽略 system message 中的指令,而遵循 prompt 中的指令。此部分內(nèi)容由原文作者設(shè)計(jì)
04 實(shí)驗(yàn)4:system message、提示詞和 few-shot examples 全面沖突
實(shí)驗(yàn) 4 中的一個(gè)示例,其中 system message 中的指令、prompt 中的指令以及 few-shot examples 之間全面沖突。此部分內(nèi)容由原文作者設(shè)計(jì)
在這個(gè)實(shí)驗(yàn)中,我們故意制造了一些混亂,以進(jìn)一步測(cè)試模型的應(yīng)對(duì)能力。實(shí)驗(yàn)中,system message 中的指令、提示詞的指令和 few-shot examples 完全相互矛盾。
可想而知,模型的行為模式并不穩(wěn)定。
面對(duì)這些矛盾,讓我感到驚訝的是,GPT-4o 更傾向于遵從 system message 中的指令,而 Claude-3.5 則更傾向于按照 prompt 中的指令行事。
在實(shí)驗(yàn) 4 中,我們向模型提供的 system message、prompt 和 few-shot examples 中存在相互矛盾的內(nèi)容。結(jié)果顯示,GPT-4o 更傾向于遵照 system message 的指令,而 Claude-3.5 則更傾向于遵照 prompt 中的指令。此部分內(nèi)容由原文作者設(shè)計(jì)
05 Discussion and Conclusions
在本文中,我探索了在 system message 、prompt 以及 few-shot examples 中向語(yǔ)言模型提供相互矛盾指令的實(shí)驗(yàn)。
實(shí)驗(yàn)得出了一些相互矛盾的結(jié)果 —— 有時(shí)候模型更傾向于遵循 system message 中的指令,而在稍有不同的實(shí)驗(yàn)設(shè)置下,模型的行為模式則會(huì)發(fā)生變化。system message 似乎對(duì) GPT-4o 的輸出影響更為顯著,而對(duì) Claude-3.5 的影響則相對(duì)較小。
few-shot examples 在引導(dǎo)模型進(jìn)行決策時(shí)同樣扮演了關(guān)鍵角色(盡管并非在所有情況下都有效)。 語(yǔ)言模型通過(guò) few-shot examples 進(jìn)行“即時(shí)學(xué)習(xí)”的能力(即所謂的“上下文學(xué)習(xí)”),在面對(duì)相互矛盾的指令時(shí)尤為凸顯。這讓我們想起了 Anthropic 最近提出的“Many-shot jailbreaking”技術(shù),該技術(shù)表明,即使語(yǔ)言模型在訓(xùn)練時(shí)被教導(dǎo)避免產(chǎn)生有害內(nèi)容,通過(guò)提供足夠多的有害行為示例,仍然有可能改變其行為,使其產(chǎn)生不期望的輸出。
Anthropic’s Many-shot jailbreaking\[6].
文章中的實(shí)驗(yàn)研究是基于有限數(shù)量的、經(jīng)過(guò)精心挑選和準(zhǔn)備的示例進(jìn)行的。對(duì)于語(yǔ)言模型在面對(duì)提示詞中的不同形式矛盾時(shí)的處理方式,目前的研究還遠(yuǎn)遠(yuǎn)不夠,還有很多不同的角度和方法需要去探索。
如果采用本文作者使用的一些示例的變化形式,并且結(jié)合其他不同的語(yǔ)言模型進(jìn)行測(cè)試,那么很可能會(huì)觀察到與本文中不同的結(jié)果。GPT 和 Claude 模型的未來(lái)版本,也可能不會(huì)完全遵循本文發(fā)現(xiàn)的特定行為模式。
當(dāng)語(yǔ)言模型接收到提示詞中的矛盾指令時(shí),它們的行為表現(xiàn)并不是始終如一的。本文的重點(diǎn)不在于這些模型針對(duì)特定示例或任務(wù)與哪些具體指令保持一致,而在于這種一致性實(shí)際上并不存在。
system message 中的指令是否應(yīng)該始終具有最高的優(yōu)先級(jí)?語(yǔ)言模型是否應(yīng)該將靈活性視為最重要的原則,并始終遵循最新的指令(即便該指令與之前的指令相矛盾),或者是否應(yīng)該重視“從實(shí)踐中學(xué)習(xí)”的原則,并與其所接收的少量“correct answers”示例保持一致(即使這些示例可能與 system message 或其他指令相沖突)。
上述討論不僅限于本文構(gòu)造的測(cè)試示例,還適用于現(xiàn)實(shí)世界中的其他場(chǎng)景 —— 比如,system message 要求模型提供幫助,而 few-shot examples 卻指導(dǎo)模型如何采取有害的行為。又或者,提示詞中的 few-shot examples 未能更新,無(wú)法反映最新的指令。
對(duì)于語(yǔ)言模型如何處理相互矛盾或沖突的指令,以及它們?nèi)绾卧诓煌榫诚伦鞒龇磻?yīng),我們還有很多未知之處,但深入研究和了解更多這方面的信息是非常重要的。
Thanks for reading!
Hope you have enjoyed and learned new things from this blog!
About the authors
Yennie Jun
AI researcher, data scientist, writer <??http://artfish.ai/??>
END
本期互動(dòng)內(nèi)容 ??
?如果讓你設(shè)計(jì)一個(gè)實(shí)驗(yàn)來(lái)測(cè)試AI如何處理矛盾指令,你會(huì)如何設(shè)計(jì)?有什么獨(dú)特的想法嗎?
??文中鏈接??
\[1]<??https://en.wikipedia.org/wiki/Cognitive_dissonance??>
\[2]<??https://microsoft.github.io/Workshop-Interact-with-OpenAI-models/Part-2-labs/System-Message/??>
\[4]<??https://openai.com/index/hello-gpt-4o/??>
\[5]<??https://www.anthropic.com/news/claude-3-5-sonnet??>
\[6]<??https://www.anthropic.com/research/many-shot-jailbreaking??>
原文鏈接:
<??https://towardsdatascience.com/dealing-with-cognitive-dissonance-the-ai-way-1f182a248d6d??>
