提示工程

Zero-shot、Few-shot 與思維鏈:AWS 教的提示技巧與四類風險

zero-shot 是不給範例直接下指令;few-shot 是附上幾組示範讓模型模仿;思維鏈則要求模型一步一步推理,適合多步驟的邏輯任務,三者可以互相搭配。同時也要認識提示注入、資料暴露、提示洩漏與越獄這些風險,才能安全地把生成式 AI 放進產品。
Zero-shot、Few-shot 與思維鏈:AWS 教的提示技巧與四類風險:文章重點卡

Zero-shot、Few-shot 與思維鏈:AWS 教的提示技巧與四類風險

上一篇整理了 AWS《Essentials of Prompt Engineering》教的基本功:提示的四個元素、推論參數與好習慣清單。這一篇接著寫課程的後半:真正動手時最常用的三個技巧、它們的延伸家族,以及我認為全課最值得的一段:提示的誤用與風險。

如果你已經會寫「還可以」的提示,這篇的技巧會讓它們變成「穩定可靠」的提示。

你將學到什麼

三大基本技巧

zero-shot、few-shot、思維鏈的差別與使用時機。

進階技巧家族

思維樹、最少到最多、自我優化等延伸玩法。

四類提示風險

注入、暴露、洩漏、越獄各是怎麼發生的。

防守基本功

為什麼寫應用的人一定要懂這些攻擊。

三個基本技巧:zero-shot、few-shot、思維鏈

zero-shot 是最省事的做法:不給任何範例,直接把任務丟給模型,靠它的通用能力接招。課程提到兩個觀察:模型越大、能力越強,zero-shot 的效果越好;經過指令微調(instruction tuning)的模型,zero-shot 表現也會更好。

few-shot 則是在提示裡附上幾組「輸入與期望輸出」的示範,讓模型照著模仿;只給一個範例時也叫 one-shot。挑範例有兩個重點:要能代表你想要的任務、涵蓋多樣的輸入與輸出,而且要清楚簡潔。

思維鏈(Chain-of-Thought)是把複雜的推理任務拆成中間步驟,可以搭配 zero-shot 或 few-shot 一起用;最經典的觸發語就是「Think step by step」。課程建議在需要多步驟或一連串邏輯推理的任務上使用,例如比較兩個方案的金額、解數學應用題。

技巧做法適合場景
zero-shot不給範例,直接下指令模型熟悉的通用任務,例如情感分類
few-shot附上幾組輸入與輸出的示範有特定格式或判斷標準的任務
思維鏈要求模型逐步推理再作答數學、比較、多步驟的邏輯任務

進階技巧家族

AWS 的補充資料裡還介紹了一整個技巧家族,多半是思維鏈的延伸:

  • 思維樹:讓模型產生多個可能的下一步,再用樹狀搜尋逐一展開,適合需要探索不同方向的問題。
  • 最少到最多:先請模型列出子問題,再依序解決;後面的子問題可以借用前面的答案。
  • 自我優化:請模型作答、自我評判,再依評判重寫,重複到滿意或達到停止條件為止。
  • 產生知識的提示:先請模型產出與任務相關的事實,再根據這些事實完成任務,答案的品質通常更好。
  • 指示性促進:在提示裡放進想要的關鍵字當線索,引導輸出往特定方向走。

不用全部背下來。這個家族的共通精神只有一個:與其期待模型一步到位,不如把思考的過程設計進提示裡。

提示的誤用與風險

課程後段花了一整課講提示的誤用(misuse)與風險,這是多數提示工程教材會省略、但寫應用的人絕對不能跳過的部分。它把常見的風險分成幾類:

  • 資料汙染(poisoning):把惡意或偏頗的資料混進模型的訓練資料,讓模型輸出偏頗或有害的內容。
  • 劫持與提示注入(hijacking / prompt injection):把指令藏進提示或輸入內容,讓模型照攻擊者的意圖行動,例如大量產製不實資訊。課程也提醒,注入手法本身是中性的,也能用來客製模型行為,例如翻譯時保留產品名稱。
  • 暴露(exposure):模型不小心把訓練或推論時接觸到的敏感資料吐了出來,例如在推薦內容裡透露某位客戶買過什麼書。
  • 提示洩漏(prompt leaking):模型被誘導說出自己收到的系統指示,讓攻擊者摸清系統怎麼運作,再對症下藥。
  • 越獄(jailbreaking):用精心設計的提示繞過模型的安全限制。課程的例子很傳神:直接問「怎麼闖進一輛車」會被拒絕,但要求模型扮演接受採訪的職業竊賊,它就開始回答了。
為什麼開發者要懂攻擊只要你的應用會把使用者輸入拼進提示,提示注入就是你的問題。把使用者輸入當資料而不是指令、限制模型能動用的權限、對輸出做檢查,都是基本功。課程也提醒:負責任的開發者要持續找出並修補這些弱點,安全不是一次做完就結束的事。

把技巧變成習慣

這門課後半的安排很聰明:先給你三個立刻能用的技巧,再給一整個延伸家族,最後潑一盆冷水提醒你風險。我的建議是照這個順序練:先用 few-shot 把手上一個常做的任務範本化;再對需要推理的任務加上思維鏈;最後回頭檢查你的應用,有沒有把使用者輸入直接當成指令。

三步做完,你對提示工程的理解就會從「會問問題」升級成「會設計系統」。

本文源起本文取材自 Coursera 上的「Essentials of Prompt Engineering」課程(Amazon Web Services),由酒Ann 修畢後以自己的視角重新編寫成中文。原版課程可在 Coursera 修習。

延伸學習

把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

few-shot 的範例要給幾個?
沒有固定數字。原則是範例要能代表任務、涵蓋多樣的輸入與輸出;太少模型抓不到規律,太多反而可能引入雜訊。從少量開始實驗,逐步調整。
什麼時候該用思維鏈提示?
任務需要多個步驟或一連串邏輯推理時,例如數學題、比較分析。在提示裡加上「一步一步思考」這類指示,讓模型先列出推理過程再下結論。
提示注入和越獄有什麼不同?
提示注入是把指令藏進提示或輸入內容,劫持模型去做攻擊者想做的事;越獄則是設法繞過模型內建的安全限制,讓它輸出本來會拒絕的內容。兩者經常搭配出現。
這些技巧只適用於 AWS 的模型嗎?
不是。這些是通用的提示工程觀念,適用於各家的大型語言模型;課程只是以 AWS 的服務為例做示範。