← M05 生成式 AI M05 生成式 AI

M05.03|Prompt Engineering:跟 AI 說話的藝術

同一個模型,問法不同,答案天差地別

L1-AI應用規劃-提示工程 L2-AI技術應用-Prompt設計
Prompt Engineering 提示工程 Zero-shot Few-shot Chain-of-Thought 角色提示
📋

本講學習重點

Zero-shot / Few-shot / CoT 三種提示策略各適合什麼場景?
角色提示(Role Prompting)為什麼有效?
System Prompt 和 User Prompt 的功能差異是什麼?
結構化輸出提示有什麼具體寫法?
最常見的 Prompt 失敗原因是什麼?

Zero-shot:直接問問題,不提供範例。簡單任務夠用,複雜任務品質不穩定。 Few-shot:在 prompt 中提供 2-5 個輸入/輸出範例,讓模型「理解格式和邏輯」再作答。 Chain-of-Thought(CoT):要求模型「逐步思考」,在輸出最終答案前先寫推理過程。 - 顯式 CoT:「請一步一步思考」 - 自動 CoT:在 few-shot 範例中包含推理步驟 - 效果:複雜數學/邏輯推理任務準確率大幅提升 角色提示:在 system prompt 中指定模型的身份和視角,例如「你是一位資深合約律師」。 作用:引導模型從不同角度和知識框架生成回覆,不是讓模型「假裝」而是「激活」相關知識。 System Prompt:對話開始前設定的固定指令,定義模型的角色、行為規範、輸出格式、限制。 User Prompt:每輪對話中用戶的輸入,是動態變化的部分。 結構化輸出:要求模型用 JSON、Markdown 表格、清單等格式輸出,便於後續程式處理。

📌 Prompt Engineering 是透過設計輸入文字來引導 LLM 產生更好輸出的技藝。 Zero-shot 適合簡單任務,Few-shot 提供格式示範,CoT 解決複雜推理。 角色提示激活特定知識框架,System Prompt 建立一致行為規範。 好的 Prompt 應該明確、具體、提供上下文,避免模糊和過度開放。
Prompt Engineering:跟 AI 說話的藝術

🎙️ Podcast(中文)

0:00 / 0:00

一句話搞懂

Prompt Engineering(提示工程)就是「懂得怎麼跟 AI 說話的技能」——同一個模型,會問的人能得到精準的專業報告,不會問的人只能得到泛泛的廢話。


白話解說

為什麼「問法」這麼重要

LLM 是一個條件概率機器:給定輸入,它計算所有可能輸出的概率分布。你輸入的 Prompt 決定了它計算的「起點」——不同的起點,概率分布的峰值會落在完全不同的地方,輸出結果自然天差地別。

舉個最直白的例子:

  • 問法一:「幫我寫一封信」→ 模型要猜:什麼信?給誰?什麼目的?語氣?格式?它只能給你一封最「統計上常見」的信,往往是一封空洞的範例信。
  • 問法二:「你是一家 B2B 軟體公司的業務主管,現在要寫一封跟進信給三個月前開過會但沒有後續的潛在客戶 CFO。語氣要專業但不強迫,重點是提供一個免費試用的邀請,並說明試用後的具體成效案例。請控制在 200 字以內。」→ 這樣的輸入給了模型足夠的上下文,它的輸出空間被大幅縮小,幾乎必然會產出你真正需要的東西。

這就是 Prompt Engineering 的核心邏輯:不是讓 AI 讀心術,而是把你腦子裡的所有假設、限制、期望,都明確地說出來

三種核心提示策略

Zero-shot 提示:直接問問題,完全不提供範例。適合模型已經充分掌握的任務,例如翻譯、文法修正、簡單摘要。缺點是輸出格式不可預測,複雜任務品質不穩定。

「請將以下文字翻譯成英文:『台灣是一個美麗的島嶼』」——這是典型的 zero-shot,因為翻譯是 LLM 最基礎的能力,不需要示範。

Few-shot 提示:在問題之前先提供 2-5 個「輸入→輸出」的範例對,讓模型從範例中「讀懂」你要的格式和邏輯,再套用到實際問題上。適合輸出格式特殊、語氣特定、或需要模仿特定風格的任務。

輸入:我昨天買的手機今天充不了電,客服電話打不通
情緒分類:憤怒

輸入:請問你們的貨幾天會到?
情緒分類:中性

輸入:謝謝你們快速處理,東西收到了很開心!
情緒分類:滿意

輸入:這個產品根本就是垃圾,我要退款
情緒分類:???

模型看了三個範例,會理解「你想要的格式是一個情緒標籤」,然後正確地輸出「憤怒」。

Chain-of-Thought(CoT,鏈式思考):要求模型在給出最終答案前,先把推理步驟寫出來。這個策略對數學推理、邏輯分析、多步驟決策類問題效果顯著。

一個讓 CoT 生效的最簡單咒語是在問題後加上:「請逐步思考,把每個步驟都寫出來,最後再給出答案。」

研究顯示,在 Google PaLM 540B 的數學推理基準測試中,加入 CoT 提示後,準確率從 17% 躍升至 58%。原因是:讓模型「說出中間步驟」,等於把複雜的一步跳躍拆成多個小預測,每個小預測都更容易做對,整體準確率自然大幅提升。

角色提示與系統提示詞

角色提示(Role Prompting) 的格式很簡單:「你是一位 [身份],具有 [專業背景],現在你需要 [任務]。」

角色提示有效的原因不是模型在「扮演角色」,而是身份描述激活了訓練語料中與這個身份相關的知識框架。當你說「你是一位有 20 年經驗的心臟科醫師」,模型會從醫學文獻、病歷討論、醫師論壇等訓練資料中提取更相關的語言模式,輸出更接近醫師思考方式的內容。

System Prompt(系統提示詞) 是對話開始前設定的固定指令,通常由開發者或企業管理員設置,用戶看不到。它的功能是:

  1. 定義角色與人格:「你是 OO 公司的客服助理,名叫小智,使用親切的口語體。」
  2. 設定行為限制:「只回答與本公司產品相關的問題,遇到敏感話題請說『我沒辦法協助這個問題』。」
  3. 規定輸出格式:「所有回答必須使用繁體中文,每個回答結尾都要加上客服評分邀請。」
  4. 注入背景知識:「公司最新的退換貨政策是……(插入政策全文)」

User Prompt 則是每輪對話中用戶的即時輸入,是動態變化的部分。一個好的 AI 產品設計,是用精心設計的 system prompt 建立穩定的行為框架,讓 user prompt 的隨機性被框架所約束。

結構化輸出:讓 AI 說人話也說機器話

當你的 LLM 輸出要被程式進一步處理(存入資料庫、呈現在前端、觸發下游 API),你需要讓模型以固定的結構格式輸出。最常見的方法是在 prompt 中明確指定格式:

請分析以下客戶留言,並以 JSON 格式輸出:
- sentiment:正面/負面/中性
- main_issue:客戶的主要問題(一句話)
- urgency:高/中/低
- suggested_action:建議的處理動作

留言內容:「我三天前下的訂單還沒寄出,客服電話一直沒人接,真的很失望。」

好的輸出 prompt 三要素:格式範例(告訴模型輸出長什麼樣)、欄位定義(每個欄位的含義和可能值)、具體資料(避免模型憑空想像)。


應用場景

使用場景 最適提示策略 關鍵 Prompt 技巧 效果說明
客服投訴分類自動化 Few-shot + 結構化輸出 提供 5-10 個分類範例,要求 JSON 輸出 分類準確率提升,可直接接資料庫
法律合約風險審閱 角色提示 + CoT 指定「資深合約律師」角色,要求逐條分析後給結論 風險遺漏率降低,推理過程可追蹤
產品文案批量生成 Few-shot + 限制字數 提供 3 個品牌風格範例,限定字數和關鍵詞 風格一致性大幅提升
複雜財務計算解析 CoT(逐步思考) 明確要求「每個計算步驟都要寫出」 數值錯誤率降低,計算過程可查驗
多語言客服標準化 System Prompt 語言設定 在 system prompt 設定語言規則和術語表 各語言版本術語統一,品牌語氣一致

常見誤區

誤區一:Prompt 越長越好

許多初學者以為 prompt 越詳細越好,於是堆了幾千字的指令。但 LLM 的注意力是有限的:過長的 prompt 中,真正關鍵的指令可能被稀釋,模型反而可能忽略某些重要要求。好的 prompt 追求的是精準而不是詳盡——把最重要的限制放在開頭或結尾(注意力機制對序列兩端敏感),把模棱兩可的說法改成明確的約束。與其寫「請寫一篇好的文章」,不如寫「請寫一篇 500 字、適合高中生閱讀的科普文章,使用日常生活比喻,避免專業術語」。

誤區二:好的 Prompt 可以讓 AI 什麼都做到

Prompt Engineering 能大幅提升輸出品質,但無法突破模型本身的能力邊界。如果底層模型沒有受過充分訓練的特定領域知識,再好的 prompt 也難以讓它生成高品質的專業輸出。例如,要求一個沒有充分訓練台灣法規資料的 LLM 提供精確的台灣稅法建議,prompt 再怎麼設計都可能出錯。這時候需要的是 RAG(提供外部知識)或微調(注入領域知識),而不是更精巧的 prompt。

誤區三:Prompt 一次寫好就永遠有效

LLM 的輸出具有隨機性(sampling temperature),而且不同版本的模型、不同時間的 API 調用,行為可能有細微差異。在生產環境中部署 Prompt,需要建立系統性的Prompt 測試集(一組標準問題和期望輸出),每次更新 prompt 或模型版本時都跑一遍測試,確認品質沒有退化。把 prompt 當成程式碼一樣進行版本控管(寫入 git repo),記錄每次修改的原因和效果,是成熟 AI 產品工程的必要實踐。


小練習

練習一:改寫模糊的 Prompt

以下是一個品質很差的 Prompt,請根據 Prompt Engineering 的原則,把它改寫成一個更有效的版本:

原始 Prompt(差版): 「幫我寫一個行銷文案。」

請依照以下結構改寫:

  1. 角色設定(誰在說話?)
  2. 任務定義(要做什麼?)
  3. 受眾定義(給誰看?)
  4. 格式與字數限制
  5. 語氣與限制條件
點擊查看參考答案

練習一:改寫 Prompt 參考答案

**改寫後的 Prompt(好版)**: ``` 你是一位專精 B2C 電商的資深行銷文案撰寫人,擅長為台灣年輕消費者(25-35 歲,都會區, 習慣網購)撰寫有說服力的短文案。 請為以下產品撰寫一則社群媒體(Instagram 限時動態)廣告文案: 產品:100% 天然蜂蜜礦物洗顏慕斯,主打「溫和不刺激、洗後不緊繃」。 售價:NT$450 / 150ml。 現在有首購優惠:加購第二件打七折。 要求: - 字數:80-120 字(繁體中文) - 語氣:輕鬆有趣,帶有一點台灣年輕人的口語感,但不要過度俚語 - 必須包含:一個感官形容詞描述使用感受、首購優惠資訊、至少一個 emoji - 不要使用「最好」「第一」等最高級聲稱 - 結尾加上行動呼籲(CTA) ``` **為什麼這樣寫更好**: | 改進點 | 原版問題 | 改版如何解決 | |--------|---------|------------| | 角色設定 | 無 | 指定「B2C 電商資深文案」,激活相關知識框架 | | 受眾定義 | 無 | 明確指定年齡層、地區、行為特徵 | | 產品資訊 | 無 | 提供完整產品資料,模型不需要猜 | | 格式限制 | 無 | 指定字數、平台、語氣 | | 禁止項 | 無 | 明確說明不要出現的內容,避免合規風險 |

練習二:Chain-of-Thought 實戰

以下是一個業務判斷問題,請先寫出「沒有 CoT 的 Prompt」,再寫出「有 CoT 的 Prompt」,並解釋為什麼後者能得到更可靠的答案:

情境:你是台灣一家中型製造商的業務主管,有一個客戶說「你們的報價比競爭對手貴 15%,如果不降價我就不下單」。你希望 AI 幫你分析是否應該降價,以及如何回應。

點擊查看參考答案

練習二:CoT Prompt 比較

**沒有 CoT 的 Prompt(容易得到表面答案)**: ``` 一個客戶說你的報價比競爭對手貴 15%,如果不降價就不下單。 請問我應該降價嗎? ``` → 模型可能直接給出「視情況而定,建議考量利潤空間…」這類模糊答案。 --- **有 CoT 的 Prompt(引導結構化分析)**: ``` 你是一位資深 B2B 業務顧問。請幫我分析以下客戶議價情境, 並在給出建議之前,逐步思考以下每個問題: 情境:台灣中型製造商,客戶說「你們報價比競爭對手貴 15%,不降價就不下單」。 請依序回答: 步驟一:這個 15% 的差距背後可能有哪些原因?(成本結構差異?品質差異?服務差異?) 步驟二:如果降價 15%,對利潤率的影響是什麼?我們能承受嗎?(假設一般製造業毛利率 25-30%) 步驟三:不降價的替代方案有哪些?(增值服務、拆分報價、分期付款、長期合約折扣) 步驟四:客戶提出這個要求背後,真正的痛點是什麼?(真的是價格,還是預算壓力、績效壓力?) 步驟五:基於以上分析,建議的回應策略是什麼? 最後給出一份給客戶的回覆草稿(200 字以內,繁體中文,保持雙贏語氣)。 ``` **為什麼 CoT 版本更好**: - 強迫模型從多個角度分析,而不是直接跳到「建議降價/不降價」 - 中間步驟讓你(使用者)能看到推理過程,可以發現模型假設有誤時即時修正 - 最終建議有完整的邏輯支撐,而不是憑空冒出的建議 - 這個 prompt 結構本身就是一個可以重複使用的「議價分析模板」

關鍵字自我檢核

✅ 提示工程 ✅ zero-shot learning ✅ few-shot learning ✅ chain-of-thought ✅ 角色提示 ✅ 系統提示詞 ✅ 結構化輸出 ✅ prompt模板 ✅ 提示詞設計