Prompt Engineering 进阶——CoT、ReAct、Reflexion 三种范式
Prompt Engineering 进阶——CoT、ReAct、Reflexion 三种范式
简单 Prompt 只能让模型”回答问题”。要让模型”思考 + 行动 + 反思”——需要 Chain-of-Thought、ReAct、Reflexion 三种范式。
范式 1:Chain-of-Thought(CoT)
核心思想:让模型”一步步想”,而不是”直接答”。
朴素 CoT
1 | 问题:小明有 5 个苹果,给了小红 2 个,又买了 3 个,现在有几个? |
Few-shot CoT(更有效)
1 | 问题:小明有 5 个苹果,给了小红 2 个,又买了 3 个,现在有几个? |
给几个”示范样例”,模型就能学会”一步步想”。
Zero-shot CoT(更简单)
只加一句”Let’s think step by step“——准确率能提升 10-30%。
适用场景:数学题、逻辑题、推理题。
不适用场景:简单事实问答。
范式 2:ReAct(Reasoning + Acting)
核心思想:思考 + 行动交替进行。
模板:
1 | 问题:上海今天适合出门吗? |
ReAct 让模型”边想边做”——而不是一次性把所有事想清楚再动手。
ReAct 的代码实现
1 | REACT_PROMPT = """ |
ReAct 是 LangChain Agent 的核心范式——你用的 AgentExecutor 底层就是它。
范式 3:Reflexion(反思)
核心思想:让模型”做完事后反思”,第二次尝试做得更好。
三步流程
1 | 轮 1: 模型尝试 → 失败 |
实际例子:代码生成
1 | 轮 1: |
Reflexion 实现关键
反思要”具体”,不要”抽象”:
- ❌ “我做得不好” — 无效反思
- ✅ “第 3 行 if 条件的边界判断错了,应该是 < 不是 <=” — 有效反思
需要把执行结果 + 错误信息作为上下文,让模型能”看证据反思”。
三种范式怎么选
| 任务类型 | 推荐范式 | 理由 |
|---|---|---|
| 数学题 | CoT | 一步一步推理就够了 |
| 信息查询 | ReAct | 需要查外部工具 |
| 复杂任务(代码生成/规划) | Reflexion | 需要多轮试错 |
| 简单问答 | 不用范式 | 直接答就行 |
我的项目实战经验
CoT 用得最多
我做的 AI 项目里,CoT 几乎所有场景都用——成本低、效果好。
特别有效的是结构化输出——让模型先”列出思考步骤”再”输出 JSON”,准确率提升 20%+。
ReAct 用于多步任务
凡是涉及”查多个数据源”的任务,用 ReAct。
但要注意:ReAct 的成本是普通调用的 3-5 倍(多轮 Token)。
Reflexion 用于代码类任务
代码生成、SQL 生成——适合 Reflexion。
但只用在”有明确对错”的场景——主观任务没法”反思”。
几个常见的误区
误区 1:CoT 适合所有任务
错。简单事实问答不需要 CoT——加了反而慢、还可能”想歪”。
误区 2:ReAct 永远比直接答好
错。如果工具只有 1-2 个,直接让模型生成 tool_call 更高效。
ReAct 的强项是多步骤决策——不是”工具调用”本身。
误区 3:Reflexion 能解决一切
错。Reflexion 依赖模型的”自我评估”能力——如果模型分不清对错,反思就是瞎反思。
实际项目里,Reflexion 通常要配合”外部评分”(测试用例、人工标注)。
写在最后
Prompt Engineering 进阶,不是学更多”魔法咒语”——是学”思考结构”。
CoT 让模型会”想”,ReAct 让模型会”做”,Reflexion 让模型会”改”。
把这三个范式理解了,你看任何 Agent 论文都不会迷路。
Prompt 工程的本质,是把”人类的思维方式”显式地写进 Prompt 里。
