多智能体(Multi-agent)策略模式:思维链CoT和ReAct
参考: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(思维链)
一口气把推理过程打印完,再给答案。
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 = a print(f\"行动:数出 {a} 颗糖\") total += b print(f\"思考:妈妈又给 {b} 颗,现在应该有 {total} 颗\") total -= c print(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
,边算边说。