\subsection{从推理大模型到智能体}

推理模型不仅提升了语言模型在静态问题上的表现，更催生了一类能够感知、规划、行动与反思的自主智能体。本节介绍三种将“系统2”推理注入智能体构建的核心方法：通过显式思维链驱动行动的 ReAct 框架、基于失败经验进行自我纠正的 Reflexion 方法，以及将规划建模为树搜索的 Tree of Thoughts 算法。这些方法共同揭示了推理如何成为连接认知与行动的桥梁。

\subsubsection{ReAct 框架}

传统的提示链方法通常一次性生成完整计划，难以应对动态环境中的不确定性。ReAct（Reasoning and Acting）框架~\cite{yao-etal:2023react} 将问题求解建模为一个交替生成“思维”与“动作”的序列，使模型能够在执行过程中不断根据观察结果调整计划。

具体而言，在时间步 $t$，模型接收当前上下文 $c_t$（包括任务描述、工具说明以及历史交互），先采样一个思维 $T_t$，再基于该思维采样一个动作 $A_t$：
\begin{eqnarray}
T_t &\sim& \pi_\theta(\cdot \mid c_t), \\
A_t &\sim& \pi_\theta(\cdot \mid c_t, T_t).
\end{eqnarray}
环境根据 $A_t$ 返回观察 $O_t$，新的上下文更新为 $c_{t+1} = c_t \oplus (T_t, A_t, O_t)$。这一循环持续进行，直到模型输出一个结束动作或达到最大步数。

一个经典的例子是让智能体在电商网站为用户选购笔记本电脑。原始 LLM 可能直接生成一个含错误参数的搜索指令，而 ReAct 智能体的交互过程如下：

\vspace{0.5em}
\begin{quote}
\textit{思维：用户需要视频剪辑用的电脑，需要高性能 GPU 和至少 32 GB 内存。我先用关键词搜索。}

\textit{动作：search("视频剪辑笔记本电脑")}

\textit{观察：返回 50 条商品，但摘要中没有显示内存信息。}

\textit{思维：我需要筛选内存条件。页面上有“高级筛选”按钮，我可以点击它并设置内存为 32 GB。}

\textit{动作：click("高级筛选"); select("内存", "32GB")}

\textit{观察：列表刷新，剩余 8 个匹配商品。}
\end{quote}
\vspace{0.5em}

这种“思维—动作—观察”的循环带来了两个关键优势：(1) 思维为动作提供了可解释的决策依据；(2) 每一轮观察都可以用来修正后续的推理方向，使系统具备在线适应能力。在实际部署中，动作集通常被实现为工具 API 调用，模型通过生成特定格式的文本（如 \texttt{Action: search("...")}）来触发工具，环境则将执行结果以文本形式回传。

ReAct 的局限性在于其本质是线性链式推理，面对包含多个分支或需要长程前瞻的复杂任务时，可能陷入局部次优甚至无法找到可行路径。为此，后续方法引入了更结构化的搜索机制。

\subsubsection{Reflexion 方法}

在现实交互中，即使是一次完整的 ReAct 轨迹也可能以失败告终。与其从头重试，Reflexion 方法~\cite{shinn-etal:2023reflexion} 赋予智能体“从错误中学习”的能力：每次失败后，模型会生成一段文本化的反思，并将其存入长期记忆，作为后续尝试的提示。

形式化地，记任务输入为 $\mathbf{x}$，第 $k$ 次尝试生成的轨迹为 $\tau_k$，最终环境给出的二进制成功信号为 $s_k \in \{0,1\}$。若 $s_k = 0$，系统将当前轨迹与失败信号输入大语言模型，让其总结失败原因和修正策略，生成反思文本 $R_k$：
\begin{eqnarray}
R_k &=& \text{LLM}\bigl(\mathbf{x}, \tau_k, \text{``Task failed. Analyze the error and suggest a fix.''}\bigr).
\end{eqnarray}
反思 $R_k$ 被追加到记忆 $\mathbf{M}$ 中。在第 $k+1$ 次尝试时，智能体除了任务描述 $\mathbf{x}$ 外，还会看到记忆 $\mathbf{M}$ 作为额外上下文，从而有意识地规避之前犯过的错误。整个过程可以看作在语言空间中进行的一种轻量级“经验回放”。

仍以选购电脑为例，假设某次尝试中智能体在筛选后直接选择了一款外观漂亮的机型，却忽略了 GPU 型号，导致最终购买结果不符合要求。失败后，Reflexion 模块可能输出如下反思：

\vspace{0.5em}
\begin{quote}
\textit{反思：上次失败是因为我只关注了内存筛选，而没有验证 GPU 是否符合视频剪辑的需求。在下一步选择具体产品时，必须检查其 GPU 是否为独立高性能显卡（如 RTX 4060 及以上）。}
\end{quote}
\vspace{0.5em}

在下一轮尝试中，这条反思被加入提示，智能体在筛选后会主动检查每款候选品的 GPU 参数，从而显著提高成功率。

Reflexion 方法的优雅之处在于它完全复用了同一个大语言模型来实现“反思者”的角色，无需额外训练。不过，反思的质量很大程度上依赖于模型本身的诊断能力；对于需要精密逻辑的任务，单纯的文本反思可能不足以纠正常见的计算或逻辑谬误，此时可结合后续的树搜索或形式验证器进行强化。

\subsubsection{Tree of Thoughts 算法}

当任务具有明确的中间状态和可评价的子目标时，仅靠线性的“思维—动作”链或记忆化的反思仍显不足。Tree of Thoughts（ToT）算法~\cite{yao-etal:2023tree} 将规划形式化为在“思维树”上的搜索问题：每一个节点代表一个部分推理结果，边代表从当前思考状态到下一步思考的过渡，搜索算法负责在树的生长过程中探索有希望的分支并剪除低质量路径。

ToT 的一次典型执行包含两个核心组件：

\begin{itemize}
\item \textbf{候选生成}：给定当前状态 $s$，大语言模型一次性生成 $k$ 个不同的下一步思维 $\{t^{(1)}, \dots, t^{(k)}\}$。
\item \textbf{状态评估}：使用同一大语言模型（或一个专用的验证器）为每个候选思维打分。一种常见的方法是让模型以特定句式（如“这一步骤正确/可能/不可能的”）进行评价，然后将其对“正确”等锚定词的概率映射为分值：
\begin{eqnarray}
V(s, t^{(i)}) &=& P_\theta\bigl(y_{\mathrm{anchor}} = \text{``certain''} \mid s, t^{(i)}, \text{评估指令}\bigr).
\end{eqnarray}
\end{itemize}

根据不同的任务特性，可以选择宽度优先搜索（BFS）或深度优先搜索（DFS）。以 BFS 为例，算法在每一层保留分值最高的 $b$ 个状态，然后基于这些状态继续生成下一步候选，直至达到终止条件（如找到公认的最优答案或预算耗尽）。

Tree of Thoughts 在需要全局规划和回溯的任务（如数学证明、创意写作大纲生成、复杂策略游戏）上取得了远超简单 ReAct 的表现。但它的计算开销更大，因为每次扩展都需要多次调用大语言模型；因此，动态分配计算资源、在简单步骤上减少采样数量，是提升其实用性的重要方向。

\vspace{0.3cm}
总结起来，ReAct 提供了智能体与环境交互的基本骨架，Reflexion 为其注入了从失败中自我改进的元认知能力，而 Tree of Thoughts 则通过结构化搜索赋予了智能体应对复杂规划问题的深度推理手段。这些方法共同构成了当前基于大语言模型构建推理型智能体的技术基石。