Skip to content

高频面试题

什么是 CoT 思维链和 ReAct 模式?它们如何提高 AI 推理能力?

这题考的是推理增强主线:CoT 让模型多步思考,ReAct 让模型在思考和工具行动之间循环。

适合阶段:Prompt 进阶 / Agent 入门核心能力:推理链 · 工具调用 · 失败调试

面试官角度分析,想考什么

  • CoT 的核心机制是什么?
    考察是否理解“用中间步骤换推理质量”。
  • ReAct 和 CoT 是什么关系?
    考察是否知道 ReAct 是推理加行动,而不只是更复杂的 Prompt。
  • 它们分别适合什么任务?
    考察能否区分纯推理和需要外部信息或工具的任务。
  • 生产里有什么风险?
    考察对幻觉、成本、工具误用和格式约束的认识。

可直接抄走的 30 秒参考答案

text
CoT 是让模型先写出中间推理步骤再给答案,适合数学、逻辑、多跳问答这类纯推理任务。ReAct 是 CoT 的扩展,把 Thought 和 Action、Observation 结合起来,让模型边推理边调用工具,比如搜索、计算器、数据库。CoT 提升的是内部推理展开,ReAct 提升的是和外部世界交互后的任务完成能力。工程上要注意成本、幻觉、工具权限和最大步数。

面试回答详解,知其所以然

CoT 和 ReAct 都属于 inference-time compute 的思想:不是只让模型一次性吐答案,而是给它更多中间步骤来思考、观察和修正。

1. CoT 是什么

CoT 的典型形式是:

text
问题 -> 中间推理步骤 -> 最终答案

它适合数学题、多跳问答、逻辑推理、规则判断等任务。核心价值是让模型把隐含推理显式展开,减少直接猜答案的概率。

2. ReAct 是什么

ReAct 的典型循环是:

text
Thought -> Action -> Observation -> Thought -> Action -> Observation -> Answer
  • Thought:模型说明下一步要做什么。
  • Action:调用搜索、数据库、计算器、代码执行等工具。
  • Observation:工具返回结果,作为下一轮上下文。
  • Answer:基于推理和观察给最终答案。

ReAct 让模型不只会“想”,还会“查、算、做”。

3. 二者如何提高推理能力

  • CoT:通过中间 token 增加推理展开空间,适合模型内部知识足够的任务。
  • ReAct:通过工具观察补充外部事实,适合需要实时信息、精确计算、系统状态或多步操作的任务。
  • 共同点:都把复杂任务拆成可追踪步骤。
  • 差异点:CoT 不访问外部世界,ReAct 每轮可以基于工具结果修正计划。

4. 使用边界

CoT 不适合简单事实问答和严格格式输出,因为多余推理会增加成本和出错机会。ReAct 不适合无工具、低风险、简单单轮任务,因为它会增加系统复杂度。

生产中还要注意:

  • 不一定要把完整思考过程展示给用户。
  • 工具调用要有权限和参数校验。
  • Observation 可能被污染,要防间接注入。
  • 复杂推理要有最大步数和失败退出。

5. 一个对比示例

text
问题:某订单是否应该退款?

CoT:根据用户描述和退款规则逐步判断。

ReAct:
Thought:需要先查订单状态。
Action:query_order(order_id)
Observation:订单已签收 3 天。
Thought:需要查退款规则。
Action:search_policy("签收后退款")
Observation:7 天内未拆封可退。
Answer:如果未拆封且在 7 天内,可以申请退款。

面试官追问3个问题

追问一:ReAct 是否等于 CoT + 工具?

  • 考察点:概念边界。
  • 回答方向:可以简化理解为 CoT 加工具交互,但 ReAct 的关键是 Thought、Action、Observation 的循环和基于观察修正。

追问二:CoT 会不会导致幻觉?

  • 考察点:风险意识。
  • 回答方向:会。模型可能生成看似合理但错误的中间步骤,所以关键任务要结合工具验证、引用来源或最终答案校验。

追问三:ReAct 怎么防止无限循环?

  • 考察点:工程落地。
  • 回答方向:设置最大步数、工具调用预算、重复动作检测、失败退出条件和人工接管策略。

扩展知识

CoT、ReAct 和 Function Calling

现代模型的 function calling 已经能原生输出工具调用参数,但 ReAct 的思想仍然有价值:先明确意图,再行动,再观察反馈。实际工程中常常是原生 tool calling 加上 ReAct 式任务规划和日志追踪。

推理模型下还要不要写 CoT

推理模型已经内化了较强的推理过程,通常不需要写很长的“请一步步思考”。更好的做法是给清晰任务、约束和输出格式,把内部推理交给模型。

基于 MIT 协议开源