要求「解釋你的推理過程」不只是為了透明度—事實上,這會讓模型變得更聰明。早期研究顯示,CoT可將數學錯誤減少高達50%。目前大多數現代模型都會在內部進行此操作。
Chain-of-thought prompting之所以有效,是因為語言模型是下一個 token 的預測器,而他們生成的 token 會成為自身上下文的一部分。當你要求模型「逐步思考」時,你並不是啟動某個隱藏的推理模組 — 你只是迫使模型產生中間 token,這些 token 會限制並引導後續 token 向正確答案靠近。沒有這些中間步驟,模型必須從問題直接跳到答案,這正是錯誤累積的地方。透過 CoT,每一步都會縮小後續步驟的機率空間。這與在腦中一次性計算 347 乘以 29 的結果,與在紙上寫出部分乘積的差異一樣。
2022 年 Google 的 Wei 等人發表的原始論文顯示,CoT prompting 對大型模型來說基本上是零成本的 — 只需在提示中加入「Let's think step by step」,就能將 PaLM 540B 在 GSM8K 數學任務上的準確率從約 18% 提升至 57%。但這項技術對較小的模型幫助不大,這導致了一個實務經驗法則:CoT 最適合用於參數數量大約在 100 億以上的模型。在這個門檻之下,模型經常會產生看似合理但錯誤的推理步驟,這反而比直接跳到答案更傷害表現。如果你在生產環境中需要在不同大小的模型之間切換,這一點值得記住。
現代的前沿模型 — Claude、GPT-4、Gemini — 在訓練過程中已經內化了 chain-of-thought。Anthropic 和 OpenAI 都使用改進版的 process reward models 和強化學習來訓練模型,使其在回答問題前先進行推理,即使你沒有明確要求它這麼做。OpenAI 的 o1 和 o3 模型將這一點發揮到極致,進行延長的內部推理,你可以在「思考」追蹤中看到這一點。Claude 的擴展思考也類似。實際上,對於尖端模型來說,明確的 CoT 提示現在比 2023 年重要性降低,但當你想要檢查推理過程、發現錯誤,或是在未接受此訓練的小型或開放源碼模型上使用時,它仍然有幫助。
一個常見的誤解是 chain-of-thought 始終意味著更長、更慢的回應。實際上,你可以將 CoT 與結構化輸出結合 — 要求模型在草稿區段進行推理,然後產生一個簡潔的最終答案。許多 API 使用者會將推理放在獨立欄位中,或使用 XML 標籤來區隔思考與答案。這讓你能夠獲得準確性的優勢,而無需迫使最終用戶翻閱大段推理內容。另一個需要注意的問題是:CoT 可能會讓模型在簡單任務上表現更差,因為過度思考會引入不必要的懷疑。如果你問「法國的首都是哪裡?」,你不需要五步推理 — 你只需要直接回答。
CoT 的變體值得了解。Zero-shot CoT(僅附加「think step by step」)是最簡單的。Few-shot CoT 在提示中提供帶有推理鏈的範例。Tree-of-thought 更進一步,讓模型探索多個推理分支並回溯。Self-consistency 會生成多條 CoT 路徑,並對最終答案進行多數投票,這是目前最可靠提升準確性的方法之一。每向上一層都需要更多的 token 和延遲,因此正確的選擇取決於你是在優化成本、速度還是正確性 — 以及問題實際上有多困難。