参考: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
,边算边说。