# 提示工程技巧統整: 了解何謂思維鏈(Chain of Thought, CoT)、思維樹(Tree of Thought, ToT)及零樣本思維鏈(Zero-shot-CoT)
人類有兩種決策模式:
- 快速、自動、無意識模式——「系統1」
- 緩慢、深思熟慮、有意識模式——「系統2」。
以下介紹的這三種技術就是要讓LLM能從系統一(直覺反應)跨到系統二(逐步思考)的方式做思考。
## 1. 思維鏈(Chain of Thought, CoT)
Jason Wei et el.(2022)提出了思維鏈這一技術。思維鏈是一種提示工程技術,用於引導語言模型進行多步推理過程。

### CoT 提示示例:
1. 分析問題:「公司應該投資再生能源項目嗎?」
- CoT 提示:要確定投資再生能源是否明智,請考慮以下步驟:
1. 分析初始投資成本與長期節省的能源成本。
2. 評估環境影響和正面公共關係的潛力。
3. 考慮政府對再生能源項目的獎勵措施。
4. 評估再生能源與公司長期策略的兼容性。
2. 數學問題:「如果你有 5 個蘋果,你給出了 2 個,你還剩下多少個?」
- CoT 提示:讓我們分步思考:
1. 你從 5 個蘋果開始。
2. 如果你給出 2 個蘋果,則需要用 5 減去 2。
3. 5 減 2 等於 3。因此,你還剩下 3 個蘋果。
## 2. 零樣本思維鏈(Zero-shot-CoT)
零樣本思維鏈是對 CoT 的後續研究,由 Kojima et el.(2022)提出。這項研究發現,只需在提示詞的結尾添加「讓我們一步步思考」(Let's think step by step)這句話,語言模型就能生成回答問題的思維鏈,並從中提取更準確的答案。
技術上,完整的零樣本思維鏈過程涉及兩個獨立的提示/補全結果:
1. 第一個提示生成思維鏈。
2. 第二個提示接收第一個提示的輸出(包括提示本身),並從思維鏈中提取答案。
在下面的圖像中,左側的提示生成一個思維鏈,而右側的頂部氣泡接收來自第一個提示(包括第一個提示本身)的輸出,並從思維鏈中提取答案。這個第二個提示是一個自我增強的提示。

### 試驗研究:
Kojima et el.嘗試了多種不同的零樣本思維鏈提示,如:
- 「讓我們通過將問題分解為步驟來解決」(Let’s solve this problem by splitting it into steps.)
- 「讓我們邏輯地思考這個問題」(Let’s think about this logically.)
然而,他們發現「讓我們一步步思考」(Let's think step by step)對於他們選擇的任務最為有效。
⚠️ 注意:零樣本思維鏈通常不如標準思維鏈提示過程有效。但在難以獲取思維鏈提示範例時,它可作為替代方案或改進基礎。
## 3. 思維樹(Tree of Thought, ToT)
有時候,解決問題需要更全面的規劃和思考,而不僅僅是考慮單個步驟,因此Yao et el.(2023)提出了思維樹框架,對 CoT 進行了進一步強化。
這項技術的內涵為,使模型能夠
1. 自行思考並生成多條不同的思維路徑
2. 分別對所有路徑進行評估後,決定下一步的行動方案
3. 在必要時向前或向後追溯,以便實現進行全域的決策
在建構一個具體任務時需要先思考4個問題:
- 如何將中間過程分解為思維步驟?
- 如何從每個狀態生成潛在的想法?
- 如何啟發性地評估狀態?
- 使用什麼搜尋演算法?
思維樹提示詞的建構步驟如下所示
的方法為要求為每個步驟都產生多個解法,並且評估最優解
使語言模型能更好地理解問題的全部情況。

### ToT 提示示例:
```
問題 :
Bob is in the living room.
He walks to the kitchen, carrying a cup.
He puts a ball in the cup and carries the cup to the bedroom.
He turns the cup upside down, then walks to the garden.
He puts the cup down in the garden, then walks to the garage.
Where is the ball?
```
```
Prompt:
確定並扮演適合回答此問題的三位不同專家。
所有專家都會寫下該步驟以及他們對該步驟的想法,然後與小組分享。
然後,所有專家將繼續下一步,等等。
在每一步中,所有專家都會對同儕的反應進行評分,評分在 1 到 5 之間,1 表示極不可能,5 表示極有可能。
如果任何專家在任何時候被認為是錯誤的,那麼他們就會離開。
在所有專家提供分析後,您將分析所有 3 項分析並提供一致解決方案或您的最佳猜測解決方案。
##問題
......
```
此prompt範例(原文為英文)參考自
- Hulbert, D. (2023). Using Tree-of-Thought Prompting to boost ChatGPT's reasoning (Version 0.1).
https://github.com/dave1010/tree-of-thought-prompting
### 應用任務類型
1. 可拆分步驟,並且每個步驟的優劣(是否可達到最終目標)是可被評估的任務
- 例如: 填字遊戲、24點(原論文的任務)
2. 無法只使用一條思維鍊來表示的任務
- 例如: 任何過於複雜或細緻的任務
4. 需要團體決策的任務
### 侷限
需要更多的資源(如GPT API成本)來提高任務性能,因為需要輸入和輸出更多的token,甚至需要多輪對話。
## 參考文獻:
1. Kojima et al. (2022). Large Language Models are Zero-Shot Reasoners.
2. Jason Wei et al. (2023). Chain-of-Thought Prompting Elicits Reasoning in Large Language Models.
3. Yao et al. (2023). Tree of Thoughts: Deliberate Problem Solving with Large Language Models.
<!-- 參考文章:
[https://learnprompting.org/zh-tw/docs/intermediate/zero_shot_cot#user-content-fn-2](https://)
[https://medium.com/%E7%B2%BE%E9%81%B8%E6%95%B8%E4%BD%8D%E8%A1%8C%E9%8A%B7%E6%96%87%E7%AB%A0-%E4%B8%AD%E6%96%87/chatgpt-%E6%8F%90%E7%A4%BA%E8%AA%9E%E5%B7%A5%E7%A8%8B%E7%9A%84%E9%AB%98%E7%B4%9A%E6%8A%80%E5%B7%A7-%E6%80%9D%E7%B6%AD%E9%8F%88-cot-%E6%80%9D%E7%B6%AD%E6%A8%B9-tot-ae419d88c4f5](https://)
-->