參考:https://zhuanlan.zhihu.com/p/704523060
🎯 一句話記住
- CoT:像“考試時在草稿紙上寫完所有步驟,再抄答案”。
- ReAct:像“玩密室逃脫,每開一個箱子就去找下一個線索”。
用小學生能聽懂的話 + 兩個小故事,把 CoT(思維鏈) 和 ReAct(行動-思考交替) 的區別講清楚。
🧠 先記住兩個關鍵詞
- CoT:像“在心里自言自語”,把推理過程一口氣說完。
- ReAct:像“邊做邊說”,先動手做一步,再思考下一步,再動手……
🌰 故事 1:CoT——小明做數學題
題目:小明有 5 顆糖,媽媽又給他 3 顆,他吃掉 2 顆,還剩幾顆?
小明心里的小劇場(CoT)
“我先數原來的 5 顆,加上 3 顆就是 5 + 3 = 8 顆。再吃掉 2 顆,8 - 2 = 6 顆。所以還剩 6 顆!”
→ 一口氣把推理全說完,再給出答案。
這就是 CoT:先完整思考,再回答。
🌰 故事 2:ReAct——小紅拼樂高
任務:拼一輛樂高小車,但說明書丟了。
小紅邊做邊說(ReAct)
- 行動:先拿起輪子裝上去。
→ 思考:咦,車身還沒裝,輪子會晃! - 行動:拆掉輪子,先拼底座。
→ 思考:底座好了,輪子應該裝這里。 - 行動:把輪子對準卡扣按進去。
→ 思考:現在裝方向盤,車就能開了!
→ 每一步先做再想,再做再想……
這就是 ReAct:行動和思考交替進行。
📝 小學生總結表
CoT(思維鏈) | ReAct(行動-思考交替) | |
---|---|---|
像什么? | 一口氣把解題步驟全說完 | 邊做實驗邊記錄 |
順序 | 思考 → 思考 → … → 答案 | 行動 → 思考 → 行動 → 思考… |
優點 | 邏輯清楚,一步不漏 | 靈活應變,隨時糾錯 |
例子 | 口算題:先算乘法,再加法 | 拼樂高:裝錯了拆了重裝 |
下面用最少的代碼,把 CoT(思維鏈) 和 ReAct(行動-思考交替) 各寫一個可運行的小例子,全部用小學生也能看懂的“加減法”場景。
① CoT(思維鏈)
一口氣把推理過程打印完,再給答案。
def solve_by_cot(a, b, c):# 1. 先把整個思考過程說完print(f"1. 原來有 {a} 顆糖")print(f"2. 媽媽又給 {b} 顆,一共 {a + b} 顆")print(f"3. 吃掉 {c} 顆,還剩 {a + b - c} 顆")# 2. 最后給出答案return a + b - cprint("CoT 答案:", solve_by_cot(5, 3, 2))
運行結果
1. 原來有 5 顆糖
2. 媽媽又給 3 顆,一共 8 顆
3. 吃掉 2 顆,還剩 6 顆
CoT 答案: 6
② ReAct(行動-思考交替)
每做一步就停下來“想一想”,再繼續下一步。
def solve_by_react(a, b, c):total = aprint(f"行動:數出 {a} 顆糖")total += bprint(f"思考:媽媽又給 {b} 顆,現在應該有 {total} 顆")total -= cprint(f"行動:吃掉 {c} 顆")print(f"思考:所以最后還剩 {total} 顆")return totalprint("ReAct 答案:", solve_by_react(5, 3, 2))
運行結果
行動:數出 5 顆糖
思考:媽媽又給 3 顆,現在應該有 8 顆
行動:吃掉 2 顆
思考:所以最后還剩 6 顆
ReAct 答案: 6
🎯 一句話總結代碼差異
- CoT:先
print
完所有思考,最后return
結果。 - ReAct:每做一次運算就
print
,邊算邊說。