摘要
這篇文章主要討論了如何通過優化提示來提升ChatGPT的使用技能。首先,作者解釋了ChatGPT是什么,以及我們應該對它有何期待。然后,文章提出了三個關鍵原則:明確你的需求,模型思考時間,以及模型幻覺。作者詳細解釋了如何實施這些原則,并提供了實例。最后,作者強調了在使用ChatGPT時需要注意的限制,包括它并不像人類那樣“理解”,并可能生成不正確或者是幻覺的信息。因此,我們需要從可靠的來源驗證答案,并進行批判性思考以確保信息的準確性和可靠性。
開篇
在我們深入主要內容之前,讓我們花一點時間來理解ChatGPT到底是什么,以及我們應該對它有什么期待。那么,ChatGPT究竟是什么呢?ChatGPT是由OpenAI開發的一種語言模型,基于GPT-4架構構建。它作為一個計算機程序,接受了大量來自互聯網和書籍等各種來源的文本訓練。它的目的是理解自然語言,就像人類一樣說話和寫作。因此,與ChatGPT交互時,建議以類似于我們向朋友或任何其他人提問的方式來構建問題和提示。
雖然ChatGPT可以作為學習、探索思想或獲取快速答案的有價值工具,但重要的是要記住,它最終是一個機器學習模型,而不是一個人。ChatGPT實際上并不像人類那樣“理解”事物。它經過訓練可以根據訓練數據中學習到的模式,預測句子中的下一個內容。雖然它是一個很好的資源,但還是要通過可靠的來源核實信息,而不僅僅依賴ChatGPT來做重要的決定或獲取信息。
現在,言歸正傳,讓我們來學習如何優化我們的提示,以充分利用ChatGPT。
在為像ChatGPT這樣的語言模型構建提示時,有三個關鍵原則需要記住。讓我們探討每一個原則。
1. 明確你的需求:在你的提示中明確和精確需求是至關重要的。清楚地說明你正在尋找什么或你需要的信息。
2. 給模型時間去思考:像ChatGPT這樣的語言模型在處理較小的任務時表現良好,所以將一個任務分解成多個較小的任務將會得到更好的結果。
3. 識別模型可能會產生幻覺:雖然ChatGPT是一個令人印象深刻的語言模型,但它有時可能會生成一些不完全準確的事實回應。
在我們繼續之前,我強烈建議你嘗試本文中提到的每一個提示。只需復制并粘貼提示到ChatGPT,觀察輸出和你可能遇到的任何差異。隨意修改和試驗提示,以深入理解所討論的概念。雖然你可能已經熟悉本文中涵蓋的一些觀點,但我仍然建議你閱讀到最后,因為它可能會在你的思維中激發新的想法和見解。
明確需求
讓我們探討一下“明確你的需求”到底意味著什么。ChatGPT就像電影《阿拉丁》中從魔法燈中出來的精靈。在那部電影中,精靈會向擦燈的人授予3個愿望。在許愿時,必須謹慎并精確,因為每個愿望中都可能存在模糊和不確定性。例如,如果你希望成為“非常富有”,精靈可能會賦予你在我們的世界中毫無價值的財富,使愿望變得無用。我們需要非常明確我們向它詢問的事情。ChatGPT的工作方式非常相似。只要你問對了問題,它永遠不會給你一個錯誤的答案。正確的問題和明確的需求將給你非常美麗的答案。然而,需要注意的是,模型存在限制,包括可能出現的幻覺和訓練約束,我們將在本文后面討論。
那么,我們如何在我們的提示中實現明確性呢?讓我們討論一些策略:
首先,我覺得在詢問ChatGPT任何事情時,我們需要給它一些關于話題的背景。在詢問關于細胞的問題時,它應該知道在什么背景下生成答案。如果我們在談論電子表格,那么cells意味著與我們談論人體時的細胞不同的內容。所以,我們明確指定我們要問的話題或背景是非常重要的。一種方式是我們通常嘗試在同一個提示中包含問題本身的背景。
提示: 我給你一個與生物學相關的文本。 告訴我們在文本中談論的是什么類型的細胞 限定感嘆號。 !!! 這些細胞將氧氣運送到身體的所有部分。 !!! 除此之外,另一種方式是: 提示: 像一個生物學專家一樣行事。 |
這將在整個聊天會話中給你更好的結果。你也不需要再次給出話題的背景,而是在構建答案時,嘗試養成在每次聊天會話開始時使用“像...一樣行事”的習慣。
我們可以采用的另一種技術來提高ChatGPT的性能是在我們希望它對給定文本執行特定任務時,如校對,使用分隔符。通過在文本的開始和結束處添加分隔符,并在提示中明確提到ChatGPT應該只關注分隔的文本。這肯定會比不使用分隔符得到更好的結果。例如,考慮以下提示:
提示: 解釋在三個感嘆號中分隔的SQL查詢。 同時構建一個虛擬表,并顯示當我們在該表上運行在三個感嘆號中分隔的SQL查詢時的結果輸出。 限制輸出的大小為50個單詞。 !!! SELECT * FROM users WHERE users.id > 10 !!! |
如上所示,你可以使用任何適合你的使用的自定義分隔符。此外,如果你看到,我要求ChatGPT將輸出的大小限制為50個單詞。雖然當我們試圖以這種方式限制它們時,LLMs并不非常準確,但它們仍然會給出非常接近我們給出的限制的答案。
不僅輸入,輸出也可以根據我們的需要進行定制。我們可以要求ChatGPT模型以特定格式輸出數據,例如JSON、HTML或XML。如果你不知道這些術語是什么意思,那么不用擔心。JSON和HTML是網絡開發的兩個重要組成部分。JSON是一種幫助計算機共享和理解信息的格式,而HTML是用于構造和顯示網站內容的語言。它們一起,使得通信無縫并創建視覺上吸引人的網頁。回到我們的話題,你可以嘗試以各種格式獲取輸出,包括這些標準格式如JSON和HTML,甚至可以創建定制的格式以滿足你的特定需求。讓我們考慮一個例子。
提示: !!! 什么是非磁性的金屬? 以JSON格式給出輸出。 它應該包含一個名為'Metals'的對象數組, 每個對象代表一個金屬,它應該 有鍵:name和atomicWeight。 鍵atomicWeight是金屬的實際原子量。 不要遺漏任何非磁性金屬。 給我看看原子量最大的金屬列表。 限制答案為3種金屬。 !!! |
給模型思考時間
第二個原則是“給模型時間去思考”。這是什么意思?這是否意味著ChatGPT很慢?當然不是!然而,當給定的任務被分解成多個步驟時,它通常表現得更好。通過以逐步的方式提供指示,你可以提高模型回應的準確性。
考慮以下例子來理解這個概念:
提示: 告訴我Lord Ram不得不向Ravan射箭以結束他生命的故事,用4-6句話描述。將其轉換為古吉拉特語,并計算名字的使用次數。輸出JSON對象,只包含古吉拉特語的個人名字和計數。 |
這不會有任何問題,但模型可能會采取任何方法,然后答案可能不一致。我們可以做的是將整個事情分解成單獨的步驟,并使其按照一個有助于產生更好輸出的順序進行。
提示: 執行以下操作: 1.告訴我Lord Ram不得不向Ravan射箭以結束他的生命的故事,用4-6句話描述。 2.將其轉換為古吉拉特語 3.記錄使用的名字以及計數。 4.以JSON對象的形式輸出列表,鍵為:個人名字,名字使用的次數。都用古吉拉特語。 用換行符分隔你的答案。 |
讓我們再舉一個例子,我們看到ChatGPT沒有花足夠的時間在輸出上,我們如何讓它更好地工作。為了理解這種情況,我將向你展示輸入和輸出,以進行公正的比較。
提示: 判斷學生的解答是否正確。 問題: 我正在建造一個太陽能發電設施,我需要幫助 計算財務。 - 土地成本為每平方英尺100盧比 - 我可以以每平方英尺250盧比的價格購買太陽能電池板 - 我談判了一個維護合同,每年將花費我 一個固定的100,000盧比,另外每平方英尺10盧比 第一年運營的總成本是多少 作為平方英尺數量的函數。 學生的解答: 設x為安裝面積(單位為平方英尺)。 成本: 1. 土地成本:100x 2. 太陽能電池板成本:250x 3. 維護成本:100,000 + 100x 總成本:100x + 250x + 100,000 + 100x = 450x + 100,000 輸出: 學生計算第一年運營總成本的解答似乎是正確的。 他們正確地識別出了三個主要成本:土地成本,太陽能電池板成本和維護成本。他們將變量x指定為安裝面積,以平方英尺為單位。 每個成本的計算如下: 土地成本:100x 太陽能電池板成本:250x 維護成本:100,000 + 10x 然后,他們將這些成本加起來計算總成本: 總成本 = 100x + 250x + (100,000 + 10x) = 450x + 100,000 因此,學生計算第一年運營總成本的解答是450x + 100,000。 |
如果你仔細觀察,會發現學生的解答是不正確的。最后的答案應該是 '360x + 100,000'。在 '100,000 + 100x' 這一點上出錯了。應該是10x,而不是100x。模型似乎將用戶的輸入視為問題的實際值,從而得出了類似的輸出,并將其標記為正確。然而,這并不是我們期望的結果。我們將再次利用我們上次使用的技巧,將任務分解成更小的任務,讓模型有足夠的時間并給出準確的結果。讓我們實施這種方法以獲得正確的答案。
提示: 你的任務是確定學生的解答是否正確。 為了解決這個問題,你需要做以下幾步: - 首先,自己解決這個問題。 - 然后將你的解答與學生的解答進行比較,評估學生的解答是否正確。 - 在你自己解決了這個問題之后,再判斷學生的解答是否正確。 使用以下格式: 問題: `` 這里是問題 `` 學生的解答: `` 這里是學生的解答 `` 實際的解答: `` 這里是解決問題的步驟和你的解答 `` 學生的解答是否與剛剛計算出的實際解答相同: `` 是或否 `` 學生的成績: `` 正確或錯誤 `` |
問題: `` 我正在建造一個太陽能發電設施,我需要幫助計算財務。 - 土地成本為每平方英尺100美元 - 我可以以每平方英尺250美元的價格購買太陽能電池板 - 我談判了一個維護合同,每年將花費我一個固定的100,000美元,另外每平方英尺10美元 第一年運營的總成本是多少,作為平方英 尺數量的函數。 `` 學生的解答: `` 設x為安裝面積(單位為平方英尺)。 成本: 1. 土地成本:100x 2. 太陽能電池板成本:250x 3. 維護成本:100,000 + 100x 總成本:100x + 250x + 100,000 + 100x = 450x + 100,000 `` 實際的解答: 輸出: 給定: 土地成本:每平方英尺100盧比 太陽能電池板成本:每平方英尺250盧比 維護成本:每年固定100,000盧比,另外每平方英尺10盧比 設x代表安裝面積,單位為平方英尺。 成本: 土地成本:100x 太陽能電池板成本:250x 維護成本:100,000 + 10x 為了計算第一年運營的總成本,我們將這些成本加起來: 總成本 = 土地成本 + 太陽能電池板成本 + 維護成本 = 100x + 250x + (100,000 + 10x) = 350x + 100,000 + 10x = 360x + 100,000 重新評估后,我們發現第一年運營的實際總成本是360x + 100,000盧比。 比較學生的解答和實際的解答: 學生的解答:450x + 100,000 實際的解答:360x + 100,000 |
通過這種逐步的方式提出問題,我們為模型提供了必要的上下文,避免了在上一次錯誤的回應中出現的混淆。這種方法鼓勵模型獨立考慮每一步,生成準確和一致的結果。
幻覺問題
在結束這篇文章之前,有必要解決像ChatGPT這樣的語言模型經常遇到的一個常見問題,即幻覺問題。幻覺是指模型生成了它沒有明確訓練過的信息,并提供了可能聽起來很真實但實際上是錯誤的答案。這些答案可能聽起來非常真實,以至于我們可能會認為它們是真的。
讓我們考慮一個例子來說明這個挑戰:
提示: 2021年印度超級聯賽孟買印度人隊對陣金奈超級國王隊的決賽。 輸出: 2021年印度超級聯賽的決賽在2021年10月15日舉行,孟買印度人隊對陣金奈超級國王隊。孟買印度人隊贏得了比賽,成為了2021年印度超級聯賽的冠軍。他們以6個桿位的優勢擊敗了金奈超級國王隊,贏得了他們的第五個印度超級聯賽冠軍。比賽在阿聯酋的迪拜國際板球場舉行。 |
實際上,孟買印度人隊并沒有進入決賽,真正與金奈超級國王隊對決的是加爾各答騎士騎手隊。這就是語言模型的問題。他們給出的答案看起來非常真實。這突顯了了解這些限制并在依賴語言模型提供的信息時謹慎行事的重要性。
為了解決這個問題,我們可以實施一個解決方案,可能會減少我們得到錯誤信息的機會。
- 提示模型找到你想要搜索的相關信息。
- 根據它提供的信息或相關信息提問。
結論
總的來說,雖然ChatGPT提供了一個寶貴的資源用于學習和探索想法,但是重要的是要記住它的限制。它并不像人類那樣“理解”,并且可能生成不正確或者是幻覺的信息。為了最大限度地利用ChatGPT,你需要在你的提示中具體明確,給它時間去思考,并且要意識到可能的假信息。從可靠的來源驗證答案,并進行批判性思考以確保信息的準確性和可靠性。
譯者介紹
崔皓,51CTO社區編輯,資深架構師,擁有18年的軟件開發和架構經驗,10年分布式架構經驗。
原文標題:Level Up Your ChatGPT Skills by Unleashing The Full Potential of Your Prompts,作者:Harsh Haria