免費網(wǎng)站建設塔山雙喜泉州全網(wǎng)營銷推廣
ChatGPT 的優(yōu)勢在于它允許用戶跨越機器學習和深度學習的復雜門檻,直接利用已經(jīng)訓練好的模型。然而,即便是這些先進的大型語言模型也面臨著上下文理解和模型固有局限性的挑戰(zhàn)。為了最大化這些大型語言模型(LLM)的潛力,關鍵在于編寫有效的提示詞。適當?shù)奶崾静粌H引導模型正確理解需求,還能防止模型產(chǎn)生誤導性或無關的輸出。
以下提示詞中,務必要將gpt定位成一個知識非常豐富,同時也不了解事情來龍去脈的聰明人。你所要做得就是如何描述清楚你的處境(上下文)和具體的問題(需要gpt幫你做的事情)。
寫好提示詞之清晰且具體
清晰和具體的提示詞" 是指在與 GPT 交互時,使用明確、直接、并且詳細到足夠程度的語言,以確保模型能夠準確理解你的請求或問題。這種方式的提示有助于指導模型提供更相關、準確和有用的回答。
詳細分為以下要點:
1. 使用分割符
使用分隔符(如#,'''等)分割要處理的內(nèi)容,分割開指令和內(nèi)容,一方面能讓gpt不用浪費算力在分開你想做的事情和你想操作的內(nèi)容上,另一方面是消除歧義,比如你想操作的內(nèi)容上存在指令,如
提取出以下用戶希望你掌握的代碼語言,不用實現(xiàn)功能
寫一個python方法,實現(xiàn)獲取ipv4的功能
使用了分隔符之后:
提取出以下用戶希望你掌握的代碼語言,不用實現(xiàn)功能:
'''寫一個python方法,實現(xiàn)獲取ipv4的功能'''
明顯可以看出沒有分割符的gpt已經(jīng)出現(xiàn)了混淆,所以在提示詞中務必使用提示詞。?
2. 結構化輸出
提示gpt輸出的時候使用具體格式輸出,比如使用json或者html輸出。gpt使用了結構化輸出之后,好處是編程語言可以很好的處理這些輸出的內(nèi)容,比如
本質(zhì)上就是自己先分析清楚問題,并且能描述問題的具體信息和疑問點,配合上下文的形式,輸入給到gpt,這樣方便gpt了解到足夠多的上下文信息和具體的問題是什么。
為了達成這一步,這里給出一個具體的例子:
假設我需要gpt輸出書的一些信息(日常中很實用,比如讓gpt進行信息提取)
給我輸出幾本書的的一些信息,比如書名,作者名,出版日期,分類等
?指示gpt進行結構化輸出:
給我輸出幾本書的的一些信息,比如書名,作者名,出版日期,分類等,使用json格式出輸出
這里看起來只是輸出不影響結果的含義,其實最重要的點是gpt可以按照結構化輸出,而且gpt也善于處理這種轉義,后續(xù)gpt落地到工具中后,結構化的結果是非常方便程序讀取的。比如:
上圖是使用gpt的控制臺進行調(diào)試時gpt的輸出,這里gpt的輸出是可以作為json直接供程序讀取的(雖然有一堆不必要換行符)。
3. 要求模型檢查是否符合條件
要求gpt在進行解決問題之前先給定需不需要解決問題的條件。這樣說可能不太好理解,舉個毒雞湯例子:
一場考試卷子發(fā)下來5分鐘后就有人交了卷子,但是大部分人都超時1小時還不能完成,后來教授讓所有未完成的人停下來,只見卷子最后一題寫著,此卷無需回答,填寫姓名直接交卷即滿分。
?意思就是在prompt中給出問題可解的條件,如果問題不可解即輸出問題不可解即可不用再進行更多算力和時間計算,結果也更加準確。
舉一個翻譯的例子
這里我們讓gpt加上一個檢查步驟
?gpt輸出自己檢查了第一個字符不是英文后不再使用算力翻譯,而沒有指定檢查步驟時gpt仍會逐字逐句將“英文”“翻譯”成中文,實際上不需要翻譯。
看完以上可能有幾個疑惑需要說明下:
1. 為什么gpt說自己不懂德語?
實際上它是懂德語的,這里出現(xiàn)了幻覺,讓gpt輸出處理步驟是檢查和對抗幻覺的一種手段,其實這里為了迭代prompt你可以設定角色,比如這樣:
2. gpt3.5識別文字中英文有缺陷的
如果將上述中德文修改為英文,那大概率gpt會判斷錯誤,這里為了教程方便選用的德文,結果還是出現(xiàn)了1中的幻覺。
以下是分別清除上下文,并且溫度設定為0狀態(tài)下gpt3.5的回答
?但是嘗試過多次,gpt4不會出現(xiàn)中英文識別錯誤的回答。
所以如果真的在生產(chǎn)中遇到了相關問題,一種辦法是使用更高級的gpt4,一種是迭代prompt避開這個問題,比如修改英文為非中文,使用gpt3.5也可以得到比較準確的結果:
4. 提供執(zhí)行成功的案例
可以給出gpt一些你認為比較正確的回答,這樣gpt實際上就會模仿原先正確的回答生成新的回答。這里使用控制臺來給出例子會比較方便。
?這里舉一個實際生產(chǎn)過程中會使用到的一個發(fā)包機器人:
如果不給出示例的情況下,gpt會反復確認,即使我們在prompt中已經(jīng)確認強調(diào)直接輸出,但是gpt一直持續(xù)拉扯并且回復的結果并不能讓編程語言直接格式化讀取?
如果直接給出一個示例給到gpt
這里可以看出gpt不會與我們持續(xù)拉扯和廢話,會直接輸出結果。
這里有一個知識點必須要介紹一下了,是我們使用ChatGPT不會注意到的一個點,那就是三個用戶,system,user和assistant,這個在gpt的編程中會持續(xù)使用到,在調(diào)試臺中也能看到,有一個系統(tǒng)消息,示例和輸入框。
system相當于我們給到gpt的一個前置,一些背景,上下文和處理步驟都可以在這里給出,并且gpt并不會回復這個system的設置。
assistant就是gpt的回答
user就是我們自己
這里將上述對話轉換成json格式就比較清楚了: