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,它可能是你通往智能自动化

相关推荐
用户908324602732 小时前
大模型还在硬编码?Spring AI 实现“动态热切换”全攻略(上)
后端·openai
QING6183 小时前
移动端攻城狮 —— 浅谈 AI 编程对我的影响?
openai·ai编程·cursor
机器之心17 小时前
智元提出SOP,让VLA模型在真实世界实现可扩展的在线进化
人工智能·openai
Jagger_21 小时前
【提示词】主播风格概念化内容创作
aigc·openai·ai编程
我要充满正能量1 天前
Opencode CLI 安装成功,但是启动失败
openai·ai编程·claude
Shawn_Shawn1 天前
Agenic Ai架构
llm·aigc·openai
福大大架构师每日一题2 天前
LlamaFactory v0.9.4 正式发布:告别 2025,全面升级的 LLM 微调框架来了
openai
掉鱼的猫2 天前
灵动如画 —— 初识 Solon Graph Fluent API 编排
java·openai·workflow
天行无忌3 天前
2025 年大语言模型发展回顾:关键突破、意外转折与 2026 年展望
llm·openai
视觉&物联智能4 天前
【杂谈】-AGI的皇帝新衣:OpenAI商业模式能否抵御开源模型冲击?
人工智能·ai·开源·openai·agi·deepseek