【AI面试临阵磨枪】ReAct 框架完整流程是什么?Reasoning → Action → Observation 如何协作?

一、面试题目

请详细描述 ReAct 框架的工作流程。在实际运行中,Reasoning(推理) 、Action(行动) 和 Observation(观察) 这三个环节是如何闭环协作的?它解决了大模型在处理复杂任务时的什么痛点?

二、知识储备

1. 核心背景:为什么要用 ReAct?

在 ReAct 出现之前,大模型要么只是"空想"(思维链 CoT,容易产生幻觉),要么只是"盲动"(单纯调用工具,缺乏逻辑)。 ReAct 的本质是: 让模型在行动之前先"思考",在行动之后根据"反馈"再思考,从而实现逻辑与动作的解耦。

2. 三步走协作流程

ReAct 的运行是一个 Loop(循环),直到目标达成或达到最大步数:

① 第 1 步:

Reasoning (Thought) ------ "谋定而后动" 模型基于当前问题或上一轮的结果,生成一段自然语言描述,分析当前的处境、缺失的信息以及下一步该做什么。

**作用:**减少幻觉,把复杂的任务拆解成可执行的小步骤。

② 第 2 步:

Action (Act) ------ "与世界交互" 模型决定调用哪个工具(Tool/Function)以及输入什么参数。这通常是输出一个特定的 JSON 或函数调用指令。

**作用:**让模型拥有"手",能够获取外部实时信息(如搜索、查库)。

③ 第 3 步:

Observation (Obs) ------ "看反馈结果" 执行工具后,将得到的结果(如搜索出的网页内容、数据库返回的数字)反馈给模型。

**作用:**为下一轮推理提供事实依据,将"外部知识"转化为"上下文"。

3. 代码视角(逻辑伪代码)

① 在 Python 中实现一个简单的 ReAct 循环,具体代码如下。

python 复制代码
import asyncio

async def react_agent(goal: str):
    # 初始化上下文:定义目标和可用工具
    context = f"目标: {goal}\n可用工具: [搜索, 计算器]"

    while True:
        # 1. Reasoning + Action: 模型根据当前上下文生成"思考"和"动作"
        # 提示词末尾强行拼接 "Thought:" 引导模型进入 ReAct 模式
        response = await llm.generate(f"{context}\nThought: ")

        # 检查是否达成最终目标
        if "最终答案:" in response:
            print("任务完成!")
            return response

        # 2. 执行 Action (解析模型输出并调用工具)
        # 假设 parse_action 会从文本中提取出 {'tool': '...', 'query': '...'}
        action = parse_action(response)

        # 动态调用工具字典中的函数
        # 例如: tools = {"搜索": search_func, "计算器": calc_func}
        try:
            observation = await tools[action['tool']](action['query'])
        except Exception as e:
            observation = f"错误: 执行工具失败 - {str(e)}"

        # 3. Observation: 将执行结果(观察)拼接回上下文,开启下一轮推理循环
        context += f"\n{response}\nObservation: {observation}"

        # 打印当前轮次的状态(可选,方便调试)
        print(f"--- 轮次观察: {observation} ---")

# 使用示例
# asyncio.run(react_agent("查询 2026 年世界杯举办地并计算场馆平均容纳人数"))

② 在 Node.js 中实现一个简单的 ReAct 循环,具体代码如下。

javascript 复制代码
async function reactAgent(goal) {
  let context = `目标: ${goal}\n可用工具: [搜索, 计算器]`;

  while (true) {
    // 1. Reasoning + Action: 模型输出 Thought 和 Action
    const response = await llm.generate(context + "\nThought: ");

    if (response.includes("最终答案:")) return response;

    // 2. 执行 Action (模拟)
    const action = parseAction(response); // 比如 { tool: "搜索", query: "2026天气" }
    const result = await tools[action.tool](action.query);

    // 3. Observation: 将结果拼接回上下文,开启下一轮循环
    context += `${response}\nObservation: ${result}`;
  }
}

4. ReAct 的核心优势

**① 可解释性:**开发者可以清晰看到模型的"心路历程",知道它为什么调用这个工具。

**② 错误纠正:**如果 Observation 返回了错误信息,模型可以在下一轮 Thought 中意识到错误并尝试换个方法。

三、破局之道

在回答完流程后,通过这段话展现你对 Agent 底层设计的思考:

回答 ReAct 框架,核心要理解它是在构建一套 "动态决策系统"。

你可以告诉面试官:ReAct 的伟大之处不在于它调用了工具,而在于它通过 Thought 强制模型在向量空间中进行自洽性检查,再通过 Observation 引入了外部世界的真实熵。它解决了 LLM 的 "闭环幻觉" 问题。在工程落地时,ReAct 就是 Agent 的逻辑神经系统,它让 AI 从一个 "只会聊天的文本框" 变成了一个 "能解决问题的数字员工"。

相关推荐
AllData公司负责人2 小时前
AI大模型数据开发底座系列说明书,AllData集成Chat2DB开源项目建设AI 数据库分析底座,涵盖AI 洞察/对话SQL/智能视图!
数据库·人工智能·sql·开源·ai 洞察·对话sql
泯泷4 小时前
让 Agent 分清“马上办、等一等、顺手办”
人工智能·llm·agent
鲜于言悠9054 小时前
Claude Fable 5.2 登场,专治复杂推理与长任务
人工智能
联犀5 小时前
如何工程化降低语音交互AI设备的延迟(小智ai,芙崽这样的ai设备)
人工智能
杉岩数据5 小时前
杉岩数据董事长陈坚:从数据存储到行业智能——杉岩的AI时代战略布局
人工智能
冬奇Lab5 小时前
Loop 工程到底是高深的新技术,还是炒冷饭?用训练一个识别狗的模型讲明白
人工智能
冬奇Lab5 小时前
一天一个开源项目(第260篇):Plannotator —— 给 AI 编码 Agent 配一块「可批注的审阅台」,计划和代码改动都能在浏览器里逐条批示
人工智能·开源·claude
泯泷5 小时前
语音,正在成为 AI Agent 最自然的接口
人工智能·llm·agent
杨凯凡7 小时前
IT日报|2026-11-13:GitHub 大规模凭据攻击、Signal 形式化验证、Claude 新模型与 AI 安全诉讼
人工智能·安全·github
一个天蝎座 白勺 程序猿7 小时前
别让收藏夹替你学习:我搭AI知识体系的完整方法,脚本直接拿去用
人工智能·学习·ai·ai学习