提示工程簡介

OpenAI 提供的 GPT-3、GPT-3.5 和 GPT-4 模型是以提示為基礎。 使用提示型模型時,使用者要輸入文字提示來與模型進行互動,而模型會使用文字完成對文字提示進行回應。 此完成是模型的輸入文字接續。

雖然這些模型非常強大,但其行為也會對提示非常敏感。 這可讓提示建構成為開發的重要技能。

提示建構可能很困難。 在實務上,提示用來設定模型權數以完成所需的工作,但它比較是藝術而不是科學,通常需要體驗和直覺來製作成功的提示。 本文的目標是要協助您開始進行此學習程式。 它會嘗試擷取適用於所有 GPT 模型的一般概念和模式。 不過,請務必瞭解每個模型的行為不同,因此學習可能不會同樣套用至所有模型。

基本概念

本節涵蓋 GPT 提示的基本概念和元素。

文字提示是使用者與 GPT 模型互動的方式。 與所有產生語言模型一樣,GPT 模型會嘗試產生下一系列的文字,這些文字最有可能跟在前一個文字後面。 這好像我們說當我說<prompt>時,你腦海中的第一件事是什麼? 下列範例示範此行為。 假設有名內容的第一個字,模型就能夠準確地繼續文字。

提示 Completion
四分和七年前我們 父親們在這個非洲大陸提出了一個新的國家,在自由中設想,並致力於所有男人創造平等的主張。 [...]
“叫我伊什梅爾。 “幾年前,從來不介意我的錢包裡沒錢多久,在岸上對我感興趣沒有什麼特別的,我想我會航行大約一點,看到世界水滑的一部分。[...]

當您開發更複雜的提示時,請務必記住此基本行為。 不論提供的提示為何,模型都只會以判斷的結果回應(根據其定型數據和定型目標)。 如果您在提示中提出問題,則模型不會遵循個別的「Q&A」程式代碼路徑,而是似乎會回答問題,因為答案是指定問題作為輸入最有可能的回應。

提示元件

使用完成 API 時,當提示的不同部分之間沒有區別時,仍有助於學習和討論以識別基礎提示元件。 使用 聊天完成 API 時,系統會以字典陣列的形式傳送至 API 的不同區段,其中包含相關聯的角色:系統、使用者和助理。 本指南更著重於如何思考提示建構,而不是提供一個 API 專屬於另一個 API 的規範性指引。

也請務必瞭解,雖然還有其他有效的方法來剖析提示,但此分解的目標是提供相對簡單的方法來思考提示建構。 使用完成 API 時,所有元件都是選擇性的,但至少有一個元件必須存在,而且大部分的提示都包含多個元件。 元件之間也可以有一些灰色區域。 以下呈現的順序大致對應到每個元件使用的頻率,從最多到最少。

指示

指令可能是最常用的提示元件。 指示只是:模型要做什麼的指示。 雖然概念很簡單,但實際上可能相當複雜。 下表藉由以兩種不同形式顯示簡單且更複雜的指示來說明這一點。

指示類型 提示 Completion
簡單指示 撰寫每周通訊的簡介。 歡迎使用我們的每周通訊。 本周,我們特別關注生產力。 我們將分享在生活的所有領域中提高生產力的秘訣和訣竅。 我們希望您喜歡,請與您的朋友分享!
複雜指示 為名為 Contoso 的公司撰寫每周通訊的簡介。 它應該提到我們上周舉行的偉大的所有手會議,並感謝團隊在過去幾個月的艱難工作中的所有辛勤工作。 歡迎使用 Contoso 的每周通訊! 上周,我們舉行了一次偉大的所有手會議,我想感謝球隊在過去幾個月里的所有辛勤工作。 我們期待著一個光明的未來,我相信,隨著團隊的奉獻和承諾,我們將實現偉大的事情。 感謝您成為我們團隊的一員,我期待著在未來幾周和幾個月內與您合作。 [您的名字] 誠摯敬上。
複雜指示 撰寫每周通訊的簡介,包括下列各項:
- 我的公司名為 contoso
- 熱情洋溢的問候語
- 感謝團隊在幾個月的艱苦工作
- 未來季度前景樂觀
- 由 SLT 簽署
您好 Contoso 小組! 我想花一點時間感謝你們在過去幾個月里的所有辛勤工作。 這是一個艱難的幾個月, 但你們都拉在一起, 做了一個驚人的工作。 我真的為你們感到驕傲。 展望下個季度,我感覺非常積極。 我認為我們將實現一些偉大的事情。 再次感謝高級領導小組。

主要內容

主要內容是指模型正在處理或轉換的某種文字。 主要內容通常會與指示搭配使用。 簡單的範例是語言翻譯。 在下列範例中,英文文字會被視為主要內容,而「翻譯為法文:」是指示。

提示 Completion
你能告訴我如何去博物館嗎?
翻譯為法文:
Pouvez-vous s'il vous plaît me dire comment aller au musée?

主要內容也可以更長的時間。 在下列範例中,主要內容是維琪百科項目的時間複雜度簡介區段,長度近 300 字。 此內容已縮寫在我們的表格中,以方便顯示。

提示 Completion
在計算機科學中,時間複雜性是計算複雜度,描述執行演算法所需的計算機時間量。 時間複雜度通常由 [...] 估計
摘要說明幾個句子中的前一個文字:
時間複雜度是演算法執行所花費的時間量值。 它通常會表示為輸入大小的函式。 最常見的量值是最差的情況時間複雜度,這是指定大小輸入所需的最大時間量。
在計算機科學中,時間複雜性是計算複雜度,描述執行演算法所需的計算機時間量。 時間複雜度通常由 [...] 估計
TL;DR (太長沒有讀)
演算法的時間複雜度是執行演算法所需的時間量。 時間複雜度通常是藉由計算演算法所執行的基本作業數目來估計,這假設每個基本作業需要固定的時間才能執行。 時間複雜度通常會以輸入大小的函式表示。

GPT 模型也可以處理結構化的主要內容。 在下列範例中,比利時關於啤酒的 TSV(本文中顯示的縮寫)會在提示中傳遞至模型。 它能夠正確解譯內容,並回答有關數據的問題。

提示 Completion
Belgian Beer Brands
Beer name Beer style color ABV Brewery
"Chimay Gold: ""Doree""" trappist pale ale gold 4.80% Chimay Brewery (official trappist)
"Chimay Blue: ""Grande Reserve""" trappist dark ale dark 9.00%
[...]
參考上述表格,有多少啤酒小於 6% ABV?
數據表中有10個啤酒小於6%ABV。

範例

成功的提示通常依賴「單次」或「很少拍攝」學習的練習。 這是指包含一或多個模型所需行為的範例,通常是包含輸入和輸出組。 這並非從模型永久變更的意義上學習,而是讓範例更符合模型對目前推斷所需響應的條件。 沒有範例的提示使用有時稱為「零射門」學習。 請注意,使用聊天完成 API 的少量學習範例,通常會在初始系統訊息之後以範例使用者/助理互動的形式新增至訊息陣列。

學習類型 提示 Completion
零射 頭條: 教練自信的傷勢不會脫軌勇士隊
主題:
教練相信傷勢不會破壞勇士隊的賽季。 團隊仍然專注於他們的目標,他們將繼續努力實現他們。
幾槍 頭條: 雙胞胎的科雷亞使用退出, 測試免費機構
主題:棒球
標題: 卡達世界盃有清醒的區域
主題:足球
標題: 耶茨: 幻想足球英特爾第 6 周
主題:足球
頭條: 教練自信的傷勢不會脫軌勇士隊
主題:
籃球

上述範例說明很少拍攝學習的公用程式。 如果沒有範例,模型似乎會猜測所需的行為,而範例則會清楚顯示模型操作方式。 這也示範模型的威力,它可以推斷想要的標籤類別,即使範例中沒有「籃球」標籤也一樣。

提示

提示會作為模型的輸出的「快速入門」,協助將模型導向至所需的輸出。 模型通常可以建置的前置詞。 在下列範例中,我們會顯示指示本文以包含重要元素的提示。 提示通常會與指示一起使用,但並非一律使用。 在下列範例中,模型正用來摘要長公告電子郵件。 一個案例中會使用提示來協助將模型的輸出焦點放在另一個案例中,並建議特定輸出格式(專案符號點)。

在聊天完成 API 指示的內容中,會採用系統訊息的形式,而提供一系列範例使用者/助理互動來協助定型模型,以指出很少的範例範例。

提示數目 提示 Completion
0 效能檢閱是我們 Contoso 效能與開發方法的核心元件。 [...]
摘要說明上述電子郵件訊息:
此電子郵件的目的是通知員工最近對效能檢閱體驗所做的變更,這是 Contoso 效能與開發方法的一部分。 這些變更包括改善的結構、升級的工具內用戶體驗,以及專注的提示。 此外,現在還有一個選擇性的交談入門區段,可供員工標記他們想要與其經理討論的主題。
1 效能檢閱是我們 Contoso 效能與開發方法的核心元件。 [...]
摘要說明上述電子郵件訊息:
訊息的主要要點是
Contoso 藉由更專注於核心優先順序、期望和影響,來改善效能檢閱體驗。 此外,他們會使用秘訣、資源和指引來升級工具內用戶體驗。 最後,他們會新增如何啟用全公司核心優先順序的指引。
2 效能檢閱是我們 Contoso 效能與開發方法的核心元件。 [...]
摘要說明上述電子郵件訊息:
重點:
Contoso 會根據員工的意見反應,引進效能檢閱體驗的變更。
• 這些變更包括對核心優先順序、期望和影響的新焦點;升級的用戶體驗;和全公司核心優先順序的新指導方針。
• 效能檢閱是反思過去的效能和學習,以及規劃未來優先順序和成長機會的時間。
• 員工和經理應在績效檢閱會議之前撰寫批注。
• 每年至少應該有兩次績效審查。
• 每個審查的時間投資應該維持不變。

支援內容

支援內容是模型可用來以某種方式影響輸出的資訊。 它不同於主要內容,因為它不是工作的主要目標,但它通常與主要內容一起使用。 常見的範例包括內容相關的資訊,例如目前日期、使用者名稱、使用者喜好設定等等。 下列範例使用支援內容來協助組織一組已規劃的用戶研討會。 若沒有支援(重要主題),模型只會列出研討會(已截斷顯示),當得知我的重要主題時,模型就能夠準確地分組會議。

支援內容 提示 Completion
不含 工作坊清單:
標題描述
規劃研討會啟動請加入我們開始我們的研討會! 聽取我們的領導人關於未來一年的跨群體優先事項和學習。 此活動的邀請已傳送給 [...] 中的每個人
摘要說明上述研討會,依主題分組:
工作坊清單:
規劃研討會啟動
-Planning Workshop Wrap-up
- 核心 MeetUp
- 客戶導向檢視方塊
-影響和重點領域
-最佳做法
-加速應用程式採用 [...]
With 工作坊清單:
標題描述
規劃研討會啟動請加入我們開始我們的研討會! 聽取我們的領導人關於未來一年的跨群體優先事項和學習。 此活動的邀請已傳送給 [...] 中的每個人
我的重要主題:提示工程、搜尋、GPT 模型
摘要說明上述研討會,並依我的重要主題分組:
1. 提示專案:
- 新的提示工程秘訣
- 提示工程的藝術
2. 搜尋:
-內嵌向量搜尋簡介
3. GPT 模型:
- GPT-4 簡介
- GPT-35-Turbo 深度。

最佳作法

  • 具體來說。 盡可能少進行解譯。 限制作業空間。
  • 具描述性。 使用類比。
  • 雙下。 有時候您可能需要將自己重複至模型。 提供主要內容前後的指示、使用指示和提示等等。
  • 順序很重要。 您向模型呈現資訊的順序可能會影響輸出。 不論您將指令置於內容之前 (請摘要以下...) 或之後 (請摘要上述...),會讓輸出產生不同的結果。 即使是小樣本範例的順序也很重要。 這稱為「近因偏差」。
  • 為模型提供「out」。 如果模型無法完成指派的工作,有時可能會有説明地為模型提供替代路徑。 例如,在一段文字上詢問問題時,如果答案不存在,您可能會包含類似「找不到」回應的內容。這有助於模型避免產生錯誤的回應。

空間效率

雖然輸入大小隨著每個新一代的 GPT 模型而增加,但仍會有比模型所能處理的資料更多的案例。 GPT 模型會將文字分成「令牌」。雖然常見的多音節詞通常是單一標記,但較不常見的單字會在音節中中斷。 令牌有時可以是反直覺式,如下列範例所示,示範不同日期格式的令牌界限。 在此情況下,拼出整個月份的空間比完整數值日期更有效率。 目前的令牌支援範圍從舊版 GPT-3 模型的 2,000 個令牌,到最新 GPT-4 模型的 32,768 個令牌最多 32,768 個。

文字字串的螢幕快照,其中醒目提示的色彩會標示標記界限。

鑒於此空間有限,請務必盡可能有效率地使用它。

  • 數據表 – 如上一節的範例所示,GPT 模型可以輕鬆地瞭解表格式數據。 這可以是一種有空間效率的方式來包含數據,而不是在每個功能變數名稱前面加上名稱(例如 JSON)。
  • 空格符 – 連續空格符會被視為個別的令牌,這可以是浪費空間的簡單方式。 另一方面,單字前面的空格通常被視為與單字相同標記的一部分。 仔細觀察空格符的使用方式,不要單獨使用標點符號。

下一步

深入了解 Azure OpenAI