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

相关推荐
磊叔的技术博客1 天前
LLM 系列:LLM 的发展历程
llm·openai·deepseek
二十一_1 天前
🤖✨ ChatGPT API深度体验:让AI看懂图片、听懂语音、调用你的代码
前端·chatgpt·openai
xiaoyan20151 天前
flutter3.32+deepseek+dio+markdown搭建windows版流式输出AI模板
flutter·openai·deepseek
产品试金石1 天前
支持Gemini/Claude/GPT/Grok,2个多人共享AI程序推荐
openai·gemini
掘我的金1 天前
MCP 学习系列①:理解上下文与协议的动机(MCP 之前)
llm·openai
福宝plus1 天前
只需1美元薅ChatGPT Team手把手的教程,教你如何解决“你不符合参与此促销活动折扣资格”或“您的银行卡被拒绝了”附上ChatGPT Team怎么取消订阅
chatgpt·openai·claude
杂雾无尘2 天前
用 Trae 打造全栈项目魔法师 - 让项目初始化不再是噩梦
aigc·openai·ai编程
惜鸟2 天前
# LLM统一网关:LiteLLM 详细介绍(实践篇)
后端·openai
用户84913717547162 天前
🚀5 分钟实现 Markdown 智能摘要生成器:LangChain + OpenAI 实战教程
langchain·openai
哪吒编程3 天前
重磅更新! 基于Gemini 2.5 打造的AI智能体PlantUML-X上线!
openai·gemini