AI不會奪走你的工作,但使用AI的人會! ---英偉達CEO 黃仁勳
前言
大語言模型的出現,為我們開啟了一種全新的方式來實作人工智能相關功能。這種方式無需我們擁有深厚的數學知識或掌握複雜的AI算法,隻需通過自然語言描述,就能實作如文本生成、内容摘要、情感分析、語言翻譯、代碼生成等功能。
然而,為了能更好地利用這些大語言模型,我們也需要深入了解其特性,并學會如何用自然語言編寫更有效的提示詞,以實作我們的目标。
什麼是大語言模型?
大語言模型 (Large Language Model,LLM) 是由具有許多參數的人工神經網絡組成,使用自監督學習或半監督學習對大量未标記文本進行訓練,最終可以像人類一樣了解和生成文本以及其他形式的内容。
大語言模型有能力從環境中推斷,生成連貫且與環境相關的響應,翻譯,總結文本,回答問題,甚至協助完成創造性寫作或代碼生成任務。
被人們所熟知的大語言模型有:Open AI的Chat GPT、Meta的LLaMA、百度的文心一言、月之暗面的Kimi等等。
什麼是提示詞?
提示詞(prompt)是一種指導性的文本,用于引導大語言模型如何進行回答。它就像一把指引對話的魔杖,能夠幫助我們更有效地與大語言模型進行溝通。大語言模型的回答效果與提示詞的品質息息相關。是以,編寫出高效的提示詞顯得尤為重要。
什麼是高效的提示詞?
為了確定大語言模型能夠準确了解目前的主題或任務并生成恰當的回應,我們需要提供清晰、簡潔的提示詞。避免使用過于複雜或模糊的語言,盡量在提示詞中做到具體明了。編寫提示詞時,有幾個關鍵原則需要考慮:
- 明确性:使用清楚、具體的表述,使大語言模型能夠輕松了解。避免使用專業術語或模糊的語言,這可能導緻混淆或誤解。
- 簡潔性:盡量讓提示詞簡潔,避免使用不必要的詞彙或跑題。這将有助于確定大語言模型能生成集中且相關的回應。
- 聚焦性:確定提示詞有明确的目标和焦點,避免使用過于寬泛或開放式的提示詞,這可能導緻缺乏焦點。
以上的解釋可能有些抽象,讓我們通過一個執行個體來進一步了解。
假設我們想了解《活着》說的是什麼故事,就寫了下面的提示詞:
今天我在抖音刷到一個視訊,說活着特别好。可是,我還有很多工作上的事要忙,根本沒時間看,跟我說說它都說了什麼?
回答如下圖:
我們可以觀察到,由于我們的提示詞缺乏簡潔性和聚焦性,導緻了大語言模型的了解偏差。實際上,"在哪裡看到的《活着》"和"有沒有時間看"這兩個資訊并非必要,這些不相關的内容可以不被包含在提示詞中。是以,我們可以剔除這些不必要的資訊:
活着說了什麼?
回答如下圖:
我們可以觀察到,由于我們的提示詞缺乏明确性,又導緻了大語言模型的了解偏差。把我們的需求再明确地描述一下:
總結長篇小說《活着》的故事梗概,其中包括主要人物和主要情節。
回答如下圖:
我們可以觀察到,大語言模型的回答已經基本符合了我們的需求。
總之,我們應該通過提供盡可能清晰和具體的指令來表達所希望大語言模型執行的任務。這将引導大語言模型朝着期望的輸出方向發展,并減少我們獲得無關或不正确的響應的幾率。當然,也不要将編寫清晰的提示詞與編寫簡短的提示詞混淆,因為在許多情況下,較長的提示詞實際上為大語言模型提供了更多的清晰度和上下文,這實際上可以導緻更詳細和相關的輸出。
高效提示詞的進階
接下來,我們将繼續了解幾個編寫高效提示詞的政策,幫助我們在使用大語言模型時獲得更好的結果。
設定特殊身份
在編寫高效的提示詞時,一個極其有效的政策就是設定特定的角色身份。采用"你是……"這樣的表述方式,在提示詞中明确指定大語言模型在對話中的特定角色或身份。這種方法對于打造更具吸引力、更富有沉浸感的對話體驗,或者模拟現實世界的場景,具有顯著的效果。
比如,我們使用大語言模型解一道數學應用題:
三棵樹上停着24隻鳥。如果從第一棵樹上飛4隻鳥到第二棵樹上去,再從第二棵樹飛5隻鳥到第三樹上去,那麼三棵樹上的小鳥的隻數都相等,第二棵樹上原有幾隻?
回答如下圖:
我們可以觀察到回答的結果是錯誤的。因為三棵樹上的鳥的隻數都相等時每棵樹上的隻數為24÷3=8隻,是以第二棵原有的隻數為:8-4+5=9隻。
我們繼續改進提示詞,設定國小數學老師的特定角色身份,如下:
你是一個優秀的國小數學老師,善于解答各種應用題。
三棵樹上停着24隻鳥。如果從第一棵樹上飛4隻鳥到第二棵樹上去,再從第二棵樹飛5隻鳥到第三樹上去,那麼三棵樹上的小鳥的隻數都相等,第二棵樹上原有幾隻?
回答如下圖:
我們可以觀察到計算的結果是正确的。
使用分隔符清楚地訓示輸入的不同部分
幫助我們編寫清晰明确的指令的另一個政策是使用分隔符清楚地訓示輸入的不同部分。
比如,我們有一個比較長的文本,我們想要實作的任務是對這篇文章進行總結。我們可以在提示詞中寫:将$$之間的文章總結為一句話。然後我們用$$來包圍文章的内容,具體如下:
把$$之間的文章總結成為一句簡短的話。
$$
我說道:“爸爸,你走吧。”他往車外看了看,說:“我買幾個橘子去。你就在此地,不要走動。”我看那邊月台的栅欄外有幾個賣東西的等着顧客。走到那邊月台,須穿過鐵道,須跳下去又爬上去。父親是一個胖子,走過去自然要費事些。我本來要去的,他不肯,隻好讓他去。我看見他戴着黑布小帽,穿着黑布大馬褂,深青布棉袍,蹒跚地走到鐵道邊,慢慢探身下去,尚不大難。可是他穿過鐵道,要爬上那邊月台,就不容易了。他用兩手攀着上面,兩腳再向上縮;他肥胖的身子向左微傾,顯出努力的樣子。這時我看見他的背影,我的淚很快地流下來了。我趕緊拭幹了淚。怕他看見,也怕别人看見。我再向外看時,他已抱了朱紅的橘子往回走了。過鐵道時,他先将橘子散放在地上,自己慢慢爬下,再抱起橘子走。到這邊時,我趕緊去攙他。他和我走到車上,将橘子一股腦兒放在我的皮大衣上。于是撲撲衣上的泥土,心裡很輕松似的。過一會兒說:“我走了,到那邊來信!”我望着他走出去。他走了幾步,回過頭看見我,說:“進去吧,裡邊沒人。”等他的背影混入來來往往的人裡,再找不着了,我便進來坐下,我的眼淚又來了。
$$
回答如下圖:
這些分隔符的使用能夠幫助大語言模型清晰地識别出需要進行總結的特定文本内容。分隔符可以是任何明确的标點符号,其作用是将特定的文本片段與其餘提示詞語進行明确分隔。
這些分隔符可以采用$$,或者是引号,甚至是XML标簽。隻要這些符号能夠使大語言模型準确地識别出這是一個獨立的文本部分即可,例如:""",< >,或是<tag> </tag>等。
在提示詞中寫少量的例子
在我們期望大語言模型執行特定任務之前,我們需要提供一些成功完成任務的示例。我們來舉一個例子:
模仿$$之間問答的方法,回答:什麼是耐心?
$$
什麼是堅持?
堅持就像一條河流,它源遠流長,雖然在某些時候可能會受到阻礙,但它總是能夠繼續前行。
$$
在這個提示詞中,我們告訴大語言模型,它的任務是用問答的風格回答,我們有這樣一個學生和老師之間的對話的例子,老師用一些隐喻回答學生的問題,因為大語言模型有這個少量提示的例子,它将以類似的風格回答下一個問題:
然而,這裡需要特别強調的是,我們無需贅述過多複雜的例子,隻需選擇幾個有代表性的例子進行說明即可。還記得我們之前提到的簡潔性和明确性的原則嗎?我們的提示詞應力求簡潔明了。
明确任務完成所需的步驟
最後一個行之有效的政策是:明确任務完成所需的步驟。在下面的例子中,我們使用大語言模型判斷學生的解答是否正确。
判斷學生的解答是否正确。
問題:
《紅岩》一共有288頁,小明每天讀36頁書,幾天可以讀完《紅岩》?
學生解答:
288 / 36 = 10(天)
小明10天可以讀完《紅岩》。
這是一個數學應用題,然後是學生的解答。學生的解答實際上是錯誤的,因為288 / 36等于 8,不是10。但是回答如下圖:
當大語言模型匆忙給出錯誤結論時,我們可以考慮重新構思問題,并要求大語言模型在給出最終答案之前提供一系列相關的推理過程。就像人類一樣,如果我們給予大語言模型一個過于複雜的任務,要求它在短時間内或者用較少的詞語來完成,那麼它很可能會随意猜測,進而導緻錯誤答案的産生。實際上,人也會在類似情況下犯錯誤。舉個例子,如果我們讓一個人在沒有足夠時間來計算複雜數學問題的情況下,要求其給出答案,那麼他們很可能也會出錯。
我們可以優化一下提示詞,明确任務完成所需的步驟。任務是确定學生的解答是否正确,為了完成任務做以下步驟:首先,解答這個問題。然後,比較你的解答和學生的解答,評估學生的解答是否正确。
判斷學生的解答是否正确。
按照如下步驟完成:
第一步,你對這個問題進行解答。
第二步,将你的解答與學生的解答進行比較,并評估學生的解答是否正确。
在你自己解答問題之前,不要确定學生的解答是否正确。
用以下的格式回答:
正确解答:<你的解題步驟和解答>
學生的答案和你的答案的比較:<一樣或者不一樣>
學生答案的判斷結果:<正确或者錯誤>
問題:
《紅岩》一共有288頁,小明每天讀36頁書,幾天可以讀完《紅岩》?
學生解答:
288 / 36 = 10(天)
小明10天可以讀完《紅岩》。
回答如下圖:
我們可以看到大語言模型的回答是正确的。
尾聲
要想充分利用大語言模型,我們必須學會如何有效地與它進行交流。編寫出高效的提示詞,是實作這一目标的關鍵步驟。
我們了解到,一個高效的提示詞需要具備明确性、簡潔性和聚焦性。我們還了解到,設定特殊身份、使用分隔符清楚地訓示輸入的不同部分、在提示詞中寫少量的例子以及明确任務完成所需的步驟等政策,都可以幫助我們編寫出更高效的提示詞。
然而,這些隻是冰山一角。大語言模型的世界還有更多等待我們去探索的秘密。我們需要不斷嘗試、不斷學習,才能更好地掌握和利用這個強大的工具。
關于本文的例子
在本文中,所有展示的例子都是在東方小智中驗證的。不過,本文中所探讨的關于編寫高效提示詞的核心原則和政策,也同樣适用于其他的大型語言模型。
東方小智(https://xchatbot.xdf.cn)是新東方公司專為内部使用打造的人工智能助手。它基于GPT-4和GPT-4V等先進的大語言模型。除此之外,它還具備圖像了解、圖像生成以及文檔生成等多元化的功能。
作者:蒲彩琳
來源-微信公衆号:新東方技術
出處:https://mp.weixin.qq.com/s/rGWc3mHm79CKVZAOuXAYLA