← M05 生成式 AI M05 生成式 AI iPAS L12202

M05.13|Prompt Engineering 進階:CoT、ToT 與結構化提示設計

不是問 AI 更多話,而是教 AI 怎麼想

L1-AI應用規劃-Prompt Engineering L2-AI系統部署-生成式AI應用設計
Prompt Engineering Chain-of-Thought Tree-of-Thought 結構化輸出 Context Engineering Few-shot 提示設計
📋

本講學習重點

Zero-shot 和 Few-shot 的差異與適用場景各是什麼?
Chain-of-Thought 為什麼能提升複雜推理的準確率?
Tree-of-Thought 和 CoT 的主要區別是什麼?
為什麼 Prompt 優化到一定程度就會遇到瓶頸?
Context Engineering 和 Prompt Engineering 有什麼不同?

Prompt 策略層次: 1. Zero-shot:直接問問題,不給範例(適合簡單任務) 2. Few-shot:給 2-5 個範例再問問題(適合格式化任務) 3. CoT(Chain-of-Thought):要求 AI 逐步推理(適合複雜邏輯) 4. ToT(Tree-of-Thought):探索多條推理路徑再選最佳(適合開放式問題) Chain-of-Thought (CoT): - 核心概念:讓 AI「寫出計算過程」而不是「直接給答案」 - 觸發方式:加上「Let's think step by step」或明確要求分步驟 - 效果:在 GSM8K 數學題上,CoT 讓 GPT-3 的準確率從 18% 提升到 57% - 原理:逐步推理讓模型在每一步都能利用前一步的結果,減少跳步錯誤 - 限制:對簡單任務反而降低效率(多餘的推理步驟浪費 token 和時間) Tree-of-Thought (ToT): - 核心概念:同時探索多條推理路徑,評估每條路徑,選擇最佳 - 比喻:下棋時想三步棋的每種可能,而不是只走一條線 - 適用:需要創意、有多種可能方案、需要比較取捨的任務 - 成本:比 CoT 消耗更多 token(因為要探索多條路徑) 結構化輸出設計: - JSON mode:要求 AI 以 JSON 格式輸出,方便程式解析 - XML tags:用標籤區隔不同部分的輸出 - System Prompt 框架:角色設定 + 任務描述 + 輸出格式 + 約束條件 - 重要性:程式化處理 AI 輸出時,結構化是必須的 Prompt 的邊際效應遞減: - Prompt 優化能提升 10-30% 的效果,但有上限 - 超過某個點後,更長更精細的 Prompt 不會帶來顯著改善 - 此時應該考慮:RAG(給 AI 更多知識)或 Fine-tuning(改變 AI 的能力) Context Engineering(上下文工程): - 不只是寫 Prompt,而是管理整個輸入上下文 - 包括:System Prompt + 對話歷史 + RAG 檢索結果 + 工具回傳 + 使用者資料 - 2025-2026 年的趨勢:從 Prompt Engineering 進化為 Context Engineering

📌 Prompt Engineering 不只是「怎麼問問題」,而是「怎麼設計 AI 的思考方式」。 CoT 讓 AI 逐步推理、ToT 讓 AI 多路徑探索、結構化輸出讓程式能解析 AI 的回答。 但 Prompt 有其極限,當優化遇到瓶頸時,需要升級到 RAG 或 Fine-tuning。 更進一步地,Context Engineering 把 Prompt 只當作輸入上下文的一部分來管理。
Prompt Engineering 進階:CoT、ToT 與結構化提示設計

🎙️ Podcast(中文)

0:00 / 0:00

一句話搞懂

Prompt Engineering 的精髓不是「問更多話」,而是「設計 AI 的思考方式」——Chain-of-Thought 讓 AI 一步步想、Tree-of-Thought 讓 AI 多條路比較、結構化提示讓 AI 的輸出可以被程式直接使用。


白話解說

複習:Zero-shot 和 Few-shot

在進入進階技巧之前,先複習兩個最基礎的 Prompt 策略。

Zero-shot(零範例提示):直接問問題,不給任何範例。比如「請把以下英文翻譯成中文:Hello world」。你信任 AI 已經從訓練中學會了怎麼做翻譯,所以不需要額外示範。Zero-shot 適合 AI 已經擅長的常見任務——翻譯、摘要、分類、問答。

Few-shot(少量範例提示):在問問題之前,先給 2-5 個「輸入→輸出」的範例。比如你想讓 AI 把客戶評論分成「正面/負面/中性」,你先給幾個已經標記好的範例,然後再給它新的評論讓它分類。Few-shot 的威力在於:透過範例,你不需要用文字解釋規則,AI 自己會從範例中推斷出你的意圖和格式要求。

Few-shot 特別適合兩種場景:(1) 你要的輸出格式很特殊,用文字描述很麻煩,給範例更直覺;(2) 任務有微妙的判斷標準,用範例比用規則更容易傳達。

Chain-of-Thought:讓 AI 「寫出計算過程」

2022 年,Google 的 Jason Wei 等人發表了一篇極具影響力的論文,發現了一個簡單但強大的技巧:在 Prompt 中加上「Let’s think step by step(讓我們一步步想)」,或者在 Few-shot 範例中示範推理過程,AI 在複雜推理任務上的表現會大幅提升。

用考試來比喻:如果你是數學老師,你問學生「35 × 27 等於多少?」,有兩種出題方式。第一種是選擇題——學生直接選答案,可能碰運氣。第二種是計算題——學生必須寫出計算過程(35 × 27 = 35 × 20 + 35 × 7 = 700 + 245 = 945),這時候學生被迫正確地執行每一步計算。

CoT 做的就是同樣的事——強迫 AI「寫出計算過程」。沒有 CoT 時,AI 嘗試一步到位直接跳到答案,中間可能跳過關鍵步驟而出錯。有了 CoT,AI 被要求逐步推理,每一步的結果成為下一步的輸入,大幅減少了跳步出錯的機會。

實際效果有多驚人?在 GSM8K(小學數學題)測試中,GPT-3 直接回答的準確率只有 18%,加上 CoT 後飆升到 57%。在多步推理、邏輯判斷、因果分析等需要「想清楚」的任務上,CoT 通常能帶來 20-40% 的準確率提升。

CoT 的實際使用方式

最簡單的方式是在問題後面加上「請一步步思考」。更精確的做法是給出推理結構:「首先分析問題的條件,然後列出可能的方法,接著選擇最適合的方法,最後給出答案。」

在 Few-shot 中使用 CoT 更有效——不只給「輸入→答案」的範例,而是給「輸入→推理過程→答案」的範例。AI 會學到你的推理風格,在處理新問題時也用同樣的方式逐步思考。

CoT 的重要限制:CoT 不是萬能的。對於簡單任務(如單詞翻譯、簡單分類),加上 CoT 反而浪費 token、增加延遲,效果不會更好甚至可能更差(因為多餘的推理步驟引入了不必要的複雜度)。CoT 的價值在於「思考過程有助於得到正確答案」的任務——如果任務本身不需要多步推理,CoT 就是多此一舉。

Tree-of-Thought:多路徑探索

CoT 是「一條線想下去」——一步接一步,線性推理。但有些問題需要「想多條路」——考慮多個可能方案,比較優劣,然後選最好的。這就是 Tree-of-Thought(ToT)。

比喻:CoT 像是走迷宮時只走一條路,碰到死路就卡住。ToT 像是在每個岔路口都派出分身,同時探索多條路線,哪條路先到出口就選哪條。更準確地說,ToT 像下棋——好的棋手不會只想一步,而是想「如果我走這裡,對手會走哪裡,然後我又該走哪裡」,同時評估多條路線的勝率。

ToT 的實際運作:AI 在每個思考步驟產生多個候選想法(比如 3 個),然後對每個想法評估「這個方向有多大可能通往正確答案」,砍掉明顯不好的方向,對有希望的方向繼續深入展開。這個過程產生一棵「思考樹」——從根節點(原始問題)到葉節點(最終答案),中間有多條路徑。

ToT 適合什麼任務? 需要創意和多方案比較的任務特別受益:寫作(嘗試多種開頭,選最好的)、程式設計(嘗試多種演算法,選最適合的)、策略規劃(嘗試多種方案,評估各自的利弊)、解謎(嘗試多個切入點,看哪個能突破)。

ToT 的成本:因為要探索多條路徑,ToT 消耗的 token 是 CoT 的數倍。在即時對話場景中(延遲敏感),ToT 通常太慢。它更適合離線的批量任務,或是願意等待更好結果的場景。

結構化輸出設計:讓程式能讀懂 AI

當 AI 的輸出需要被程式自動處理時(而不是給人類閱讀),結構化輸出設計就至關重要。

JSON Mode:要求 AI 以 JSON 格式輸出。比如你要 AI 分析一篇文章的情感,與其讓它回「這篇文章的情感是正面的,信心度很高」,不如要求它回 {"sentiment": "positive", "confidence": 0.92, "keywords": ["創新", "成長"]}。程式可以直接解析這個 JSON,不需要用正則表達式從自然語言中提取資訊。

大多數主流 LLM API(OpenAI、Anthropic、Google)都已支援 JSON Mode,能在 API 層面保證輸出是合法的 JSON,不只是在 Prompt 中「拜託」AI 用 JSON。

XML Tags:用 XML 標籤區隔輸出的不同部分。比如:

<summary>文章摘要在這裡</summary>
<keywords>關鍵字1, 關鍵字2</keywords>
<sentiment>positive</sentiment>

這比純文字更容易用程式解析,也讓 AI 更清楚每個部分的邊界。

System Prompt 框架:一個設計良好的 System Prompt 通常包含四個部分——角色設定(你是一個XX專家)、任務描述(你的任務是XX)、輸出格式(請以XX格式回答)、約束條件(不要做XX,如果不確定就說不知道)。這四個元素的組合,能讓 AI 的行為更加可預測和穩定。

Prompt 的邊際效應遞減

一個很多人不願意接受的事實是:Prompt 優化有上限。

在一般經驗中,從「隨便寫一句話」到「精心設計的 Prompt」,效果可能提升 10-30%。但從「好的 Prompt」到「非常精細的 Prompt」,提升可能只有 2-5%。再繼續優化,邊際效益趨近於零——你多加的每一句描述和限制,幾乎不會再改善結果。

這是因為 Prompt 本質上是在模型已有能力的範圍內「引導」輸出方向。如果模型本身對某個領域的知識不夠深、或推理能力有限,再好的 Prompt 也突破不了這個天花板。

當 Prompt 遇到瓶頸時,有兩個升級方向

第一是 RAG(檢索增強生成)——不改變 AI 的能力,但給它更多相關知識。如果 AI 回答品質差是因為「它不知道」,RAG 是最直接的解法。

第二是 Fine-tuning(微調)——改變 AI 本身的能力和偏好。如果 AI 回答品質差是因為「它不擅長這類任務」或「它的風格不對」,Fine-tuning 是更根本的解法。

Prompt Engineering → RAG → Fine-tuning,這是一個成本遞增、效果也遞增的升級路徑。大多數應用場景在 Prompt + RAG 就能解決,真正需要 Fine-tuning 的情境比想像中少。

Context Engineering:比 Prompt 更大的畫面

2025 年開始,業界越來越多人用「Context Engineering(上下文工程)」取代「Prompt Engineering」這個說法,因為 Prompt 只是 AI 輸入的一小部分。

一個完整的 AI 輸入上下文包括:System Prompt(角色和行為規範)、對話歷史(之前的互動紀錄)、RAG 檢索結果(從知識庫中找到的相關文件片段)、工具回傳結果(Agent 呼叫工具後拿到的數據)、使用者資料(使用者的偏好、歷史行為)。

Context Engineering 的核心是:如何在有限的上下文視窗(context window)中,放入最相關、最有用的資訊,讓 AI 做出最好的回答。這涉及到資訊的選擇(該放什麼進去)、排序(什麼放前面、什麼放後面)、壓縮(如何在有限空間內傳達最多資訊)、以及動態調整(根據任務性質改變上下文的組成)。

這是一個比「寫好 Prompt」大得多的系統工程問題,也是 2026 年 AI 應用開發中最受重視的技能之一。


應用場景

技術 最佳適用場景 不適合的場景 典型效果提升
Zero-shot 簡單翻譯、摘要、分類 複雜推理、特殊格式 基準線
Few-shot 格式化輸出、微妙判斷 需要深度推理的任務 +5-15%
CoT 數學、邏輯推理、多步驟分析 簡單任務(反而變慢) +20-40%
ToT 創意寫作、方案比較、策略規劃 即時對話(太慢) +10-25%(品質)
JSON Mode API 整合、資料處理 pipeline 純人類閱讀的場景 程式解析成功率 99%+
Context Engineering 複雜 Agent 系統、企業 AI 平台 簡單的一問一答 系統層面的全面提升

常見誤區

誤區一:CoT 對所有任務都有效

CoT 的核心價值是「讓推理過程顯式化」,但前提是任務本身需要多步推理。對於簡單的事實查詢(「日本的首都是哪裡?」)、直接的分類任務(「這封 Email 是垃圾郵件嗎?」)、或格式轉換任務(「把這段文字翻成英文」),加上 CoT 只會讓 AI 多輸出一堆不必要的推理文字,增加延遲和成本,效果不會更好。一個有經驗的 Prompt Engineer 知道什麼時候用 CoT、什麼時候不用,而不是一律加上「請一步步思考」。

誤區二:Prompt 越長越好

更長的 Prompt 意味著更多的指令和約束,但也意味著更多的潛在矛盾和混淆。當 Prompt 超過一定長度,AI 可能會「注意力分散」——遺漏中間的某些指令,或者在矛盾的指令之間做出不一致的選擇。好的 Prompt 是精煉的:清楚、具體、無歧義,但不冗長。如果你發現 Prompt 越寫越長但效果沒有改善,通常代表你需要的是 RAG 或 Fine-tuning,而不是更長的 Prompt。

誤區三:Prompt 能突破模型能力邊界

Prompt 能做的是在模型已有能力範圍內「引導最佳表現」,但不能讓模型做它本身做不到的事。如果一個小型模型(如 7B 參數)在高等數學上的能力本身就很有限,再怎麼精心設計 Prompt 也不可能讓它解出偏微分方程。Prompt 是「調整方向盤」,不是「升級引擎」。當 Prompt 優化觸頂時,換一個更強的模型或用 RAG 補充知識,通常比繼續打磨 Prompt 更有效。


小練習

練習一:選擇 Prompt 策略

以下五個任務,請為每個選擇最適合的 Prompt 策略(Zero-shot / Few-shot / CoT / ToT),並簡述理由:

  • (A) 把一篇 500 字的中文新聞翻譯成英文
  • (B) 判斷一個數學應用題的答案是否正確,需要驗算過程
  • (C) 為一個新產品想出三個不同的行銷口號,並選出最好的一個
  • (D) 從 100 筆客戶回饋中,把每筆分類為「產品問題 / 服務問題 / 價格問題 / 正面回饋 / 其他」
  • (E) 分析一個商業決策的利弊,並給出建議
點擊查看參考答案

練習一:Prompt 策略選擇

- **(A) Zero-shot**:翻譯是 LLM 的核心能力,不需要範例或推理過程。直接翻即可。 - **(B) CoT**:驗算數學題需要「逐步重算每個步驟」,是典型的多步推理任務。Prompt 應要求 AI「請重新計算每一步,檢查是否有錯誤」。 - **(C) ToT**:需要先發散(想出多個創意方案),再收斂(比較選出最佳),正是 ToT 的最佳場景。讓 AI 先各自想 3 個口號,再從不同維度評估,選出最佳。 - **(D) Few-shot**:分類任務有明確的類別,給 3-5 個標記好的範例讓 AI 理解每個類別的判斷標準,比用文字定義更有效。搭配 JSON 輸出格式便於批量處理。 - **(E) CoT**:利弊分析是「先列出正面因素 → 再列出負面因素 → 權衡比較 → 得出結論」的多步推理任務。CoT 讓這個過程更結構化。如果方案不只一個,可以考慮 ToT。

練習二:改善 Prompt

以下是一個效果不好的 Prompt,請指出問題並改寫:

原始 Prompt:「你是一個很厲害的 AI 助手,請幫我分析這個數據,給我一些有用的結論,要詳細一點但也不要太長,用中文回答。」

點擊查看參考答案

練習二:Prompt 改善分析

**原始 Prompt 的問題:** 1. 「很厲害的」— 空洞的形容詞,對 AI 行為沒有影響 2. 「分析這個數據」— 沒有指定什麼數據、分析的角度和目的 3. 「有用的結論」— 「有用」的定義不明確 4. 「詳細一點但也不要太長」— 矛盾且模糊 5. 沒有指定輸出格式 **改寫後的 Prompt:** ``` 你是一位資料分析師,專門為行銷部門提供可執行的建議。 請分析以下的月度銷售數據,重點關注: 1. 與上個月相比的成長或衰退趨勢 2. 表現最好和最差的前 3 個產品類別 3. 任何需要立即關注的異常值 輸出格式: - 摘要(50 字以內) - 關鍵發現(3-5 條,每條一句話) - 建議行動(2-3 條具體可執行的建議) [在此貼上數據] ``` **改善要點**:角色具體化(資料分析師 for 行銷部門)、分析維度明確(3 個面向)、輸出格式結構化(摘要+發現+行動)、長度有具體限制(50 字、3-5 條)。

關鍵字自我檢核

✅ Chain-of-Thought CoT ✅ Tree-of-Thought ToT ✅ Zero-shot prompting ✅ Few-shot prompting ✅ 結構化輸出設計 ✅ JSON mode ✅ System Prompt ✅ Prompt邊際效應遞減 ✅ Context Engineering ✅ RAG與Prompt的關係 ✅ 推理鏈 ✅ 多路徑探索