拓冰建站拓冰建站
首页 / 资讯中心 / 正文

ReAct 模式和LangChain 的 ReAct 模式

目录一、ReAct 是什么三个核心阶段一个具体例子ReAct 为什么比直接回答强生产环境必做的安全措施二、LangChain 中的 ReAct 模式模式一LangChain ReAct 原生 ToolCall新版主流模式二LangChain ReAct 纯 Prompt 解析经典版三、两种模式的核心对比四、什么情况下纯 Prompt ReAct 反而更好五、一句话总结下面我用文字完整拆解 ReAct 模式本身以及 LangChain 中的两种 ReAct 实现。一、ReAct 是什么ReAct Reason Act2022 年由 Princeton 和 Google 论文提出。核心思想极其简单但极其有效让大模型交替执行推理和行动而不是一次性给出答案。三个核心阶段阶段英文模型在做什么Thought推理分析当前状态判断缺什么信息规划下一步Action行动执行具体动作——调用工具、检索知识、查询接口Observation观察接收外部返回结果加入上下文这三步循环往复直到模型判断信息够了输出Final Answer。一个具体例子用户问茅台和五粮液 2024 年净利润谁更高Thought: 我需要查询茅台和五粮液2024年的净利润数据。 Action: query_financial_report(stock茅台, year2024, metricnet_profit) Observation: 862亿 Thought: 茅台拿到了现在查五粮液。 Action: query_financial_report(stock五粮液, year2024, metricnet_profit) Observation: 318亿 Thought: 862 318茅台更高。信息完整可以回答了。 Final Answer: 茅台2024年净利润862亿五粮液318亿茅台更高差额约544亿。ReAct 为什么比直接回答强普通 LLM 遇到上面的问题会怎样它要么直接编一个数字幻觉要么说我无法获取实时数据。而 ReAct 的关键是它不会在信息不足时硬答而是先去获取信息再基于真实数据回答。这就是 ReAct 的本质——用行动弥补模型知识的不足用推理保证行动方向的正确性。生产环境必做的安全措施必须设置最大迭代步数max_iterations通常 5~10 步。ReAct 的循环结构天然有死循环风险——模型可能在 Thought → Action → Observation 之间反复绕圈。超限后强制终止并返回当前最优结果。这不是可选项是强制安全措施。二、LangChain 中的 ReAct 模式ReAct 是一种思想/范式LangChain 是它的工程实现之一。但关键认知是LangChain 实现了两种不同的 ReAct 模式区别在于工具调用意图从哪里来。模式一LangChain ReAct 原生 ToolCall新版主流from langgraph.prebuilt import create_react_agent # 底层调用 llm.bind_tools(tools) # 模型通过原生 ToolCall 协议返回结构化 tool_calls agent create_react_agent(llm, tools) result agent.invoke({messages: [{role: user, content: 茅台PE是多少}]})工作原理LangGraph 把工具描述通过tools参数传给模型 API模型推理后返回tool_callsJSON原生协议能力LangGraph 自动解析、执行工具、把结果塞回 messages再次请求模型模型基于工具返回结果继续推理或输出最终答案特点结构化输出可靠、框架自动处理循环、但依赖模型的 ToolCall 质量。模式二LangChain ReAct 纯 Prompt 解析经典版from langchain.agents import AgentExecutor, create_react_agent from langchain import hub # 不传 tools 参数给 API # 工具描述全部渲染进 System Prompt prompt hub.pull(hwchase17/react) agent create_react_agent(llm, tools, prompt) executor AgentExecutor(agentagent, toolstools) result executor.invoke({input: 茅台PE是多少})工作原理LangChain 把所有工具描述拼进 System Prompt告诉模型你有这些工具可用模型输出纯文本遵循固定格式Thought: 我需要查询茅台的PE。 Action: query_stock_price Action Input: {stock_code: 600519}LangChain 用正则表达式从文本中提取Action和Action Input执行对应工具把结果拼成Observation: xxx塞回 Prompt再次请求模型模型基于 Observation 继续 Thought → Action → ...特点完全不依赖模型的 ToolCall 协议纯靠 Prompt 工程 文本解析。适合不支持 ToolCall 的模型。三、两种模式的核心对比维度原生 ToolCall 模式纯 Prompt 解析模式工具意图来源模型 API 返回tool_callsJSON模型输出纯文本框架正则提取是否传 tools 参数✅ 传给 API❌ 不传工具描述塞进 Prompt输出格式结构化 JSON固定格式的纯文本解析方式JSON parse正则表达式 / 字符串匹配解析可靠性高结构化输出中模型可能格式不稳定模型要求模型必须支持 ToolCall任何能遵循指令的模型都行Token 开销较低工具描述不占 Prompt较高工具描述全部在 Prompt 里调试难度中有结构化日志高纯文本出错不好定位适用场景GPT-4o / Claude / M2.5 等主流模型开源小模型、不支持 ToolCall 的模型四、什么情况下纯 Prompt ReAct 反而更好虽然原生 ToolCall 是主流但以下场景纯 Prompt ReAct 有优势模型不支持 ToolCall很多开源小模型没有做过工具调用对齐训练tools参数对它们无效只能走 Prompt 方案。复杂推理链ReAct 的 Thought 过程是显式的推理链某些场景下先想清楚再行动比直接输出 tool_calls 效果更好。特别是参数需要多步推理才能确定的场景。需要完全自定义流程纯 Prompt 模式下你可以完全控制 Prompt 模板、解析逻辑、错误处理不受框架 ToolCall 封装的约束。跨模型兼容同一套 Prompt ReAct 模板可以跑在不同模型上而 ToolCall 的格式和行为在不同厂商 API 之间有细微差异。五、一句话总结ReAct 是推理 行动交替循环的思想范式LangChain 是它的工程实现。LangChain 的 ReAct 有两条路一条走模型原生 ToolCall 协议结构化、主流一条走纯 Prompt 文本解析灵活、兼容性强。选哪条取决于你的模型能力和业务需求——先用 ToolCall不行再切 Prompt 解析。Boss如果你还想深入某个具体环节比如 ReAct Prompt 模板怎么写、LangGraph 的状态机怎么设计、或者怎么在 MiniMax-M2.5 上跑 ReAct随时说。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门