Chuyển đến nội dung chính

第5課:提示工程技術

Zero-shot、Few-shot、Chain-of-Thought 提示法。 系統提示、提示範本、否定提示。 AWS AI Practitioner 考試的提示工程最佳實踐。

提示工程技術

提示工程技術:Zero-shot、Few-shot 與 Chain-of-Thought

1. 什麼是提示工程?

提示工程(Prompt Engineering)是設計輸入(提示)以獲得基礎模型期望輸出的藝術。它是自訂 FM 行為最便宜、最快速的方式——不需要任何訓練或微調。

1.1. 提示的組成元素

┌────────────────────────────────────────────┐
│  系統提示 SYSTEM PROMPT(可選)              │
│  「你是一位專業的 AWS 解決方案              │
│   架構師。請簡潔回答。」                    │
├────────────────────────────────────────────┤
│  上下文 CONTEXT(可選)                     │
│  背景資訊、文件、資料                       │
├────────────────────────────────────────────┤
│  使用者提示 USER PROMPT(必填)              │
│  實際的問題或指令                           │
├────────────────────────────────────────────┤
│  範例 EXAMPLES(可選,用於 few-shot)        │
│  輸入 → 輸出配對                           │
├────────────────────────────────────────────┤
│  輸出格式 OUTPUT FORMAT(可選)              │
│  「以 JSON 回應」、「使用項目符號」          │
└────────────────────────────────────────────┘

2. 提示技術

2.1. Zero-shot 提示

發送提示時不提供任何範例。模型完全依賴其預訓練的知識。

提示:"對以下評論進行情感分類:
'產品到貨時已損壞,客服也毫無幫助。'

情感:"

輸出:"負面"

適用時機:模型已經能很好理解的簡單、明確定義的任務。

2.2. Few-shot 提示

在提出實際任務之前提供幾個範例。這有助於模型理解期望的格式和邏輯。

提示:"對以下評論進行分類:

評論:'品質超棒,出貨超快!' → 正面
評論:'糟糕的體驗,再也不會了。' → 負面
評論:'還行吧,沒什麼特別的。' → 中立

評論:'這個產品超出了我的期望!' →"

輸出:"正面"

適用時機:當需要模型遵循特定格式或邏輯模式,而 zero-shot 品質不夠好時。

2.3. One-shot 提示

Few-shot 的變體,只提供1 個範例。當你想設定模式但上下文視窗有限時使用。

2.4. Chain-of-Thought(CoT)提示

要求模型在回答前逐步思考。對數學、邏輯和推理任務特別有效。

沒有 CoT:
問:"如果一家商店有 3 箱蘋果,每箱 12 個,
    送出 15 個蘋果,還剩多少?"
答:"21"(沒有推理過程可能會出錯)

使用 CoT:
問:"請逐步思考:如果一家商店有 3 箱蘋果,
    每箱 12 個,送出 15 個蘋果,還剩多少?"
答:"步驟 1:總蘋果數 = 3 × 12 = 36
    步驟 2:送出後 = 36 - 15 = 21
    答案:21 個蘋果"

考試提示:「哪種提示技術可以提高推理準確性?」→ Chain-of-Thought。關鍵短語:「逐步思考」或「解釋你的推理過程」。

3. 系統提示與角色設定

系統提示定義模型的角色、行為、約束和輸出格式。它在使用者互動之前「設定舞台」。

系統提示:
「你是 XYZ 銀行的金融顧問 AI。
規則:
- 只回答有關銀行和投資的問題
- 絕不提供具體的股票推薦
- 始終包含免責聲明
- 以專業語氣回應
- 如果被問到非金融話題,禮貌地引導回正題」

系統提示最佳實踐:

實踐原因
定義明確的角色將模型行為限制在特定領域
設定邊界防止偏離主題或有害的回應
指定輸出格式確保一致、可解析的輸出
包含範例釐清期望的行為
添加防護措施防止濫用(PII、有害內容)

4. 進階提示技術

4.1. 否定提示

明確指定模型不應該做什麼。在圖像生成中特別有用。

文字生成:
「摘要這篇文章。不要包含意見或個人評論。
不要超過 100 字。」

圖像生成(Stable Diffusion):
提示:「專業頭像照,攝影棚燈光」
否定提示:「模糊、卡通、扭曲、低品質」

4.2. 提示範本

帶有佔位符的可重複使用提示結構,用於動態內容:

範本:
「根據以下 {document_type}:
---
{content}
---
擷取以下資訊:
- {field_1}
- {field_2}
- {field_3}
以 JSON 格式回應。」

4.3. 提示鏈

將複雜任務分解為多個連續的提示,前一個提示的輸出成為下一個提示的輸入。

步驟 1:「從這份文件中擷取關鍵實體:{doc}」
         → 輸出:實體列表

步驟 2:「對於每個實體 {entities},找出文本中
         對它表達的情感:{doc}」
         → 輸出:實體-情感配對

步驟 3:「為這些實體建立情感分析摘要報告:
         {entity_sentiments}」
         → 輸出:最終報告

5. 考試比較表

技術是否提供範例?最適用於考試關鍵字
Zero-shot無簡單、眾所周知的任務「未提供範例」
One-shot1 個範例以最少上下文設定格式「單一範例」
Few-shot2-5 個範例模式跟隨、分類「提供範例」、「示範」
Chain-of-Thought含推理步驟數學、邏輯、複雜推理「逐步」、「推理」
否定提示不適用避免不需要的輸出「不要包含」、「避免」
提示鏈不適用複雜的多步驟任務「分解為步驟」、「連續」

6. 推理參數回顧

提示工程也包括調整推理參數:

參數低值高值
Temperature確定性、事實性(0.0-0.3)創意、多樣性(0.7-1.0)
Top-p聚焦的詞彙(0.1-0.3)多樣的詞彙(0.9-1.0)
Top-k有限選擇(如 10)更多選擇(如 250)
Max tokens短回應長回應
Stop sequences定義何時停止生成

考試提示:「客服聊天機器人給出不一致的答案」→ 降低 temperature(接近 0)。「創意寫作應用程式產出無趣的文字」→ 提高 temperature(接近 1)。

7. 提示工程最佳實踐

  1. 具體明確:「用 3 個要點摘要」>「摘要這個」
  2. 提供上下文:包含相關背景資訊
  3. 定義輸出格式:JSON、markdown、表格、項目符號
  4. 使用分隔符:用 --- 或 ``` 分隔段落以避免提示注入
  5. 反覆迭代:根據輸出測試和改進提示
  6. 避免歧義:不要假設模型知道你的意圖
  7. 使用範例:當 zero-shot 不行時,添加 few-shot 範例

8. 練習題

Q1:一位開發者正在處理分類任務,但模型的 zero-shot 回應不一致。開發者接下來應該嘗試哪種提示技術?

  • A) 將 temperature 降低到 0
  • B) 使用 few-shot 提示並提供範例輸入和輸出 ✓
  • C) 在自訂資料上微調模型
  • D) 切換到不同的模型供應商

解說:Few-shot 提示是 zero-shot 失敗後的合理下一步——提供範例幫助模型理解期望的模式。微調更昂貴且複雜。僅調整 temperature 可能無法修復分類邏輯。

Q2:一位客戶希望他們的 AI 應用程式更準確地解決複雜的數學應用題。哪種提示技術最能改善結果?

  • A) Zero-shot 提示
  • B) 否定提示
  • C) Chain-of-Thought 提示 ✓
  • D) 提示鏈

解說:Chain-of-Thought 提示鼓勵模型逐步展示推理過程,這顯著提高了數學和邏輯推理任務的準確性。

Q3:在生成式 AI 應用中使用系統提示的主要好處是什麼?

  • A) 它消除了使用者輸入的需要
  • B) 它降低了模型的推理成本
  • C) 它定義了模型的角色、行為和約束 ✓
  • D) 它取代了微調的需要

解說:系統提示設定模型的角色、行為約束和輸出格式——在所有使用者互動中建立一致的行為,無需任何模型訓練。