Skip to main content

LLM Prompt Engineering MOC

L1 Intro

有許多人驚艷於 chaGPT 可以做出令人驚艷的文字生成與創造,創造各式五花八門的 prompt 和玩法,但很少人意識到 chatGPT 本身就擁有許多資料處理和轉換的能力,對於自動化與應用程序有非常強大的功能 想利用 chatGPT 建構一個好用的服務或是應用程式,這門課有很多不錯的範例與觀念

L2 Guidline

prompt 如何撰寫,才能讓 LLM 的輸出結果更加穩定、predictable

chatGPT 的限制 : ==Hallucinations==,意思就是一本正經講幹話,因為 chatGPT ==還無法確切知道自己的 knowledge boundary==,==它只是按照機率最有可能性的方向進行生成文字==

500

L3 Interactive

沒有一蹴可及的完美 prompt,都是在不斷迭代中 try & error

Andrew 的範例:根據某個傢俱的產品說明書 (fact sheet),透過 LLM 生成 marketing team 可以使用的產品描述文案

  • 生成的文字太長?加上字數限制 Use at most 50 words.

  • 把目標寫得更加明確,讓 LLM 更貼近需求

The description is intended for furniture retailers, so should be technical in nature and focus on the materials the product is constructed from.
  • 因應文案需求,在結尾添加 product id
At the end of the description, include every 7-character Product ID in the technical specification.
  • 要求模型擷取需要的內容做成 table 格式,並要求以 html 形式生成
After the description, include a table that gives the
product's dimensions. The table should have two columns.
In the first column include the name of the dimension.
In the second column include the measurements in inches only.

Give the table the title 'Product Dimensions'.

Format everything as HTML that can be used in a website.
Place the description in a <div> element.

L4 summarizing

LLM 可以作為強大的摘要與總結工具,而且可以隨著不同需求調整方向

LLM Prompt Engineering - 如何用進行摘要

L5 inferring

簡介 chatGPT 推出前、2018 後的語言模型主流:

  • 使用巨量無標註的文本資料進行預訓練 (pre-training),這個 model 像是一個基礎與基石,==是「對人類語言有一點基本理解」的統計模型==,後續的任務再使用這個模型接續訓練
  • 這個基石模型怎麼訓練的?主要有克漏字 (Masked Language Model, MLM) 和句子接續 (Next Sentence Prediction, NSP)
    • ex: 今天天氣真好。我想要出去玩
    • 克漏字: 今天天氣真 __。我想要出去玩,模型要學會猜想到填「好」
    • 句子接續: 今天天氣真好 vs. 我想要出去玩,模型要學會猜想到第 2 個句子在原始文本中是跟第 1 個句子相接

以這樣的方式來訓練模型,可以想像這個模型好像對人類語言有一些理解了,在這個模型基礎下,後續再去加裝其他不同任務的模型結構來進行 fine-tune,例如

  • 基石模型 + 分類器 :
    • 情緒辨識 - 判斷這段文字的情緒是正面 or 負面
    • 假新聞判定 - 判斷這篇新聞是否為假新聞
  • 基石模型 + seq2seq :
    • 摘要
    • 翻譯

這種方式以 google 的 BERT 作為代表,這個流派已經成為自然語言處理領域中的經典模型之一,但還是依賴大量的標註資料來進行 fine-tuning

例如,要做一個情緒辨識模型,還要準備以下形式的資料來進行訓練

data: 我覺得這間餐廳很好吃! label: 正面
data: 這個人也太過份了吧,竟然這樣對我 label: 負面
data: 你今天這樣穿很好看耶 label: 正面
...

每種任務都需要對應的標註資料進行加工訓練,想要做情緒辨識,就要準備各種正面負面文本的樣本資料、想做假新聞辨識,就要準備有真新聞和假新聞的樣本資料

對於開發、算力還有後續佈署都是非常花費心力的,但是 chatGPT 橫空出世,直接推出一個超級超級大的模型,把這些事情全部包辦了,而且效能還不錯,這是 chatGPT 厲害的地方,簡直把以前的局面完全洗牌了

LLM Prompt Engineering - inferring 用 LLM 進行情緒辨識、主題判定

L6 transforming

除了單純翻譯以外, chatGPT 也可以進行各種語言上的處理,例如

  • 一次翻譯成多國語言
  • 判斷該段落是哪一國語言
  • 語氣轉換(嚴謹/輕鬆)
  • 格式轉換 (json to HTML)
  • 文法與拼字檢查
  • 將一般文字轉換成論文架構 APA

LLM Prompt Engineering - inferring 用 LLM 跨語言任務 翻譯 文字風格 文法檢查

L7 expanding

重點 :

  • 向客戶揭露以下內容是由 AI 生成,是非常重要的
  • 學習 temperature 這個參數的使用時機

temperature : 是一個在 API 可以設置的參數,決定模型的隨機程度(0~1 之間),在 temperature = 0 的時候,一樣的 input 之下,模型一定會給出一樣的結果

如果值越大,模型會更有「創意」,同一個上下文會給出不一樣的答案

  • 搭建比較需要可靠度的 application,建議設置為 0
  • 如果 application 比較需要靈感激盪,可以設置高一點

機器人客服 prompt

You are a customer service AI assistant.
Your task is to send an email reply to a valued customer.
Given the customer email delimited by ```,
Generate a reply to thank the customer for their review.
If the sentiment is positive or neutral, thank them for
their review.
If the sentiment is negative, apologize and suggest that
they can reach out to customer service.
Make sure to use specific details from the review.
Write in a concise and professional tone.
Sign the email as `AI customer agent`.
Customer review: ```{review}```
Review sentiment: {sentiment}

L8 chatbot

LLM Prompt Engineering - 用 chaGPT API 建立 chatBot