系列文章目录
文章目录
- 系列文章目录
- 前言
- 一、ReAct
- 二、Plan-and-Solve
- [三、 Reflection](#三、 Reflection)
- 总结
前言
一、ReAct
ReAct 本质是一个闭环控制系统。
LLM是控制器,tool是执行器,环境是被控对象,Observation是传感器反馈。
| 环节 | 控制论对应 | 作用 | 教材代码体现 |
|---|---|---|---|
Thought |
状态估计+策略计算 | 基于历史观测,决定下一步动作 | response_text 中的思考段落 |
Action |
控制指令下发 | 调用具体工具(Search/Calculator等) | Action: Search[...] |
Observation |
传感器反馈 | 返回环境真实状态,修正模型认知 | tool_function(tool_input) 返回值 |
History |
状态记忆寄存器 | 累积 (a, o) 对,维持上下文连续性 |
self.history.append(...) |
- 用 Mermaid 看清数据及状态如何在循环中累积:
输出 Thought+Action
Finish 答案
ToolName input
返回 Observation
拼接为新 Prompt
用户问题
初始化 Prompt
调用 LLM
正则解析
返回最终结果
调用 ToolExecutor
更新 self.history
二、Plan-and-Solve
三、 Reflection
- Reflection 不是"多调一次 LLM",而是认知范式的根本切换。
| 范式 | 认知模式 | 人类类比 | 核心缺陷 |
|---|---|---|---|
| Reflection | 生成-评审-重构闭环 | 写论文→导师批注→修改二稿→终稿 | 成本高,但产出质量呈阶梯式跃升 |
- 角色解耦:LLM 不擅长"自己检查自己"。
Reflection强制将模型拆分为 Generator 创作者 和 Critic 评审员,利用不同 Prompt 激活不同的参数子空间。 - 质量驱动 vs 进度驱动:前两种范式追求"完成任务",
Reflection追求"达到质量标准"。它把任务从开环控制(Open-loop)升级为带监督的闭环控制(Closed-loop with Supervisor)。 - 收敛思维:人类会判断什么时候该停止再修改了。
Reflection必须内置收敛判定逻辑,否则会变成无限内耗。
Iteration_Loop
输入任务 Task
调用 Generator 生成 O_0
存入 Memory,触发 Critic
生成反馈 F_i
未达到收敛标准
更新 O_{i+1},存入 Memory
满足收敛条件 (e.g., 无需改进/分数≥阈值/达最大轮次)
输出最终方案 O_final
INIT
EXEC
REFLECT
CHECK_SCORE
REFINE
TERMINATE