Inference-time Technique for scaling token budget
o3 pretty impressive, why?
| 推理技巧 | 对应 Agent 能力 | 说明 |
|---|---|---|
| 🌀 多轮思考(CoT) | 🧭 规划能力(Plan) | Agent 会自己拆解任务成步骤 |
| 🔁 多次采样 / 自洽性 | ✅ 自我验证(Reflect) | Agent 会尝试多个路径再选最优 |
| 🧠 Tool use | 🛠️ 工具调用(Act) | Agent 会调用计算器、搜索、数据库等外部工具 |
| 📚 长上下文 / 示例 | 🧠 记忆 / 上下文理解 | Agent 会调入长文档或知识,构建更好的语境 |
| 🧍 自我修正 | 🧩 反思与修正(Reflect & Improve) | Agent 能对自己输出做分析和改写 |
Trigger LLM to generate long chain-of-thoughts
Ways:
- few-shot CoT prompting
- Instruction prompting
- Instruction tuning
- Reinforcement learning
1. Introduction to basic prompting techniques
use more token budget to generate a single solution
关键词:用更多 token 来生成一个解答
👉 这是最基本的方式,也就是你给模型一个比较清晰、详细的 prompt(提示词),然后它直接一次性给出答案。
-
比如说你问:“请帮我写一个关于人工智能对教育影响的短文。”
-
模型会用它的“token预算”来理解问题 → 思考 → 输出答案,一次完成。
🪄 用法建议: 如果你希望它多思考一点,写得更全面,就可以:
-
提高温度(temperature)调节创意程度
-
或者加更多背景信息(prompt 越详细,token 越多)
🧠 什么是 Zero-shot CoT?
“Zero-shot”意思是:不给模型示范例子(examples),直接用一个提示语让它开始思考。
“CoT(Chain of Thought)”意思是:鼓励模型一步步思考,先推理,再给答案。
所以 Zero-shot CoT 就是:
✅ 不给例子,只加一句话提示它“请逐步推理”,引导模型思考得更深入、更有逻辑。
Analogical prompt 类比提示
1. 模型输入(Model Input):
-
问题是:“四个顶点坐标为 (-2, 2),(2, -2),(-2, -6),(-6, -2) 的正方形的面积是多少?”
-
提示:要求模型首先回忆与此问题相关的示例,然后再解决当前问题。
2. 相关示例(Relevant Exemplars):
-
模型首先给出一个类似的例子,“一个正方形的面积是如何计算的?”
-
示例中的答案是:正方形的面积通过平方边长来计算。(这里给出了一个有用的公式:面积 = 边长²)
3. 解决问题(Solve the Initial Problem):
-
然后,模型使用这个知识来计算当前问题的答案。
-
通过计算四个顶点的距离来确定正方形的边长,进而算出面积。
4. 模型输出(Model Output):
-
模型首先回顾了相关示例,然后通过步骤计算得出了面积的结果。
-
这是一种引导模型逐步推理的方式,先让它理解相关知识,再进入具体计算。
Analogical prompting outperforms 0-shot Cot and Mannul few-shot CoT
如何找到好的prompt?
利用多个 LLM 分工合作(生成 + 打分 + 改写)来自动找到效果最好的 prompt!
适合用在:
-
自动提示词优化(Auto Prompt Tuning)
-
提高准确率的任务(如 QA、翻译、指令执行)
-
系统性 prompt 工程(不靠人工猜)
🎯 什么是 Meta-Prompt?
Meta-prompt 就是用一个提示词(prompt)去生成新的提示词。
它的目标是:让模型自己学习历史上表现好的提示方式,并尝试写出一个更好的提示。
🌟 这类 Meta-Prompt 中的 “Score” 是怎么得出来的?
✅ 最常见的做法是:
用这个 prompt 去回答一批标准题目,看它答对多少题,答对的比例就是分数!
Least-to-Most Prompting
Least-to-Most Prompting:从简单到复杂的推理引导方式
——通过将复杂问题「分解」成简单步骤,让语言模型更容易解出难题!
- 问题拆解,识别子问题。
- 逐步解决子问题。
Dynamic Least-to-Most prompting
🪓 拆解复杂问题 ➕
📚 动态选例子来辅助 ➕
🪜 逐步求解子问题 ➕
🔧 组合成完整逻辑结构
非常适合用在:
-
多步逻辑推理
-
SQL/SPARQL 查询生成
-
多跳问答(multi-hop QA)
-
Agent 智能模块设计(例:动态记忆回调 + 示例学习)
🧠 What is CFQ?
CFQ 是一个由 Google 研究团队提出的数据集,用于测试大型语言模型(或结构化推理模型)是否真的“理解组合性”(compositional generalization)——也就是说:
🌈 模型能不能学会「新组合」,而不是只会记住旧例子。
📦 CFQ 的基本内容:
-
它基于 Freebase 知识库(一个结构化的知识图谱)
-
每一条数据包括:
-
自然语言问题(比如:“Who directed a film that Tom Hanks acted in?”)
-
目标逻辑查询(SPARQL / logical form)
-
🧠 Self-Discover Prompting(结构自发现式推理)
🌟 核心思想:
让语言模型(LLM)主动发现解题所需的推理结构(Reasoning Structure),然后基于该结构逐步解题。
🧱 Stage 1:任务层级结构发现(Task-Level Structure Discovery)
-
输入:任务类型(例如「推理彩色物体」)
-
操作:让模型用自然语言或结构化方式,总结完成任务所需的各个推理步骤。
-
输出:一个包含多个关键步骤的Key-Value 结构模板(推理结构)
📌 示例输出结构(Reasoning Structure):
json
{ "Type and color of each item": "", "Number of items of each color": "", "Number of items of each type": "", "Number of items of each color and type": "", "Final answer": "" }
🔁 Stage 2:实例层级解题(Instance-Level Decoding)
-
输入:具体问题(task instance)+ 上面生成的结构模板
-
操作:模型按照模板中的每个 Key,逐项推理、填充 Value
-
输出:完整的答案(通过结构逐步生成)
🪄 解题就像「填空式推理」,更稳定更清晰。
💡 应用优势:
✅ 避免 LLM 推理过程跳步、乱序
✅ 强化可解释性,每一步都有结构对齐
✅ 非常适用于:
-
数学题(如 GSM8K)
-
多跳问答(Multi-hop QA)
-
图像或表格数据结构化推理
-
Agent 系统规划与执行(模块解耦)
🧩 类比理解:
传统 prompting:
直接问:“你能算出答案吗?”
Self-Discover prompting:
先问:“你要算出答案,应该分几步?每步要做什么?”
然后再按结构一步步填空。
Variable Computation of CoT
LLM 会自动调整它“思考”的深度(步骤数量),根据问题的复杂度灵活生成短/长的推理链。
如何做到?
prompt 技术 + 模型本身的 token-by-token 自回归生成机制 + 训练语料中的多样推理模式。
🧠 1. 模型天然支持「变长推理」
-
LLM 是基于 Transformer 的自回归语言模型,它本来就不是一步生成整段文本,而是:
一步一步地“预测下一个 token”,直到结束符。
-
所以它本身结构上就能支持任意长度的思考过程。
模型没有被强制输出固定步骤数量,它可以根据当前上下文决定继续思考还是停止。
✨ 2. Prompt 引导 “该思考多少步”
有些 prompt 会显式 or 隐式地告诉模型:
-
“Let's think step by step” → 🪜模型倾向走更长链
-
“Answer directly” → ✂️ 模型倾向快速跳结论
更关键的是:
通过 few-shot 示例,我们可以教会模型:
如果问题复杂,就要多写几步
如果问题简单,就只需要1步就能结束
🔁 模型学会从问题的语言结构中「推测其复杂度」→ 动态决定“推理深度”。
📚 3. 模型在训练语料中已经学到“推理长度 ≈ 问题复杂度”的模式
-
LLM 在训练时,接触了成千上万条「问题 → 解答」的数据
-
它已经学会:
“数学题难 → 通常解答长”
“常识题简单 → 答案短,甚至一步到位”
它其实是从语义和结构中学会了“该多想还是少想”。我们只需用 prompt 轻轻提醒它。
2. Search and Selection from multiple candidates
Increase the width to explore the solution space
关键词:增加宽度,探索更多解答空间
👉 这个技术是生成多个答案,然后再从中挑选最好的。
这叫做“宽度增加(Increase the width)”。
-
比如说你让它写五个不同风格的广告文案。
-
它会给出五种不同风格的方案。
-
然后你可以手动选一个,或者让另一个模型帮你选最优的。
🪄 用法建议:
-
让模型
generate N samples(多轮 sampling) -
再加入选择机制,比如:
-
你手动 pick
-
另一个 prompt 要它投票 / 评分 / 排序
-
🧠 Self-Consistency Decoding(自洽一致性推理)
下方:Self-Consistency 解法的流程
✅ 第一步:采样多条推理路径
使用 temperature > 0(非贪婪采样),让模型生成多个不同思考方式:
-
路径 A:剩下 9 个蛋 → $18 ✅
-
路径 B:误算 → $26 ❌
-
路径 C:分两步思考,正确 → $18 ✅
✅ 第二步:统计每条路径的最终答案(不管中间怎么推的)
- 出现最多的最终答案就是我们认为最“自洽”且最可靠的答案
所以最后选出:「The answer is $18」,因为它出现得最多!
Sampling diverse responses is crucial to self-consistency
中文:采样出多样化的推理路径,是提升“自洽一致性推理(Self-Consistency)”性能的关键!
在alphacode里面使用广泛
Limitation of self-consistency decoding: require an answer extractor
自洽一致性解码的限制:需要一个明确的“答案提取器”
也就是说,虽然 Self-Consistency 方法很强,但它有一个重要的局限性——你得知道怎么从每条推理链中准确提取出“最终答案”,否则投票就无效。
或者是自己在prompt里面说明 "select the most consistent response based on majority consensus"
Universal Self-Consistence.
缺点也很明显:context window size,
| 策略 | 含义 | %Solved |
|---|---|---|
| PRM (Process-supervised Reward Model) | 看整个推理过程是否合理,更强 | 78.2 ✅ |
| ORM (Outcome-supervised Reward Model) | 只看最终输出是否看起来像对的 | 72.4 |
| Majority Voting(Self-consistency) | 多条推理路径 → 投票选最常见答案 | 69.6 ❌ |
✅ 结论:
Self-consistency 投票方法虽简单好用,但 LLM-based Verifier 更强、更细腻,尤其在 process-supervised 情况下
如果你能训练 / 微调出一个能理解 reasoning chain 的 verifier,它能 大幅提升你系统的准确率
Tree of Thoughts (ToT)
🌲 将推理变成“树状结构”
每一步推理可以有多个分支,边生成边评估、边剪枝,探索更有希望的路径!
每一个节点 = 一个“思维片段(thought)”
绿色节点 = 评估为 promising(继续扩展)
红色节点 = 评估为低质量(剪枝)
💡 相当于:
模型不是一口气写完整答案,而是走一步看一步、评分筛选、扩展成多路径推理树!
🧠 Reflexion + Self-Refine:让大模型学会自己检查、反思、修正!
| 阶段 | 描述 |
|---|---|
| (a) Task | 给模型的任务(决策 / 编程 / 推理) |
| (b) Trajectory | 模型第一次执行的轨迹(行为/代码/推理过程) |
| (c) Evaluation | 使用规则 / 环境反馈 / 单元测试,对模型输出进行 内部或外部评估 |
| (d) Reflection | 模型看着自己的输出 + 错误反馈,总结哪里错了,为什么错了 |
| (e) Next Trajectory | 模型基于反思后的第二次尝试,行为更好、代码修正、推理更合理! ✅ |
UseCase: IDE debug
-
✅ 有 Oracle feedback → Self-correction 表现更好。(ground truth)
-
❌ 没有 Oracle,模型会误判自己的答案是否正确,导致 performance 反而下降。
**Multi-agent debate does not improve over self-consistency. **
-
With same budget, we can sample more responses from small models, improving final outcome via better selection.
-
Optimal model choice is task-dependent and budget-dependent:
-
If you have little budget → prefer smaller models with more sampling
-
If budget is large → go for larger model with fewer but more accurate responses
-
3. Iterative self-improvement
Increase the depth to reach the final solution
关键词:增加深度,逐步完善解答
👉 这不是一次性生成完答案,而是一轮一轮优化,让模型自己反思、修正、改进。
-
比如第一步让它写初稿
-
第二步你说“现在请检查有没有逻辑漏洞”
-
第三步说“请改进这些漏洞并输出最终稿”
这种流程就是:每次都往“更好”走一步,不断加深推理,叫做“增加深度(depth)”。
🪄 用法建议:
-
Let’s think step by step(逐步思考) -
Criticize and revise your previous answer -
Now improve it with better logic and structure