提示工程的理論基礎:脈絡內學習
提示工程(prompt engineering) 看似只是「把話講清楚」,但它有紮實的理論根據——脈絡內學習(in-context learning, ICL):LLM 不更新任何權重,只憑提示中的指令與示範,就能即時適應新任務。從機率觀點,提示 $c$ 等於在條件化模型的輸出分布:
$$ p_\theta(y\mid c\oplus x) $$
提示工程就是設計脈絡 $c$,把後驗分布的質量推向我們想要的輸出。它是最低門檻、最高回報的 AI 技能,且完全不需寫程式。
為什麼示範有效:把任務「定位」出來
ICL 的一種解讀是:預訓練語料中混雜了無數隱含任務,提示中的少樣本示範相當於為模型「定位」當前是哪個任務與輸出格式(task location),使其調用已習得的能力。實務原則:
- 角色與情境:賦予角色與受眾,縮小輸出分布(「你是大學物理助教,向文科生解釋……」)。
- 明確任務與格式:指定結構、長度、欄位;模糊處模型只能用先驗填補。
- 少樣本示範(few-shot):給「輸入 → 期望輸出」範例,品質與一致性大增;示範的順序與標籤分布會影響結果。
思維鏈與測試期計算
對需要多步推理的任務,思維鏈(Chain-of-Thought, CoT)——要求模型「先逐步推理再給答案」——能顯著提升正確率。其機制是把困難問題的測試期計算(test-time compute) 攤展到更多中間 token 上,讓模型以自身生成的中間結果為鷹架。延伸技巧:
- 自洽性(self-consistency):對同一題取樣多條推理路徑,多數投票最終答案。
- ReAct/計畫—執行:交錯「推理」與「工具呼叫」,是 Agent 的提示骨架(見〈AI 代理〉)。
近年「推理模型」把 CoT 內化進訓練,使用者不必再手動誘發,但理解其原理仍有助於診斷失敗。
解碼參數也是提示的一部分
同一提示,溫度 $\tau$、top-$p$ 不同,輸出的確定性與多樣性也不同:要穩定可重現的事實抽取,調低溫度;要發散創意,調高。把解碼參數視為提示工程的延伸。
結構化與評估
複雜需求宜用結構化提示:分「背景/任務/限制/輸出格式」區塊,並可要求模型自我檢查。專業實務會像對待程式一樣版本化與系統性評估提示(prompt + 測試集 + 指標),而非憑感覺微調。
邊界:提示無法突破的事
提示能重塑輸出分布,卻無法注入模型不具備的知識,也無法保證事實正確。要補足時效與私有知識,需 RAG(檢索增強);要保證計算精確,需工具呼叫。把 LLM 當成「強大但會錯的協作者」:提示提升品質,但關鍵事實仍須外部查證。
深入探討(研究所視角)
提示作為條件分佈的引導與貝氏觀點
從機率角度看,自迴歸語言模型定義了序列分佈 $p_\theta(y \mid x)$,其中 $x$ 為提示、$y$ 為輸出。提示工程的本質是設計 $x$ 使後驗集中於高品質區域。將任務參數 $\tau$ 視為潛變數,few-shot 提示可詮釋為隱式貝氏推論:給定示例 $\{(x_i,y_i)\}_{i=1}^k$,模型近似
$$p_\theta(y \mid x, \{(x_i,y_i)\}) = \int p(y \mid x,\tau)\, p(\tau \mid \{(x_i,y_i)\})\, d\tau .$$
此即 Xie 等人「in-context learning 為隱式貝氏推論」的核心論點——示例的作用並非更新權重,而是讓模型「定位」到正確的任務先驗 $p(\tau)$。這也解釋了一個反直覺的實證結果(Min 等):在許多分類任務中,示例標籤的正確與否影響有限,真正關鍵的是輸入分佈、標籤空間與格式,因為這些訊號才足以指認 $\tau$。
思維鏈的計算複雜度視角與自洽性
Chain-of-Thought(CoT)不只是經驗技巧,而有可表達性的理論支撐。在固定深度的 Transformer 屬於 $\mathsf{TC}^0$ 這類受限電路的前提下,產生 $T$ 步中間推理等同於賦予模型一條長度為 $T$ 的「計算帶」,使有效計算深度隨 $T$ 線性增長,從而能模擬更高複雜度(趨近 $\mathsf{P}$ 內可由多項式步數判定)的問題。Self-Consistency 則對推理路徑 $z$ 邊際化後取眾數:
$$\hat{y} = \arg\max_{y} \sum_{z} \mathbb{1}[\,\mathrm{ans}(z)=y\,]\; p_\theta(z \mid x),$$
以蒙地卡羅近似此邊際,降低單一貪婪解碼路徑的變異。更一般地,Tree-of-Thoughts 與 Graph-of-Thoughts 把推理視為在狀態空間上的搜尋,引入啟發式評估與回溯,逼近一個以 LLM 為轉移核的近似動態規劃。
自動化提示最佳化與開放問題
手工提示終將被最佳化取代。離散搜尋方面,RLPrompt 以強化學習在 token 空間尋找提示、APE 用 LLM 自我生成並評分候選;連續方面,Prefix-Tuning 與 P-Tuning 在嵌入空間求解
$$\boldsymbol{p}^{\star} = \arg\min_{\boldsymbol{p}}\; \mathbb{E}_{(x,y)\sim\mathcal{D}}\big[\mathcal{L}\big(f_\theta([\boldsymbol{p};x]),\, y\big)\big],$$
而模型權重 $\theta$ 凍結。框架如 DSPy 進一步把提示視為可編譯、可訓練的程式模組。然而開放問題仍多:提示對措辭與示例順序的高敏感性(缺乏 Lipschitz 型穩定性保證)、最佳化在離散組合空間的不可微與多峰性、以及提示注入(prompt injection)在對抗環境下的安全脆弱性——後者與對抗樣本理論及指令層級的存取控制密切相關。如何在 $p_\theta(y\mid x)$ 的幾何上刻畫「robust prompt」的鄰域,仍是連結最佳化、資訊理論與安全性的核心未解難題。