Agent 推理模式 · 深挖版教程

Agent 推理模式:ReAct、CoT 与它们的家族

一个 LLM 在给出答案前,能不能「多想几步」「先查一下再说」「错了再试一次」——CoT、ReAct、Reflexion、Tree of Thoughts、Self-Consistency、Plan-and-Execute 就是这些「多想」的不同方式。这份教程不逐个罗列名词,而是把它们钉在同一组坐标轴上:每个模式都在用推理期算力换可靠性,区别只在于算力花在哪、循环接不接外部真值。

定位:概念型 · 系统建立心智模型 | 基于:原始论文 + 2025–26 推理模型前沿 | 读完约:半天 | 代码状态:示例为讲解用伪代码,标注"未本地验证"

·适合谁

三条前置能力,缺一条会读得吃力:

前置知识(具体到能力)

  • 能读懂 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),你还选得对模式吗?

「我没卡壳」——往往意味着没真正碰到硬骨头。每章末「刚好够不着」的挑战,就是用来制造卡壳的。

·概念地图:两根轴

横轴 · 算力花在哪(越往右越贵) 串行 token → 并行采样 → 搜索 → 工具往返 → 重试回合 内部闭环 无外部校验 → 会自信地错 接地 grounding → 能纠错 CoT 思维链 Self-Consistency 采样多条 · 投票 ToT 思维树 · 搜索 Plan-Execute 先规划后执行 ReAct 推理 + 行动 Reflexion 反思 · 记忆 前沿变体沿同样两轴归位 GoT · ReWOO · LATS · Self-Refine · Least-to-Most → 第 3 章
图 0.1纵轴看「接不接外部真值」,横轴看「花哪种推理期算力」。 注意:六大支柱并非随机散落——内部闭环的(CoT / Self-Consistency / ToT)天然在上排,靠外部反馈的(ReAct / Reflexion / Plan-Execute)在下排;记住这两根轴,底栏那些前沿名字你都能自己往格子里填。

·学习路径建议

按目的选一条线,不必从头读到尾:

  • 只想建立全景认知: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。