GPT-4 官方使用指南炸裂登場(chǎng)啦!
你沒聽錯(cuò),這次不需要自己做筆記了,OpenAI 親自幫你整理了一份。
據(jù)說匯聚了大伙兒 6 個(gè)月的使用經(jīng)驗(yàn),你、我、他的提示訣竅都融匯其中。
雖然總結(jié)下來只有六大策略,但該有的細(xì)節(jié)可絕不含糊。
不僅普通 GPT-4 用戶可以在這份秘籍中 get 提示技巧,或許應(yīng)用開發(fā)者也可以找到些許靈感。
網(wǎng)友們紛紛評(píng)論,給出了自己的“讀后感”:
好有意思??!總結(jié)來說,這些技巧的核心思想主要有兩點(diǎn)。一是我們得寫得更具體一些,給一些細(xì)節(jié)的提示。其次,對(duì)于那些復(fù)雜的任務(wù),我們可以把它們拆分成一些小的提示來完成。
OpenAI 表示,這份攻略目前僅針對(duì) GPT-4。(當(dāng)然,你也可以在其它 GPT 模型上試試?)
趕緊瞧瞧,這份秘籍里究竟都有啥好東西。
6 大干貨技巧全在這
策略一:寫清楚指令
要知道,模型可不會(huì)“讀心術(shù)”,所以你得把你的要求明明白白地寫出來。
當(dāng)模型輸出變得太啰嗦時(shí),你可以要求它回答簡(jiǎn)潔明了。相反地,如果輸出太過簡(jiǎn)單,你可以毫不客氣地要求它用專業(yè)水平來寫。
如果你對(duì) GPT 輸出的格式不滿意,那就先給它展示你期望的格式,并要求它以同樣的方式輸出。
總之,盡量別讓 GPT 模型自己去猜你的意圖,這樣你得到的結(jié)果就更可能符合你的預(yù)期了。
實(shí)用技巧:
1、有細(xì)節(jié)才能得到更相關(guān)的答案
為了使輸出和輸入具有強(qiáng)相關(guān)性,一切重要的細(xì)節(jié)信息,都可以喂給模型。
比如你想讓 GPT-4:總結(jié)會(huì)議記錄
就可以盡可能在表述中增加細(xì)節(jié):
將會(huì)議記錄總結(jié)成一段文字。然后編寫一個(gè) Markdown 列表,列出與會(huì)人員及其主要觀點(diǎn)。最后,如果與會(huì)人員有關(guān)于下一步行動(dòng)的建議,請(qǐng)列出來。
2、要求模型扮演特定角色
通過改變系統(tǒng)消息(system message),GPT-4 會(huì)更容易扮演特定的角色,比在對(duì)話中提出要求的重視程度更高。
如規(guī)定它要回復(fù)一個(gè)文件,這份文件中的每個(gè)段落都要有好玩的評(píng)論:
3、用分隔符清晰標(biāo)示輸入的不同部分
用 """三重引號(hào)"""、<XML 標(biāo)記>、節(jié)標(biāo)題等分隔符標(biāo)記出文本的不同部分,可以更便于模型進(jìn)行不同的處理。在復(fù)雜的任務(wù)中,這種標(biāo)記細(xì)節(jié)就顯得格外重要。
4、明確指定完成任務(wù)所需的步驟
有些任務(wù)按步驟進(jìn)行效果更佳。因此,最好明確指定一系列步驟,這樣模型就能更輕松地遵循這些步驟,并輸出理想結(jié)果。比如在系統(tǒng)消息中設(shè)定按怎樣的步驟進(jìn)行回答。
5、提供示例
如果你想讓模型輸出按照一種不是能夠很好描述出來的特定樣式,那你就可以提供示例。如提供示例后,只需要告訴它“教我耐心”,它就會(huì)按照示例的風(fēng)格,將其描述得生動(dòng)形象。
6、指定所需輸出長(zhǎng)度
你還可以要求模型具體生成多少個(gè)單詞、句子、段落、項(xiàng)目符號(hào)等。但是,在要求模型生成特定數(shù)量的單詞 / 字的時(shí)候,它有可能不會(huì)那么精準(zhǔn)。
策略二:提供參考文本
當(dāng)涉及到深?yuàn)W的話題、引用和 URL 等內(nèi)容時(shí),GPT 模型可能會(huì)一本正經(jīng)地胡說八道。
為 GPT-4 提供可以參考的文本,能夠減少虛構(gòu)性回答的出現(xiàn),使回答的內(nèi)容更加可靠。
實(shí)用技巧:
1、讓模型參照參考資料進(jìn)行回答
如果我們能夠向模型提供一些和問題有關(guān)的可信信息,就可以指示它用提供的信息來組織回答。
2、讓模型引用參考資料進(jìn)行回答
如果在上面的對(duì)話輸入中已經(jīng)補(bǔ)充了相關(guān)信息,那么我們還可以直接要求模型在回答中引用所提供的信息。
這里要注意的是,可以通過編程,對(duì)讓模型對(duì)輸出中引用的部分進(jìn)行驗(yàn)證注釋。
策略三:拆分復(fù)雜任務(wù)
相比之下,GPT-4 在應(yīng)對(duì)復(fù)雜任務(wù)時(shí)出錯(cuò)率更高。
然而,我們可以采取一種巧妙的策略,將這些復(fù)雜任務(wù)重新拆解成一系列簡(jiǎn)單任務(wù)的工作流程。
這樣一來,前面任務(wù)的輸出就可以被用于構(gòu)建后續(xù)任務(wù)的輸入。
就像在軟件工程中將一個(gè)復(fù)雜系統(tǒng)分解為一組模塊化組件一樣,將任務(wù)分解成多個(gè)模塊,也可以讓模型的表現(xiàn)更好。
實(shí)用技巧:
1、進(jìn)行意圖分類
對(duì)于需要處理不同情況的大量具有獨(dú)立性的任務(wù),可以先對(duì)這些任務(wù)進(jìn)行分類。
然后,根據(jù)分類來確定所需的指令。
比如,對(duì)于客戶服務(wù)應(yīng)用程序,可以進(jìn)行查詢分類(計(jì)費(fèi)、技術(shù)支持、賬戶管理、一般查詢等)。
當(dāng)用戶提出:
我需要讓我的互聯(lián)網(wǎng)重新恢復(fù)正常。
根據(jù)用戶查詢的分類,可以鎖定用戶的具體訴求了,就可以向 GPT-4 提供一組更具體的指令,來進(jìn)行下一步操作。
例如,假設(shè)用戶需要在“故障排除”方面尋求幫助。
就可以設(shè)定下一步的方案:
要求用戶檢查路由器的所有電纜是否已連接……
2、對(duì)先前對(duì)話進(jìn)行概括或篩選
由于 GPT-4 的對(duì)話窗口是有限制的,上下文不能太長(zhǎng),不能在一個(gè)對(duì)話窗口中無限進(jìn)行下去。
但也不是沒有解決辦法。
方法之一是對(duì)先前的對(duì)話進(jìn)行概括。一旦輸入的文本長(zhǎng)度達(dá)到預(yù)定的閾值,就可以觸發(fā)一個(gè)查詢,概括對(duì)話的一部分,被概括出來的這部分內(nèi)容可以變成系統(tǒng)消息的一部分。
此外,可以在對(duì)話過程中就在后臺(tái)對(duì)前面的對(duì)話進(jìn)行概括。
另一種方法是檢索先前的對(duì)話,使用基于嵌入的搜索實(shí)現(xiàn)高效的知識(shí)檢索。
3、逐段概括長(zhǎng)文檔,并遞歸構(gòu)建完整概述
還是文本過長(zhǎng)的問題。
比如你要讓 GPT-4 概括一本書,就可以使用一系列查詢來概括這本書的每個(gè)部分。
然后將部分概述連接起來進(jìn)行總結(jié),匯成一個(gè)總的答案。
這個(gè)過程可以遞歸進(jìn)行,直到整本書被概括。
但是有些部分可能要借前面部分的信息才能理解后續(xù)部分,這里有一個(gè)技巧:
在概括當(dāng)前內(nèi)容時(shí),將文本中當(dāng)前內(nèi)容之前的內(nèi)容概述一起總結(jié)進(jìn)來,進(jìn)行概括。
簡(jiǎn)單來說,用前面部分的“摘要”+ 當(dāng)前部分,然后進(jìn)行概括。
OpenAI 之前還使用基于 GPT-3 訓(xùn)練的模型,對(duì)概括書籍的效果進(jìn)行了研究。
策略四:給 GPT 時(shí)間“思考”
如果讓你計(jì)算 17 乘 28,你可能不會(huì)立刻知道答案,但是可以通過一些時(shí)間計(jì)算出來。
同樣的道理,當(dāng) GPT-4 接收到問題時(shí),它并不會(huì)花時(shí)間仔細(xì)思考,而是試圖立刻給出答案,這樣就可能導(dǎo)致推理出錯(cuò)。
因此,在讓模型給出答案前,可以先要求它進(jìn)行一系列的推理過程,幫助它通過推理來得出正確的答案。
實(shí)用技巧:
1、讓模型制定解決方案
你可能有時(shí)候會(huì)發(fā)現(xiàn),當(dāng)我們明確指示模型在得出結(jié)論之前從基本原理出發(fā)進(jìn)行推理時(shí),我們可以獲得更好的結(jié)果。
比如說,假設(shè)我們希望模型評(píng)估學(xué)生解答數(shù)學(xué)問題的方案。
最直接的方法是簡(jiǎn)單地詢問模型學(xué)生的解答是否正確。
在上圖中,GPT-4 認(rèn)為學(xué)生的方案是正確的。
但實(shí)際上學(xué)生的方案是錯(cuò)誤的。
這時(shí)候就可以通過提示模型生成自己的解決方案,來讓模型成功注意到這一點(diǎn)。
在生成了自己的解決方案,進(jìn)行一遍推理過后,模型意識(shí)到之前學(xué)生的解決方案不正確。
2、隱藏推理過程
上面講到了讓模型進(jìn)行推理,給出解決方案。
但在某些應(yīng)用中,模型得出最終答案的推理過程不適合與用戶共享。
比如,在作業(yè)輔導(dǎo)中,我們還是希望鼓勵(lì)學(xué)生制定自己的解題方案,然后得出正確答案。但模型對(duì)學(xué)生解決方案的推理過程可能會(huì)向?qū)W生揭示答案。
這時(shí)候我們就需要模型進(jìn)行“內(nèi)心獨(dú)白”策略,讓模型將輸出中要對(duì)用戶隱藏的部分放入結(jié)構(gòu)化格式中。
然后,在向用戶呈現(xiàn)輸出之前,對(duì)輸出進(jìn)行解析,并且僅使部分輸出可見。
就像下面這個(gè)示例:
先讓模型制定自己的解決方案(因?yàn)閷W(xué)生的有可能是錯(cuò)的),然后與學(xué)生的解決方案進(jìn)行對(duì)比。
如果學(xué)生的答案中哪一步出錯(cuò)了,那就讓模型針對(duì)這一步給出一點(diǎn)提示,而不是直接給學(xué)生完整的正確的解決方案。
如果學(xué)生還是錯(cuò)了,那就再進(jìn)行上一步的提示。
還可以使用“查詢”策略,其中除了最后一步的查詢以外,所有查詢的輸出都對(duì)用戶隱藏。
首先,我們可以要求模型自行解決問題。由于這個(gè)初始查詢不需要學(xué)生的解決方案,因此可以省略掉。這也提供了額外的優(yōu)勢(shì),即模型的解決方案不會(huì)受到學(xué)生解決方案偏見的影響。
接下來,我們可以讓模型使用所有可用信息來評(píng)估學(xué)生解決方案的正確性。
最后,我們可以讓模型使用自己的分析來構(gòu)建導(dǎo)師的角色。
你是一名數(shù)學(xué)導(dǎo)師。如果學(xué)生回答有誤,請(qǐng)以不透露答案的方式向?qū)W生進(jìn)行提示。如果學(xué)生答案無誤,只需給他們一個(gè)鼓勵(lì)性的評(píng)論。
3、詢問模型是否遺漏了內(nèi)容
假設(shè)我們正在讓 GPT-4 列出一個(gè)與特定問題相關(guān)的源文件摘錄,在列出每個(gè)摘錄之后,模型需要確定是繼續(xù)寫入下一個(gè)摘錄,還是停止。
如果源文件很大,模型往往會(huì)過早地停止,未能列出所有相關(guān)的摘錄。
在這種情況下,通常可以讓模型進(jìn)行后續(xù)查詢,找到它在之前的處理中遺漏的摘錄。
換而言之,模型生成的文本有可能很長(zhǎng),一次性生成不完,那么就可以讓它進(jìn)行查驗(yàn),把遺漏的內(nèi)容再補(bǔ)上。
策略五:其它工具加持
GPT-4 雖然強(qiáng)大,但并非萬能。
我們可以借助其他工具來補(bǔ)充 GPT-4 的不足之處。
比如,結(jié)合文本檢索系統(tǒng),或者利用代碼執(zhí)行引擎。
在讓 GPT-4 回答問題時(shí),如果有一些任務(wù)可以由其他工具更可靠、更高效地完成,那么我們可以將這些任務(wù)交給它們來完成。這樣既能發(fā)揮各自的優(yōu)勢(shì),又能讓 GPT-4 發(fā)揮最佳水平。
實(shí)用技巧:
1、使用基于嵌入的搜索實(shí)現(xiàn)高效的知識(shí)檢索
這一技巧在上文中已經(jīng)有所提及。
若在模型的輸入中提供額外的外部信息,有助于模型生成更好的回答。
例如,如果用戶詢問關(guān)于一部特定電影的問題,將關(guān)于電影的信息(例如演員、導(dǎo)演等)添加到模型的輸入中可能會(huì)很有用。
嵌入可用于實(shí)現(xiàn)高效的知識(shí)檢索,可以在模型運(yùn)行時(shí)動(dòng)態(tài)地將相關(guān)信息添加到模型的輸入中。
文本嵌入是一種可以衡量文本字符串相關(guān)性的向量。相似或相關(guān)的字符串將比不相關(guān)的字符串更緊密地結(jié)合在一起。加上快速向量搜索算法的存在,意味著可以使用嵌入來實(shí)現(xiàn)高效的知識(shí)檢索。
特別的是,文本語料庫可以分成多個(gè)部分,每個(gè)部分可以進(jìn)行嵌入和存儲(chǔ)。然后,給定一個(gè)查詢,可以進(jìn)行向量搜索以找到與查詢最相關(guān)的語料庫中的嵌入文本部分。
2、使用代碼執(zhí)行進(jìn)行更準(zhǔn)確的計(jì)算或調(diào)用外部 API
不能僅依靠模型自身進(jìn)行準(zhǔn)確地計(jì)算。
如果需要,可以指示模型編寫和運(yùn)行代碼,而不是進(jìn)行自主計(jì)算。
可以指示模型將要運(yùn)行的代碼放入指定的格式中。在生成輸出后,可以提取和運(yùn)行代碼。生成輸出后,可以提取并運(yùn)行代碼。最后,如果需要,代碼執(zhí)行引擎(即 Python 解釋器)的輸出可以作為下一個(gè)輸入。
代碼執(zhí)行的另一個(gè)很好的應(yīng)用場(chǎng)景是調(diào)用外部 API。
如果將 API 的正確使用方式傳達(dá)給模型,它可以編寫使用該 API 的代碼。
可以通過向模型演示文檔和 / 或代碼示例來指導(dǎo)模型如何使用 API。
在這里 OpenAI 提出了特別警告??:
執(zhí)行模型生成的代碼在本質(zhì)上來說并不安全,任何試圖執(zhí)行此操作的應(yīng)用程序中都應(yīng)采取預(yù)防措施。特別是,需要一個(gè)沙盒代碼執(zhí)行環(huán)境來限制不受信任的代碼可能造成的危害。
策略六:系統(tǒng)地測(cè)試更改
有時(shí)候很難確定一個(gè)改變是會(huì)讓系統(tǒng)變得更好還是更差。
通過觀察一些例子有可能會(huì)看出哪個(gè)更好,但是在樣本數(shù)量較少的情況下,很難區(qū)分是真的得到了改進(jìn),還是只是隨機(jī)運(yùn)氣。
也許這個(gè)“改變”能夠提升某些輸入的效果,但卻會(huì)降低其它輸入的效果。
而評(píng)估程序 (evaluation procedures,or “evals”) 對(duì)于優(yōu)化系統(tǒng)設(shè)計(jì)來說非常有用。好的評(píng)估有以下幾個(gè)特點(diǎn):
1)代表現(xiàn)實(shí)世界的用法(或至少是多種用法)
2)包含許多測(cè)試用例,可以獲得更大的統(tǒng)計(jì)功效(參見下表)
3)易于自動(dòng)化或重復(fù)
對(duì)輸出的評(píng)估可以是由計(jì)算機(jī)進(jìn)行評(píng)估、人工評(píng)估,或者兩者結(jié)合進(jìn)行。計(jì)算機(jī)可以使用客觀標(biāo)準(zhǔn)自動(dòng)評(píng)估,也可以使用一些主觀或模糊的標(biāo)準(zhǔn),比如說用模型來評(píng)估模型。
OpenAI 提供了一個(gè)開源軟件框架 ——OpenAI Evals,提供了創(chuàng)建自動(dòng)評(píng)估的工具。
當(dāng)存在一系列質(zhì)量同樣高的輸出時(shí),基于模型的評(píng)估就會(huì)很有用。
實(shí)用技巧:
1、參考黃金標(biāo)準(zhǔn)答案評(píng)估模型輸出
假設(shè)已知問題的正確答案應(yīng)參考一組特定的已知事實(shí)。
然后,我們可以詢問模型答案中包含多少必需的事實(shí)。
例如,使用下面這個(gè)系統(tǒng)消息,
給出必要的既定事實(shí):
尼爾?阿姆斯特朗是第一個(gè)在月球上行走的人。
尼爾?阿姆斯特朗第一次登上月球的日期是 1969 年 7 月 21 日。
如果答案中包含既定給出的事實(shí),模型會(huì)回答“是”。反之,模型會(huì)回答“否”,最后讓模型統(tǒng)計(jì)有多少“是”的答案:
下面是包含兩點(diǎn)既定事實(shí)的示例輸入(既有事件,又有時(shí)間):
僅滿足一個(gè)既定事實(shí)的示例輸入(沒有時(shí)間):
而下面這個(gè)示例輸入,不包含任何一個(gè)既定事實(shí):
這種基于模型的評(píng)估方法有許多可能的變化形式,需要跟蹤候選答案與標(biāo)準(zhǔn)答案之間的重疊程度,并追蹤候選答案是否與標(biāo)準(zhǔn)答案的有相矛盾的地方。
比如下面的這個(gè)示例輸入,其中包含不合標(biāo)準(zhǔn)的答案,但與專家答案(標(biāo)準(zhǔn)答案)并不矛盾:
下面是這個(gè)示例輸入,其答案與專家答案直接矛盾(認(rèn)為尼爾?阿姆斯特朗是第二個(gè)在月球上行走的人):
最后一個(gè)是帶有正確答案的示例輸入,該輸入還提供了比必要內(nèi)容更多的詳細(xì)信息(時(shí)間精確到了 02:56,并指出了這是人類歷史上的一項(xiàng)不朽成就):
傳送門:
https://github.com/openai/evals(OpenAI Evals)
參考鏈接:
[1]https://platform.openai.com/docs/guides/gpt-best-practices
[2]https://www.reddit.com/r/OpenAI/comments/141yheo/openai_recently_added_a_gpt_best_practices_guide/
本文來自微信公眾號(hào):量子位 (ID:QbitAI),作者:西風(fēng)
廣告聲明:文內(nèi)含有的對(duì)外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。