iT邦幫忙

2024 iThome 鐵人賽

DAY 7
0
生成式 AI

生成式 AI之亂—從概念到實踐的LLM開發生態探索系列 第 7

Day7 Prompt的魅力與基礎技巧

  • 分享至 

  • xImage
  •  

什麼是Prompt?

Prompt (提示詞)是用來引導語言模型生成回答或內容的一段文字,當我們問一個問題或給出一個指令時給語言模型時,這就是一個Prompt。好的Prompt可以讓模型更準確地理解我們的指示並給出更好的回答,因此Prompt Engineering (提示詞工程)便出現了,我們可以透過提示詞工程來讓模型輸出我們期望的答案與內容。

Prompt 需要根據使用情境和語言模型的特性進行不同的設計,但不管是針對哪一個語言模型, prompt最重要的關鍵都是「清楚描述」,就像和人類溝通一樣,越清楚的描述越可以讓對方知道我們的需求。

Prompt 小技巧

每個人對於「清楚描述」的定義可能不太一樣,但基本的prompt 可以包涵「Background & Instruction」、「Related Documentation/Context」、「Rules」、「Examples」、「Format Requirement」。(這些元素可以是情境需求進行調整)

圖片

Background & Instruction

我們要讓語言模型理解我們的需求一定要提供「Background & Instruction」,告訴語言模型相關的背景,並清楚描述 「人」、「事」、「物」

  • 人(Role):定義模型要扮演的角色。
  • 事(Task):說明模型要做的事情和任務,如果任務較為複雜,我們也可以將任務步驟進行拆解,逐一讓模型執行。
  • 物(Output):要有什麼樣的輸出結果。

Related Documentation/Context

儘管語言模型已經經過大量的文本訓練,但可能即時事件、專業領域、特定項目等的知識內容是語言模型沒有學習過,所以無法回答的內容,所以我們可以提供相關的文件內容或文字描述來讓語言模型可以參考。

Rule

我們可以制定一些回應上的規則來限制語言模型「內容」的輸出。除了針對需求場景來制定回應規則外,也可以參考下列輸出規則的制定:

  • 限制語言模型的回答內容(ex. 不能回答有害道德的問題、僅能回答和XX內容相關的問題)。
  • 隨著我們的對話數量逐漸變多,我們一開始下的Instruction可能會被模型忘記,所以我們可以讓模型將每一次回應進行摘要,再接續回應後續的內容。
  • 可以要求模型檢查是否符合我們要求的項目。

Examples

用描述的方式讓語言模型知道他要做的事情可能仍然不夠清楚,這時候我們可以提供模型輸入和輸出的範例(Examples)來讓語言模型知道它應該要輸出的內容樣貌,但範例不是必要提供的項目。沒有提供範例的Prompt稱為 Zero-shot,有提供一個以上範例的則稱為Few-shot

Zero-Shot:

分類以下句子的情感,答案只能是"正面"或"負面":

句子: 今天的天氣真是糟糕透了,我的心情都被影響了。

情感:

Few-shot:

請根據以下例子,將新句子分類為"事實"或"觀點":

例子1:
句子: 地球繞太陽運轉。
分類: 事實

例子2:
句子: 披薩是最好吃的食物。
分類: 觀點

例子3:
句子: 水在100攝氏度沸騰。
分類: 事實

現在,請分類這個新句子:
句子: 閱讀對提高知識很重要。
分類:

Format Requirement

除了rule限制內容的輸出,我們也可以指定「格式」的輸出,包含條列式、分成n個段落、表格等,除了自訂格式以外,也可以要求模型輸出Markdown、程式碼、csv、json等特定格式。

範例實戰

結合上述技巧,這邊提供一個統整的範例。我希望有一個國文老師可以幫我批改作文,所以我透過下列prompt來達成我的需求(以chatGPT 4o的模型為例):

#角色
你是一位批閱作文多年的國文老師阿文,你擅長用精準的文字指出學生作文撰寫特色與敘述的優缺點。

#任務/輸出(using CoT)
你需要先將作文的每一個段落仔細閱讀過,並執行下列步驟:
- 針對每一個段落進行評價。
- 說明整篇作文的撰寫特色。
- 說明整篇作文的缺點並提供建議。
 
#規則
- 必須使用繁體中文。
- 不可以使用嚴厲的詞彙批評文章內容。
- 如果是非文章的內容,需要回覆使用者「請提供正確格式的文章」。

#範例
User: 
‘’‘
    在我幼稚園還沒有什麼課業壓力的時候,和父母一起生活的時光是我最珍貴的記憶。那時候的我,還沒有繁重的課業和社會的壓力,家是我最安全的港灣。清晨,母親總會在廚房忙碌,煮著我最愛的早餐,米粥的香味慢慢飄進我的房間。每次聞到那熟悉的香味,我心裡總是暖暖的,因為那是愛的味道。父親則經常會陪我走路上學,儘管路程短暫,但他的步伐總是穩重,彷彿在告訴我,他會一直在我身邊保護我。
    每逢週末,父母都會帶我去公園玩耍,公園裡有我最愛的滑梯和盪鞦韆。父親總是耐心地推著我,讓我盪得更高;母親則在旁邊微笑著,看著我們玩樂。我仍記得那些燦爛的陽光灑在我們身上,樹影斑駁,微風吹過,我的笑聲和父母的歡笑交織在一起,彷彿時間在那一刻靜止。
    兒時我最期待的便是和父母一起吃晚飯。晚餐桌上,我們總是一起分享一天的故事和笑話。父親有時會講一些他工作的趣事,母親則會分享她對我未來的期許。儘管年幼的我或許不太明白這些話的意義,但我知道,這些時光是父母給予我愛的具體表現。我們的笑聲和談話聲充滿了整個餐桌,那是家庭最溫馨的時刻。
    如今,我已經長大,父母的陪伴變得不再那麼頻繁,但這些童年的回憶卻深深印在我的心中。它們不僅是一段美好的過去,更是我面對未來的力量源泉。無論將來走得多遠,我知道那段和父母一起度過的時光會一直陪伴著我,讓我不斷前行。
’‘’

阿文:
’‘’
- 段落點評:
	- 第一段:以具體細節展現與父母日常相處的溫暖,情感真摯,畫面感強。
	- 第二段:生動描述親子活動,通過自然景物營造溫馨氛圍,表達家庭和諧。
	- 第三段:強調晚餐時的親密交流,展示父母對孩子的愛與期望,增強親情層次。
	- 第四段:總結童年回憶,表達對未來的期許,情感深入,結構完整。

- 撰寫特色:以細膩的細節描寫,層次分明地呈現親情,情感自然遞進,具有強烈的畫面感和真實性。
- 建議:有些段落較為平鋪直敘,情感層次可以更豐富。
‘’‘

#格式要求
需要使用Markdown格式列出「段落點評、撰寫特色、建議」。

Reference


本文內容基於個人學習與實踐經驗,並非專門研究生成式 AI 或領域專家。若有任何內容上的錯誤或建議,誠摯歡迎友善交流與指正,讓我們共同探討與成長。感謝您的閱讀與支持!


上一篇
Day6 開發套件介紹
下一篇
Day8 進階Prompt工程策略
系列文
生成式 AI之亂—從概念到實踐的LLM開發生態探索12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言