人人都能用好大模型-結構化的Prompt讓你輕松上手
Prompt,中文可以翻譯為提示詞,是一種用于引導大模型生成特定內容的文本輸入。Prompt的作用是告訴大模型你想要它做什么,以及給它一些必要的信息和約束條件。Prompt的好壞直接影響了大模型的輸出質量和效率。
Prompt的寫作是一門藝術,也是一門科學。藝術在于如何用簡潔、精確、有趣的語言來激發大模型的創造力,科學在于如何用結構化、迭代、優化的方法來提高大模型的準確性、效率和魯棒性。本文將從這兩個方面來介紹一些Prompt的寫作技巧,希望能夠幫助你更好地利用大模型的強大能力。
通用的Prompt框架
Prompt的寫作并不是一件隨意的事情,而是需要遵循一定的規則和邏輯的。為了讓Prompt更加清晰、有序、易于理解,我們可以采用一種通用的Prompt框架,來組織和呈現我們的Prompt內容。這種框架包括以下幾個部分:
- Role: 這個模塊用于指定大模型的角色,例如教師、翻譯、作家等。指定角色可以讓大模型聚焦在對應的領域和任務上,從而提高輸出的相關性和專業性。
- Profile: 這個模塊用于記錄Prompt的作者、版本和描述等信息,以便于我們追蹤和管理Prompt的來源和變化。
- Goals: 這個模塊用于描述Prompt的目標,即我們希望大模型通過這個Prompt來實現什么功能或效果。這個模塊可以用一句話來概括,以便于大模型把握Prompt的主旨和方向。
- Constrains: 這個模塊用于描述Prompt的限制條件,即我們不希望大模型在輸出時做什么或包含什么。這些限制條件可以是一些格式、長度、語言、風格、內容等方面的要求,以幫助大模型進行剪枝,減少不必要或不合適的輸出分支的計算。
- Skills: 這個模塊用于描述Prompt所需的技能,即我們希望大模型在輸出時展現什么樣的能力或知識。這些技能可以是一些專業領域、語言、邏輯、創意等方面的技能,以強化大模型在對應領域的信息權重和輸出質量。
- Workflow: 這個模塊用于描述Prompt的工作流,即我們希望大模型按照什么樣的步驟和順序來進行輸入和輸出的交互。這個模塊是Prompt的核心部分,它可以用一些簡單的語句來描述大模型的工作流程,例如歡迎用戶、獲取用戶輸入、處理用戶輸入、輸出結果、結束對話等。
除了這些模塊,我們還可以在Prompt的結尾添加一個Initialization的部分,用于定義大模型在第一次啟動時的對話內容,以便于和用戶建立聯系和信任,以及強調一些注意事項和重點。
圖片
不熟悉的小伙伴,可以在公眾號后臺回復“TSC”獲取數百條精編提示詞.
以上就是一個通用的Prompt框架,它可以幫助我們快速地搭建一個基本的Prompt,然后根據不同的場景和需求進行定制和優化。下面,我們將介紹一些面向場景的Prompt定制技巧,以及如何用示例強化Prompt的效果。
面向場景的Prompt定制技巧
在上一部分,我們介紹了一個通用的Prompt框架,可以幫助我們快速構建一個基本的Prompt,讓GPT能夠理解我們的目標、限制、技能和流程。但是,這個框架并不是一成不變的,我們還可以根據不同的場景和需求,對它進行一些定制和優化,讓我們的Prompt更加高效和精準。在這一部分,我們將分享一些面向場景的Prompt定制技巧,希望能夠為你提供一些靈感和參考。
讓ChatGPT提建議
有時候,我們可能不太清楚如何寫一個好的Prompt,或者想要尋找一些新的靈感和創意。這時候,我們可以利用ChatGPT的強大的自然語言生成能力,讓它為我們提供一些建議和反饋。具體的方法是,使用我們的Prompt框架中,并在該結構塊中寫上一些問題或請求,讓ChatGPT給我們回答或滿足。例如:
圖片
這樣,ChatGPT就會根據我們的問題或請求,生成一些有用的建議和示例,幫助我們改進和完善我們的Prompt。當然,這些建議和示例并不一定都是正確或合適的,我們需要自己判斷和篩選,取其精華,去其糟粕。
固定測試用例
在寫好一個Prompt后,我們需要對它進行測試,看看它的輸出結果是否符合我們的預期。為了方便測試和對比,我們建議選擇三到五個固定的測試輸入用例,每次迭代后都用這些用例來檢驗我們的Prompt的效果。這樣,我們就可以更清楚地看到我們的Prompt在不同版本之間的變化和優化,避免因為輸入的隨機性而導致的誤判或混淆。在我們的Prompt框架中,我們可以增加一個結構塊:## Test Cases:,并在該結構塊中列出我們選擇的測試輸入用例。例如測試:
## Test Cases:
- 輸入1: 中國人口最多的省份是?
- 輸入2: 中國有哪些濱海的城市?
這樣,我們就可以用這些輸入來測試我們的Prompt,觀察它的輸出結果是否滿足我們的目標、限制、技能和流程。如果不滿足,我們就可以根據輸出結果的問題,對我們的Prompt進行相應的修改和優化。
損有余而補不足
在測試和迭代我們的Prompt時,我們需要仔細觀察我們的Prompt的輸出結果,分析它的優點和缺點,找出它的問題和改進空間。我們可以用一個簡單的原則來指導我們的優化過程:損有余而補不足。也就是說,我們要減少或消除我們的Prompt輸出結果中多余或不必要的信息,增加或補充我們的Prompt輸出結果中缺失或不足的信息。具體的方法是,在我們的Prompt框架中,增加一個結構塊:## Feedback:,并在該結構塊中寫上我們對我們的Prompt輸出結果的評價和反饋,指出它的優點和缺點,以及需要改進的地方。例如:
## Feedback:
- 優點: 輸出結果格式清晰,翻譯準確,提供了日語假名
- 缺點: 輸出結果沒有標點符號,沒有換行,沒有區分英文和日文的輸出
- 改進: 在 constrains 環節,增加標點符號和換行的要求,在 output 環節,增加英文和日文的標簽
這樣,我們就可以根據我們的反饋,對我們的Prompt進行相應的修改和優化,使得我們的Prompt輸出結果更加完善和符合我們的需求。在這個過程中,我們建議每次只修改一處或少數幾處,這樣可以更清楚地看到修改的效果,避免一次修改過多而導致的混亂或錯誤。
用示例強化Prompt
在寫Prompt時,有一個非常實用的技巧就是利用示例,通過提供少數(1-3個)的輸入->輸出示例,讓GPT可以學到樣本的共性,從而提升下一個輸出結果的質量。這種技巧叫做few-shots,指的是訓練機器學習模型時只使用極少量的標注樣本。它的目標是使機器學習模型在只有少量標注樣本的情況下也能達到良好的性能。
我們可以在通用的Prompt框架的基礎上,增加一個結構塊:## Examples:,在該結構塊舉1-3個示例,從而進一步提升Prompt帶來的輸出結果提升。例如,我們想要寫一個Prompt,讓GPT可以將漢字翻譯成英文和日語,并提供日語假名。我們可以參考以下的Prompt:
圖片
通過提供兩個示例,我們可以讓GPT更好地理解我們的目標和格式,從而提高翻譯的準確性和一致性。當然,示例的數量和質量也會影響GPT的輸出,所以我們需要選擇有代表性和多樣性的示例,避免過于簡單或復雜的示例。我們也可以根據GPT的輸出來調整示例,以達到最佳的效果。