Agent 推理模式 · 深挖版教程
Agent 推理模式:ReAct、CoT 与它们的家族
一个 LLM 在给出答案前,能不能「多想几步」「先查一下再说」「错了再试一次」——CoT、ReAct、Reflexion、Tree of Thoughts、Self-Consistency、Plan-and-Execute 就是这些「多想」的不同方式。这份教程不逐个罗列名词,而是把它们钉在同一组坐标轴上:每个模式都在用推理期算力换可靠性,区别只在于算力花在哪、循环接不接外部真值。
·适合谁
三条前置能力,缺一条会读得吃力:
前置知识(具体到能力)
- 能读懂 Python 风格伪代码,且理解一次 LLM 调用 = 一次「输入 token → 输出 token」的前向传播,有 token 成本和延迟
- 知道 function calling / tool use 是什么:模型输出一个结构化的工具调用,外部代码执行后把结果作为文本喂回模型
- 用过或读过至少一个 LLM 应用(调过 OpenAI / Claude API,或跑过一个 agent)。听过 CoT、ReAct 这些名字,但想真正讲清它们为什么有效,而不只是会用
·不适合谁
下面三类读者请先去别处,会更高效:
- 完全没接触过 LLM 应用:先建立 prompt / completion / tool use 的基础——参见同目录 agent-interview · 01 LLM & Prompt。
- 只想拷一段能跑的 ReAct 代码:直接看 tool-use · 03 Agent Loop 或 LangChain
create_agent快速上手,比读这里快。 - 想要的是「控制流 / 选型」视角——把规划落成可运行的图、planner 和 executor 怎么分、什么时候重规划:那是规划视角,请读 agent-planning。本教程是推理视角(算力与接地),两者互补、不重复——同样的 ReAct,这里讲它为什么能消除幻觉,agent-planning 讲它在控制流轴上的位置。
·读完之后你能做到什么
官方文档教你 CoT 就是「让模型 step by step」、ReAct 就是「Thought / Action / Observation 循环」。这份教程教你三件文档不讲、面试却常问的事:为什么多写几个 token 真能提升正确率(token 流 = 串行计算深度,不是「让模型想清楚点」这种空话);一段 CoT 什么时候是模型事后编出来骗你的(faithfulness);以及为什么在 o1 / DeepSeek-R1 这类推理模型上,手写 few-shot CoT 反而会掉分。
具体的可验证能力(动词开头,能拿去面试或选型会上检验):
- 用「算力花在哪 × 接不接外部真值」两根轴,定位 CoT / Self-Consistency / ReAct / Reflexion / ToT / Plan-and-Execute,说出每个的落点与代价
- 讲对 CoT 为什么有效的机制(中间 token 给固定深度的模型补上串行计算步数),而不是"让模型想清楚一点"
- 判断一段 CoT 是否可信——说得出 Turpin、Lanham 两个让链条「看着对其实是事后合理化」的反例
- 给定一个任务(可投票的 / 要联网纠错的 / 要探索回溯的 / 要跨次改进的),选对模式并讲清为什么不选其余
- 判断在推理模型(o1 / o3 / R1)上,到底还该不该手写 CoT、Self-Consistency、ReAct
- 把 Graph-of-Thoughts / ReWOO / LATS / Self-Refine 等新变体,自己沿这两根轴归位,而不是死记论文名字
·一句话本质
一句话本质 · 贯穿全教程的视角
- 每一种 Agent 推理模式,本质都是用推理期算力(test-time compute)换取单次前向传播给不了的可靠性。一次 LLM 前向传播的计算深度是固定的;想让它解更难的题,只能在推理时额外花算力——多写 token、多采样、多搜一层、多调一次工具、多试一回合。
- 所有差异只落在两点:算力花在哪(串行 token / 并行采样 / 树搜索 / 工具往返 / 重试回合)决定成本与能力上限;循环接不接外部真值(grounding)决定它会不会一脸自信地错。
六种范式不是六个孤立的名词,而是这两根轴上的不同落点。读这份教程时,每遇到一个新模式,先问两句:它花的是哪种算力?它接没接到外部反馈?
·现状速览(截至 2026-06)
稳定:CoT「写出中间步骤」、Self-Consistency「采样多条再投票」、ReAct「推理→行动→观察」这三种基本形态,是当前 agent 的 settled 核心,短期不会变。
变化中:2024-09 起,CoT 从「你手写的 prompt 技巧」变成「用 RL 训练进模型权重的行为」——o1(2024-09)→ DeepSeek-R1(2025-01,开源 + 纯 RL 出推理)→ Claude 扩展思考(2025-02)→ o3 / Gemini thinking(2025)。「让模型在推理时多想」(test-time / inference-time scaling)成了和预训练并列的新 scaling 轴。一个反直觉的结论:在这些推理模型上,手写 few-shot CoT 反而会掉分。
已被取代 / 降级:把 Tree of Thoughts 当通用规划器、在推理模型上堆 few-shot CoT 例子、以及「加了 CoT / ReAct 就一定更好」的 2022 式直觉——都已退场或降级为边缘场景。
·读之前:一个诚实的提醒
这些模式读起来都很"顺"——名字好记、图好看、道理一听就懂。这种顺,正是危险信号。下面三句话如果在你心里冒出来,停一下:
「我读得很顺」——你记住的是熟悉感,不是结构。合上教程,能讲出 CoT 为什么有效、而不是复述"让模型一步步想"吗?
「我做题很快」——多半题型太标准。换个场景(一个会真报错的联网客服 agent),你还选得对模式吗?
「我没卡壳」——往往意味着没真正碰到硬骨头。每章末「刚好够不着」的挑战,就是用来制造卡壳的。
·概念地图:两根轴
·学习路径建议
按目的选一条线,不必从头读到尾:
- 只想建立全景认知:00 起点 → 01 CoT 家族(吃透两根轴的左半边)→ 04 推理模型 → 05 的应用判别题。跳过 02 / 03 的机制细节。
- 要做选型 / 准备面试:完整顺读 01 → 02 → 03 → 04,重点啃每章的「带来的代价」段、01 章的 faithfulness、04 章的推理模型取舍,最后用 05 的场景题自检。
- 要带读别人的 agent 代码:01 → 02(把代码里的「想」和「做」对号入座)→ 03 看新变体如何归位。机制细节随时交叉跳到 agent-planning 的控制流视角。
·目录
·学完之后
- 任务规划(控制流视角):同样这批模式,从「提前承诺 ↔ 临场适应」一条轴重新看一遍——它在你的 schema 上加了"怎么把推理结构落成可运行的控制流"。参见 agent-planning。
- 工具调用协议:ReAct 的 Action 到底怎么变成一次真实的
tool_use调用、结果怎么回来,加了"接地那一步的工程实现"。参见 tool-use。 - 多智能体编排:单个 agent 怎么推理是这里;多个 agent 怎么分工协调是上一层,加了"谁来推理、推理结果交给谁"。参见 multi-agent-patterns。
- Prompt 工程:CoT 作为 prompt 技巧的更广上下文(few-shot、模板、结构化输出),加了"在推理之外,怎么把指令写好"。参见 prompt-engineering。