知识文档:深入理解 ReAct 框架 Agent

1. 什么是 ReAct 框架?

ReActReasoning (推理)Acting (行动) 的缩写,由 Google 研究人员于 2022 年提出。

在传统的 Prompt 工程中,LLM 要么只进行逻辑推理(如 Chain of Thought),要么只进行工具调用(如 Action Generation)。ReAct 的精髓在于将两者结合:LLM 在执行任务时,会交替生成“推理轨迹”和“特定任务的行动”。

核心公式: ReAct = Chain of Thought (CoT) + Action Plan


2. ReAct 的运行逻辑 (The Loop)

ReAct Agent 的工作流程是一个闭环状态机,通常包含以下四个步骤的循环:

  1. Thought (思考):LLM 描述当前情况,计划下一步该做什么,并决定调用哪个工具。
  2. Action (行动):LLM 输出一个预定义的指令(如 call_search("Python")),主程序捕获该指令。
  3. Observation (观察):主程序执行工具,并将结果(API 返回值、数据库内容等)反馈给 LLM。
  4. Final Answer (最终回复):当 LLM 判断信息足够时,跳出循环,给出人类可读的答案。

3. 设计核心:Prompt 与 脚本的协作

要让 ReAct 跑通,必须实现 Prompt 设计主程序逻辑的深度解耦与配合。

A. Prompt 层:构建“思维框架”

Prompt 必须强制 LLM 遵守固定的输出格式。一个典型的 ReAct 系统提示词(System Prompt)结构如下:

示例 Prompt 结构:

B. 程序层:构建“执行引擎”

主程序脚本(Python/Node.js)承担着“手脚”的功能,逻辑如下:

  1. 解析逻辑:使用正则表达式或 JSON 解析器,提取 LLM 输出中 Action: 之后的内容。
  2. 中断机制:一旦解析到 Action,立即停止 LLM 的继续生成,转而执行本地代码。
  3. 上下文拼接:将执行结果以 Observation: XXX 的格式拼接回对话历史。

4. 为什么 ReAct 优于纯推理或纯动作?

维度 纯推理 (CoT) 纯动作 (Tool Use) ReAct 框架
准确性 容易产生事实性幻觉 缺乏逻辑,难以处理复杂意图 通过观察实时修正逻辑
透明度 过程可见,但无法交互 过程不可见,仅有结果 整个思维链条清晰可见
容错率 一步错步步错 无法通过逻辑判断错误 发现 Observation 不符合预期时能自我修正

5. 极简伪代码实现 (Python 逻辑演示)

def run_agent(user_query):
    # 1. 初始 Prompt 包含工具描述和任务
    context = system_prompt + user_query
    
    while True:
        # 2. 调用 LLM (设定在遇到 "Observation:" 时停止生成)
        response = llm.generate(context, stop_sequences=["Observation:"])
        context += response
        
        # 3. 判断是否完成
        if "Final Answer:" in response:
            return extract_final_answer(response)
        
        # 4. 提取 Action 并执行
        action_call = extract_action(response)
        observation = execute_tool(action_call)
        
        # 5. 将结果喂回 LLM
        context += f"\nObservation: {observation}\n"
     

6. 避坑指南与优化建议


结语: ReAct 的精髓在于 “透明的思考”“受控的行动” 。它是目前构建生产级 Agent(如 LangChain、AutoGPT)最基础也最有效的底层思维模型。