什么是ReAct范式?让AI像人一样思考与行动的核心逻辑

什么是ReAct范式?让AI像人一样思考与行动的核心逻辑

在大模型应用开发中,你是否遇到过这样的问题:AI明明掌握相关知识,却给出前后矛盾的回答?复杂任务中,模型无法拆解步骤、灵活调用工具?这背后的核心痛点是:传统大模型往往只专注于"思考"(推理)或"行动"(工具调用),缺乏两者的协同。而ReAct范式的出现,正是为了解决这一问题——它让AI像人类一样,在思考中行动,在行动中调整思考,成为构建智能Agent的关键底层逻辑。

一、ReAct范式的核心定义

ReAct(Reasoning + Acting)范式源于2022年的论文《Synergizing Reasoning and Acting in Language Models》,其核心思想是将"推理"与"行动"相结合,让语言模型在解决复杂任务时,通过"思考-行动-观察"的循环,逐步逼近最终答案。

简单来说,ReAct范式模拟了人类解决问题的自然过程:当我们面对一个复杂任务时,不会直接给出答案,而是先思考"我需要做什么",再采取行动(比如查询资料、计算数据),观察行动结果后,再调整思考方向,重复这一过程直到任务完成。

与传统模式相比,ReAct的核心优势在于:

  • 解决大模型"胡言乱语"问题:通过行动获取真实反馈(如工具返回结果),约束推理的合理性;
  • 提升结果可解释性:每一步思考和行动都清晰可见,便于追溯决策过程;
  • 增强任务灵活性:支持动态调整步骤,适配复杂多变的任务场景。

二、ReAct范式的核心流程:思考-行动-观察循环

ReAct范式的运作遵循固定的循环逻辑,每一轮循环都包含三个关键环节,且可根据任务需求重复多次:

1. 思考(Thought):明确下一步目标

模型基于用户问题和已有的观察结果,分析当前任务进展,判断"接下来需要做什么"。例如:

  • 用户问题:"除了苹果遥控器,还有什么设备能控制它最早设计交互的程序?"
  • 初始思考:"我需要先确认苹果遥控器最早设计用于控制哪个程序,再查找该程序的其他控制设备。"

这一步的核心是让模型理清任务逻辑,避免盲目行动,相当于人类解决问题时的"规划阶段"。

2. 行动(Action):执行具体操作

根据思考结果,模型调用对应的工具或资源,执行具体行动。行动的类型包括:

  • 工具调用:如搜索引擎查询、数学计算、API调用等;
  • 信息检索:如查询知识库、文档数据库等;
  • 其他操作:如数据转换、文本处理等。

例如,基于上述思考,模型会执行第一个行动:"搜索[Apple Remote 最早设计交互的程序]"。

3. 观察(Observation):获取行动反馈

行动执行后,模型会接收工具返回的结果或环境反馈,形成观察结论。观察结果将作为下一轮循环的输入,约束后续的思考和行动。

例如,上述搜索行动的观察结果可能是:"Apple Remote于2005年推出,最早用于控制Front Row媒体中心程序"。

循环终止条件

当模型通过思考判断"已获取足够信息,能够给出最终答案"时,循环终止,直接输出最终结果。整个过程就像侦探破案:先分析线索(思考),再调查取证(行动),根据证据调整方向(观察),直到查明真相。

三、ReAct范式的核心:提示词模板设计

ReAct范式的落地离不开规范的提示词模板,它为模型的"思考-行动-观察"循环提供了明确的格式约束,确保推理过程的连贯性和工具调用的准确性。以下是LangChain中ReAct范式的经典提示词模板及设计逻辑:

1. 基础模板框架(LangChain标准模板)

按照给定的格式回答以下问题。你可以使用下面这些工具: {tools}

回答时需要遵循以下格式:
Question: 我需要回答的问题
Thought: 回答这个问题我需要做些什么
Action: "{tool_names}" 中的一个工具名
Action Input: 选择这个工具所需要的输入
Observation: 选择这个工具返回的结果
(这个思考/行动/行动输入/观察可以重复N次)
Thought: 我现在知道最终答案
Final Answer: 原始输入问题的最终答案

现在开始回答,记得在给出最终答案前,需要按照指定格式进行一步一步的推理。
Question: {input}
{agent_scratchpad}

2. 模板关键变量说明

  • {tools}:当前可用的工具列表及描述,让模型了解每个工具的功能(如"SerpAPI:用于搜索引擎查询,获取实时信息");
  • {tool_names}:工具名称集合(如["SerpAPI", "llm-math", "文本分析工具"]),约束模型只能选择指定工具;
  • {input}:用户的原始问题;
  • {agent_scratchpad}:核心占位符,用于存储中间推理过程(包括之前的Thought、Action、Action Input、Observation),相当于模型的"草稿本",支持多轮循环的上下文延续。

3. 进阶模板(支持工具串联与记忆)

针对需要多工具串联调用或会话记忆的场景,可扩展模板如下:

你是一个智能助手,能够通过工具调用解决复杂问题,并且可以记住之前的交互信息。
可用工具: {tools}
工具名称列表: {tool_names}
历史交互记录: {chat_history}

请按照以下格式回答:
Question: {input}
Thought: 结合历史记录和当前问题,我需要先做什么?(如需要调用工具,明确工具类型和输入;如已掌握足够信息,直接准备最终答案)
Action: 工具名(必须来自{tool_names})
Action Input: 工具所需的具体参数(需明确、完整)
Observation: 工具返回的结果
(可重复思考-行动-观察步骤)
Thought: 现在已获取所有必要信息,可整理最终答案
Final Answer: 清晰、准确的回答,包含关键依据和结论

注意:如果工具调用失败或结果无效,可重新选择工具或调整输入参数;无需调用工具时,直接跳过Action和Observation步骤。

4. 模板设计核心原则

  • 格式强约束:明确规定Thought、Action、Action Input、Observation的输出格式,避免模型输出混乱;
  • 工具透明化:完整展示工具功能和名称,让模型能根据任务需求精准选择;
  • 上下文延续:通过{agent_scratchpad}{chat_history}保留中间过程,支持多轮推理;
  • 容错性提示:允许模型调整工具调用策略,提升复杂场景的适应性。

四、ReAct范式的经典案例:从问题到答案的完整过程

为了更直观理解ReAct的运作逻辑,我们以"除了苹果遥控器,还有什么设备能控制它最早设计交互的程序?"为例,结合提示词模板,完整拆解ReAct的执行流程:

轮次 思考(Thought) 行动(Action) 行动输入(Action Input) 观察(Observation)
1 需先确认苹果遥控器最早控制的程序 搜索工具(SerpAPI) Apple Remote 最早设计交互的程序 Apple Remote于2005年推出,最早用于控制Front Row媒体中心程序
2 需查找Front Row程序的其他控制设备 搜索工具(SerpAPI) Front Row 控制设备 未找到直接结果,相似关键词包括"Front Row (software)"
3 需补充搜索Front Row软件的控制方式 搜索工具(SerpAPI) Front Row (software) 控制设备 Front Row软件可通过Apple遥控器或键盘功能键控制
4 已获取足够信息,可给出答案 - - -

最终答案:"苹果遥控器最早设计用于控制Front Row媒体中心程序,该程序除了苹果遥控器外,还可通过键盘功能键控制。"

对比传统模式(直接输出答案),ReAct通过三轮循环,逐步明确目标、补充信息,最终得到准确结果,且每一步决策都有迹可循。

五、ReAct范式的核心应用场景

ReAct范式尤其适合需要多步骤、强逻辑、工具协作的复杂任务,典型应用场景包括:

1. 智能客服与知识库问答

如LangChain中的本地知识智能客服案例,模型通过ReAct循环:

  • 思考:"用户询问Model3怎么样,需要先获取产品描述和品牌信息";
  • 行动:调用"查询产品名称"工具获取Model3参数,调用"公司相关信息"工具获取特斯拉背景;
  • 观察:获取产品定价、设计特点、品牌优势等信息;
  • 最终整合信息给出答案。

2. 故障诊断与问题排查

如网络故障诊断Agent,通过ReAct实现工具串联调用:

  • 思考:"用户无法访问网站,需先检查DNS解析,再测试网络连通性";
  • 行动1:调用DNS解析工具,获取网站IP地址;
  • 观察1:解析成功,得到IP地址93.184.216.34;
  • 行动2:调用Ping工具,测试该IP连通性;
  • 观察2:连接超时;
  • 行动3:调用网络日志分析工具,查找超时原因;
  • 最终结合多轮观察给出诊断结论。

3. 复杂信息检索与分析

如"历史上的今天有哪些名人出生"这类问题,模型通过ReAct:

  • 思考:"需先确认今天的日期,再查找该日期对应的名人出生记录";
  • 行动1:调用搜索引擎获取当前日期(2023年5月27日);
  • 行动2:调用历史数据库查询5月27日出生的名人;
  • 观察:获取亨利一世、康熙帝等名人信息;
  • 最终整理输出答案。

六、ReAct范式与LangChain的结合:快速落地智能Agent

ReAct范式的落地离不开开发框架的支持,而LangChain作为LLM应用开发的主流框架,提供了完善的ReAct实现方案,让开发者能够快速构建基于ReAct的智能Agent。

1. LangChain中ReAct的核心组件

  • LLM:作为推理引擎,负责思考过程和决策;
  • Tools:行动的载体,包括内置工具(如SerpAPI搜索引擎、llm-math计算器)和自定义工具;
  • PromptTemplate:即前文所述的ReAct提示词模板,约束思考、行动、观察的输出规范;
  • AgentExecutor:负责调度ReAct循环,管理工具调用和结果整合;
  • Memory:存储对话历史和中间观察结果,支持多轮循环的上下文延续。

2. 关键代码示例:LangChain实现ReAct Agent

以下是基于LangChain构建ReAct Agent的核心代码框架,结合提示词模板,实现"查询天气并计算温度的1/4"的任务:

# 1. 加载依赖库
from langchain.agents import load_tools, initialize_agent, AgentType
from langchain_community.llms import Tongyi
from langchain.prompts import PromptTemplate
import os

# 2. 定义ReAct提示词模板
REACT_PROMPT_TMPL = """
你可以使用以下工具: {tools}
可用工具名称: {tool_names}
请按照以下格式回答用户问题:
Question: {input}
Thought: 我需要做什么?
Action: 工具名
Action Input: 工具输入参数
Observation: 工具返回结果
(可重复Thought-Action-Action Input-Observation步骤)
Thought: 我现在知道最终答案
Final Answer: 问题的完整回答
"""

# 3. 初始化提示词模板
prompt = PromptTemplate(
    template=REACT_PROMPT_TMPL,
    input_variables=["input", "tools", "tool_names"]
)

# 4. 初始化LLM(通义千问)
api_key = os.environ.get('DASHSCOPE_API_KEY')
llm = Tongyi(model_name="qwen-turbo", dashscope_api_key=api_key)

# 5. 加载工具(SerpAPI用于搜索天气,llm-math用于计算)
tools = load_tools(["serpapi", "llm-math"], llm=llm)

# 6. 初始化ReAct Agent
agent = initialize_agent(
    tools,
    llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,  # 零样本ReAct模式
    verbose=True,  # 打印思考、行动、观察过程
    prompt=prompt  # 传入自定义ReAct提示词模板
)

# 7. 运行任务
agent.run("当前北京的温度是多少华氏度?这个温度的1/4是多少?")

代码执行流程(ReAct循环):

  1. 思考:"我需要先查找当前北京的华氏温度,再计算该温度的1/4";
  2. 行动:SerpAPI;
  3. 行动输入:"当前北京温度 华氏度";
  4. 观察:"北京当前华氏温度为86°F";
  5. 思考:"已获取温度,需计算86的1/4";
  6. 行动:llm-math;
  7. 行动输入:"86 / 4";
  8. 观察:"21.5";
  9. 思考:"已获取所有必要信息,可给出最终答案";
  10. 最终答案:"当前北京的华氏温度为86°F,该温度的1/4是21.5°F"。

七、ReAct范式的优势与局限

核心优势

  1. 高可信度:通过工具调用获取真实反馈,减少大模型的虚构内容(hallucination);
  2. 强可解释性:每一步思考和行动都透明可见,便于调试和问题定位;
  3. 强适配性:支持动态调整步骤,可处理流程不固定的复杂任务;
  4. 易扩展:可灵活集成各类工具(搜索、计算、数据库、API等),适配不同场景;
  5. 模板化落地:通过标准化提示词模板,降低开发门槛,确保推理逻辑一致性。

潜在局限

  1. 效率依赖工具响应:每一步行动都需要工具返回结果,工具响应速度直接影响任务完成效率;
  2. 对提示词要求较高:模板格式需严格规范,否则可能导致模型推理混乱或工具调用失败;
  3. 不适配简单任务:对于单步即可完成的简单问题(如"1+1等于几"),ReAct的循环机制会增加不必要的开销。

八、总结:ReAct范式的核心价值

ReAct范式的本质是让AI具备"理性决策"的能力——它不再是简单的"输入-输出"黑盒,而是能够像人类一样规划步骤、调用资源、调整策略,最终解决复杂问题。而提示词模板作为ReAct范式的"操作手册",为模型的推理和行动提供了明确指引,是范式落地的关键支撑。

在LangChain等开发框架的支持下,ReAct范式已成为构建智能Agent的基础逻辑,广泛应用于客服、诊断、数据分析等场景。随着大模型技术的发展,ReAct与记忆机制、多Agent协作的结合,将进一步拓展AI的应用边界,让智能系统更灵活、更可信、更贴近人类的思考方式。

如果你的项目需要处理多步骤、强逻辑的复杂任务,不妨尝试基于ReAct范式+定制化提示词模板构建Agent——它会让AI从"能说会道"升级为"能思会做"。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容