ReAct的介绍和使用

在大语言模型的世界里,仅仅依靠"单轮输出"已经不足以应对复杂的任务。为了解决这一问题,研究者们提出了一种新范式 ------ ReAct(Reasoning + Acting) ,它让模型可以"边想边干",结合推理能力和工具调用,从而完成更复杂、更真实的任务。

🧠 ReAct 是什么?

传统的语言模型只擅长单步推理,但当任务需要中间步骤,例如调用外部 API、搜索信息或查询数据库时,模型就显得力不从心。

ReAct 的提出者认为,模型需要像人类一样,一边"思考"接下来该做什么(Reasoning),一边"动手"去获取信息或操作工具(Acting),然后根据观察结果继续下一步,直到完成任务。

这就形成了一个循环:

复制代码
思考 → 行动 → 观察 → 再次思考 → ...... → 输出答案

🛠 ReAct 的实际用途

ReAct 非常适合 Agent 架构,比如:

  • 智能问答(结合搜索、数据库查询)
  • 自动数据分析(分析 + 可视化)
  • 任务规划(如旅行路线、学习计划)
  • 多工具交互(例如调用计算器 + 天气 API)

🔍 一个简单的 ReAct 示例(基于类 LangChain 架构)

下面是一个简化的 ReAct 示例代码。这个例子中,模型的任务是计算一个数学表达式,但它不会直接计算,而是"思考"该使用计算器工具,然后调用该工具执行操作。

python 复制代码
from langchain.agents import Tool, initialize_agent
from langchain.agents.agent_types import AgentType
from langchain.llms import OpenAI

# 一个简单的计算器工具
def simple_calculator(input: str) -> str:
    try:
        result = eval(input)
        return str(result)
    except:
        return "Invalid expression"

# 注册工具
tools = [
    Tool(
        name="Calculator",
        func=simple_calculator,
        description="用于数学计算,如 '2 + 2 * (3 + 4)'"
    )
]

# 使用 OpenAI + ReAct agent 初始化智能体
llm = OpenAI(temperature=0)
agent = initialize_agent(
    tools, 
    llm, 
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, 
    verbose=True
)

# 测试一下
response = agent.run("请帮我计算 3 * (4 + 5)")
print(response)

🧾 输出示例:

yaml 复制代码
> Entering new AgentExecutor chain...
Thought: 我需要使用计算器来求值 3 * (4 + 5)
Action: Calculator
Action Input: 3 * (4 + 5)
Observation: 27
Thought: 我已经得到了结果
Final Answer: 27

🧩 关键能力:Tool 使用 + 思考链(Chain-of-Thought)

ReAct 不只是工具调用,它背后的强大之处在于:

  • CoT(思考链) :模型会像写作文一样输出中间思考过程。
  • Action-Observation Loop:每一次调用工具后的观察结果都会影响下一步推理。
  • Memory(可选) :一些实现会带上短期记忆能力,让 Agent 更加智能。

📜 相关论文

  • 论文名:ReAct: Synergizing Reasoning and Acting in Language Models
  • 链接arxiv.org/abs/2210.03...
  • 作者:Shinn et al.(Google Research & Princeton)

🧠 总结

ReAct 是连接语言模型与真实世界的桥梁,赋予大模型"像人一样动脑筋+动手"的能力。如果你正在构建 Agent、Chatbot 或工具协同系统,不妨试试 ReAct,它可能是你通往智能自动化

相关推荐
王小酱2 天前
第 18 课:前端框架 — React / Next.js / Vue / Nuxt
openai·ai编程
王小酱2 天前
第 12 课:调用链追踪 — 从 Command 到执行
openai·ai编程·airbnb
王小酱2 天前
第 13 课:TDD 全流程 — RED-GREEN-IMPROVE
openai·ai编程·aiops
王小酱2 天前
第 14 课:验证循环 — 从代码到可提交
openai·ai编程·aiops
王小酱2 天前
第 10 课:Hooks — 事件驱动自动化
openai·ai编程·aiops
王小酱2 天前
第 16 课:多代理编排 — 并行、视角与隔离
openai·ai编程
王小酱2 天前
第 15 课:会话管理 — 上下文、模型与持久化
openai·ai编程·aiops
王小酱2 天前
第 11 课:Scripts — Hook 的底层实现
openai·ai编程·aiops
王小酱2 天前
第 17 课:后端语言 — Python / Go / Rust / Java
openai·ai编程
王小酱2 天前
第 4 课:Rules(上)— 通用规则体系
openai·ai编程·aiops