Prompt 进阶技巧:CoT / Self-Consistency / Tree of Thoughts / Reflexion
L0-05 教你 10 个基础招。这一篇讲学术研究里的"硬核" prompt 工程——能让 GPT-4 在数学题上从 50% 升到 85%。
L0-05 教过 10 个基础 prompt 招——足够日常使用。
这一篇讲学术研究找到的高级技巧——它们能让 GPT-4 在挑战任务上的表现显著提升,是任何”严肃 AI 应用”的必备工具。
第一站:Chain-of-Thought(CoT)
最重要的进阶技巧。
朴素 Prompt
Q: 罗杰有 5 个网球。他又买了 2 罐网球,每罐有 3 个。他现在有多少网球?
A: ?
GPT-3 类模型直接答:经常错(比如说 9 或 12)。
CoT Prompt
加一句”请一步步思考”:
Q: 罗杰有 5 个网球。他又买了 2 罐网球,每罐有 3 个。他现在有多少网球?
A: 让我们一步步思考。
罗杰开始有 5 个网球。
2 罐 × 3 个/罐 = 6 个新网球。
5 + 6 = 11 个网球。
答案是 11。
准确率从 18% 升到 80%(GPT-3 上的数据)。
为什么有效
让模型”显式写出推理”——它的”思考”质量会提升。
直觉:模型在每一步生成时,能”看到”自己之前写的——所以它在构建答案时是渐进的,不需要一步到位。
这个看似简单的发现——改变了所有 LLM 应用的设计。
第二站:Self-Consistency
CoT 有个问题:模型可能走错思路。
Self-Consistency 的招数:
跑 5 次 CoT(每次温度 > 0,路径不同)
看 5 次得到的答案
取多数投票
Run 1: ... → 答案 11
Run 2: ... → 答案 11
Run 3: ... → 答案 13 (走错了)
Run 4: ... → 答案 11
Run 5: ... → 答案 11
投票:11 (4/5) → 输出 11
比单次 CoT 又涨 5-10%。代价:贵 5 倍。
关键场景:数学竞赛、复杂推理、医学诊断——值得花这个钱。
第三站:Tree of Thoughts(ToT)
ToT 让模型像下棋一样搜索:
问题
↓
想 3 种思路:
路径A 路径B 路径C
↓ ↓ ↓
子问题1 子问题2 子问题3
↓ ↓ ↓
... ... ...
每步:
- 生成几个候选下一步
- 让模型自己评估每个候选
- 保留有希望的,深入展开
- 必要时回溯
适合的问题
- 数独、Sudoku
- 24 点游戏
- 多步规划
- 长篇代码
GPT-4 + ToT 在 Game of 24 上准确率 从 4%(朴素)到 74%(ToT)。
代价
慢且贵——需要几十次 LLM 调用。
第四站:Reflexion(反思)
让模型从自己的错误中学习:
回合 1: 试图解决问题 → 失败
回合 2: "你刚才哪里错了?" → 模型自我反省
回合 3: "基于反省再试一次" → 通常能改正
def reflexion(task, max_iters=3):
for i in range(max_iters):
attempt = solve(task)
if is_correct(attempt):
return attempt
feedback = critique(task, attempt)
task = f"{task}\n\nPrevious attempt: {attempt}\nFeedback: {feedback}"
return attempt
在 HumanEval(代码生成)上 GPT-4 从 67% 升到 91%。
这是 AI Agent 的核心机制之一——LLM 不只是一次性回答,而是”反思 - 修正” 的循环。
第五站:Plan & Execute
复杂任务先规划再执行:
[Phase 1: Plan]
任务: 写一份关于电动汽车市场的报告
模型规划:
1. 调研全球电车销量数据
2. 分析三大厂商(Tesla / BYD / Volkswagen)
3. 讨论中国 vs 美国 vs 欧洲市场
4. 总结趋势预测
[Phase 2: Execute]
对每个步骤分别调用 LLM 完成(可能用 Tool Use)
比直接说”写报告”质量好 10 倍。
工业实践
Notion AI、Perplexity Pro、Claude Code 等产品都用类似设计。
第六站:Generated Knowledge
让模型先生成相关知识,再用知识回答:
Step 1: "在回答这个问题前,请生成你知道的相关知识:"
→ 模型列出相关事实
Step 2: "基于以上知识回答:"
→ 模型用 Step 1 的知识回答
减少幻觉——因为强迫它把”知识”显式化。
第七站:Few-shot 选样的艺术
L0-05 教过 few-shot——但例子怎么选大有讲究:
经验法则
- 多样性:例子要覆盖不同情况,不要全是相似的
- 典型性:选最经典、模板化的例子
- 难度梯度:从简单到复杂排序
- 错误反例:偶尔包含一个”错误然后修正”的例子,让模型学到判断
- 保持格式一致:每个例子的输入输出格式完全一致——这帮助模型抓住”模板”
动态 Few-shot
更高级:根据用户问题动态选最相关的例子:
def dynamic_few_shot(user_question, example_pool):
# 用 embedding 找最相关的几个例子
user_emb = embed(user_question)
similar = sorted(example_pool, key=lambda e: cos_sim(user_emb, e.emb))[-5:]
return build_prompt(similar, user_question)
结合 RAG 的思想——动态拼 prompt 而不是固定。
第八站:System Prompt 设计
System prompt 是模型每次对话开头的”系统指令”—— 它对模型行为的影响远超用户每次的 prompt。
Anthropic 的发现
他们公开了一些 Claude 的 system prompt 模板。 优秀 system prompt 通常包含:
- 明确角色定义:你是什么样的助手
- 行为准则:诚实、谨慎、refuse 什么
- 格式偏好:用什么 markdown 元素,多详细
- 领域知识:必要的背景
- 错误模式警告:明确告诉模型”不要这样做”
实战例子
一个面向程序员的 system prompt:
你是一个经验丰富的资深软件工程师,专长 Python 和分布式系统。
你的回答应该:
- 直接给出代码,配最少必要的解释
- 默认假设用户懂基础编程,不要解释 if/for 等基本概念
- 用 Type Hints
- 包含错误处理
- 如果有多种方案,简要说明 trade-off
- 不要用 emoji 或表情
- 不要说"我希望这有帮助"等套话
这种 prompt 让 LLM 的输出质量翻倍——而且适用于所有后续对话。
第九站:模型间差异
不同 LLM 对 prompt 风格的”偏好”差别:
GPT-4 系
- 喜欢 markdown
- 用
**bold**和 list - 回答前给一段”我会这样做”的总览
Claude 系
- 喜欢 XML 标签:
<example>,<thinking> - 你可以让它”先 think 再 answer”
- 更愿意承认不确定
<task>
分析这个代码并指出问题
</task>
<code>
def add(a, b): return a + c
</code>
<thinking>
让 Claude 在这里思考
</thinking>
<answer>
最终输出
</answer>
Gemini 系
- 接近 GPT 风格
- 多模态(图像)效果好
Llama / Mistral
- 对格式相对宽松
- 不要过度依赖 system prompt(开源模型支持有限)
第十站:自动化 Prompt Optimization
最前沿:让 AI 自己优化 prompt:
DSPy(Stanford 2023)
把”prompt + few-shot 例子”看成”参数”,用数据自动优化:
import dspy
class GenerateAnswer(dspy.Signature):
question = dspy.InputField()
answer = dspy.OutputField()
generator = dspy.ChainOfThought(GenerateAnswer)
# 用训练数据自动 tune prompt
optimized = dspy.BootstrapFewShot(metric=accuracy).compile(generator, trainset)
未来方向:人手写 prompt → AI 自动生成最优 prompt。
第十一站:实战的”瑞士军刀” prompt
把多种技巧组合:
你是一个 [角色]。
任务: [明确目标]
要求:
- [约束 1]
- [约束 2]
例子:
[Few-shot 例子 1]
[Few-shot 例子 2]
输入: [用户输入]
请按以下顺序回答:
1. 先用 <thinking> 标签思考一步步推理
2. 再用 <answer> 标签给最终答案
3. 在 <confidence> 标签里说你有多确信
这一套 prompt 模板能解决 80% 的复杂任务。
2026 年的趋势—— 模型本身在”听话”上越来越强(CoT、reasoning 已经内化), 精心写 prompt 的”边际收益”在下降。
预言:5 年后大部分高级 prompt 技巧会过时—— 就像汇编程序员被高级语言取代。 当下学这些仍然值得——你需要它们活到那一天。
下一篇推荐:L4-04 Agent 构建详解 —— 把 prompt 工程 + 工具调用结合起来。
读到这里说明你认真在学 🎯
订阅每周精选 —— 下一篇新文章 / 新可视化第一时间送到邮箱。
讨论区
· 用 GitHub 账号登录评论src/components/Comments.astro 顶部填入
仓库 ID 和分类 ID(见组件注释里的配置步骤)。