提示工程
出自 MBA智库百科(https://wiki.mbalib.com/)
提示工程(Prompt Engineering)
目錄 |
什麼是提示工程[1]
提示工程(Prompt Engineering)是一種針對預訓練語言模型(如 GPT),通過設計、實驗和優化輸入提示詞來引導模型生成高質量,準確和有針對性的輸出的技術。
提示工程本質上來說,也是一種人機交互的方式,提示詞就是我們發給大模型的輸入(指令),大模型根據指令,結合自身預訓練的 " 知識 ",輸出指令相關的內容。而大模型輸出結果的好壞,和我們輸入的指令息息相關。
我們把經過無數書籍預訓練的大模型,看作是一位飽讀天下詩書的智者,那麼如何通過高質量的提問,引導大模型生成我們想要的輸出,就成為一件非常有意義的事情。
提示工程的分類[2]
從不同的視角, 可以對Prompt 進行不同的分類。在這裡,嘗試根據可解釋性、交互方式和應用領域三個方面對Prompt 進行分類。
1、可解釋性分類:硬提示和軟提示
硬提示(hard prompt )是手工製作的、預定義的帶有離散輸入標記的文本,或者文本模板。靜態提示可以合併到程式中用於編程、存儲和重用,基於大模型的應用程式可以有多個提示模板供其使用。
儘管模板帶來了一定程度的靈活性,但是提示語仍然需要被設置得很好才行,換句話說,靜態提示一種硬編碼的提示。
建立在LangChain 之上的基於大模型的 很多應用程式,其提示模板在很大程度上是靜態的,它指示代理執行哪些操作。一般來說,模板包括: 定義了可以訪問哪些工具,何時應該調用這些工具,以及一般的用戶輸入。
軟提示(soft prompt )是在提示調優過程中創建的。與hard prompt 不同,軟提示不能在文本中查看和編輯,包含一個嵌入或一串數字,代表從大模型中獲得知識。軟提示缺乏軟可解釋性。人工智慧發現與特定任務相關的軟提示,但不能解釋為什麼它。與深度學習模型本身一樣,軟提示也是不透明的。軟提示可以替代額外的訓練數據,一個好的語言分類器軟提示有幾百到幾千個額外的數據點。
提示微調包括了在使用 LLM 之前使用一個小的可訓練模型。小模型用於對文本提示進行編碼並生成特定於任務的虛擬令牌。這些虛擬令牌被預先追加到Prompt上並傳遞給 LLM。調優過程完成後,這些虛擬令牌將存儲在一個查找表中,併在推斷期間使用,從而替換原來的小模型。當提供上下文時,LLM 的表現要好得多,而且提示微調是一種快速有效的方法,能夠以動態地創建急需的上下文。
2、交互方式分類:線上提示和離線提示
"online" 和 "offline" 是一種方式來區分模型互動中 prompt 的使用方式。這兩種分類表示了 prompt 在與大模型互動的時間和方式上的不同。
線上提示(Online prompt) 是在與模型的實時互動中提供的提示,通常用於即時的互動式應用。這種提示在用戶與模型進行實際對話時提供,用戶可以逐步輸入、編輯或更改提示,在線上聊天、語音助手、實時問題回答等應用中常見。
離線提示(Offline prompt )是預先準備好的提示,通常在用戶與模型的實際互動之前創建。這種提示在沒有用戶互動時預先設計和輸入,然後整批輸入模型進行批量處理。在離線文本生成、文章寫作、大規模數據處理等應用中常見。
對提示分類為 "online" 或 "offline" ,可幫助確定如何有效地使用提示,以滿足不同應用的需求。線上提示通常用於需要實時交互和即時反饋的情況,而 離線提示則適用於需要大規模處理或預生成文本的情況。根據具體應用和使用情境,您可以選擇適當的提示類型。
3、應用領域分類
用途分類可以幫助確定 prompt 的主要目標,以便更有效地使用它們。以下是一些常見的 prompt 類別:
Information Retrieval (信息檢索):這些 prompt 用於從模型中檢索特定信息,如回答問題、提供事實或解釋概念。用途包括問答、信息檢索、事實核實等。
Text Generation (文本生成):這些 prompt 用於指導模型生成文本,可能是文章、故事、評論等。用途包括創意寫作、內容生成、自動摘要等。
Translation (翻譯):這些 prompt 用於將文本從一種語言翻譯成另一種語言。用途包括機器翻譯應用。
Sentiment Analysis (情感分析):這些 prompt 用於評估文本的情感傾向,如正面、負面或中性。用途包括社交媒體監測、情感分析應用。
Programming and Code Generation (編程和代碼生成):這些 prompt 用於生成電腦程式代碼或解決編程問題。用途包括編程輔助、自動化代碼生成等。
Conversation (對話):這些 prompt 用於模擬對話或聊天,並回應用戶提出的問題或評論。用途包括聊天機器人、虛擬助手等。
Task-Specific (特定任務):這些 prompt 針對特定應用或任務,如制定旅行計劃、編寫營銷文案、生成報告等。用途因任務而異。
Custom Applications (自定義應用):這些 prompt 針對特定領域或自定義應用,具體用途由用戶定義。用途根據用戶需求而定。
通過將 prompt 分類為不同的用途,可以更好地理解模型如何應用於各種任務和情境。這有助於選擇合適的提示類型,並設計它們以滿足特定需求。
提示工程中的提示詞[1]
提示詞一般有以下要素組成:
角色:給大模型定義一個匹配目標任務的角色。用一句話就可以明確它的角色(比如 " 你是一位淘寶客服 "),從而有效的收窄問題域,減少二義性,讓 " 通用 " 瞬間變得 " 專業 "。
指示:對具體任務進行詳細描述。
上下文:給出與任務相關的其它背景信息(如歷史對話、情境等)。
例子:舉例很重要,就像是師傅教學之後,需要給徒弟(大模型)演示一下如何操作,這個手把手的操作,是大模型生成輸出時的一個重要參考,對輸出結果有很大幫助。
輸入:任務的輸入信息,最好在提示詞中有明確的 " 輸入 " 標識。
輸出:輸出的格式描述,比如用郭德綱的語氣、輸出不超過十個字、以 JSON 格式返回結果等。
而高質量的提示詞一般是具體的、豐富的、少歧義的,也就是說,我們雖然要把大模型當人來交流,但是儘量少用 " 口語 " 的方式來溝通,而要用 " 寫信 " 的方式,因為口語大多是即興的、碎片化的短語,而寫信則需要描述背景、避免歧義、短話長說,很符合優秀提示詞的特點。
大家可以將以下兩句提示詞輸入到大模型中,對比一下輸出的效果:
1、請幫我提供每天的菜單
2、你是一名營養家,請為我提供每天三頓飯的中式菜單建議,一人份,包括早餐、午餐和晚餐。請確保每道菜都是偏辣口味,並儘量使用新鮮的食材。在健康營養方面,請確保每餐都包含適當的蛋白質、碳水化合物、脂肪以及維生素和礦物質。同時,請確保菜單中的菜品易於製作,烹飪時間不要過長。


