【AI】AI学习笔记:什么是ReAct模式 ReAct模式详解:让AI学会思考与行动

LangGraph ReAct模式详解:让AI学会思考与行动

一、什么是ReAct模式?

概念定义

ReAct 是一种让大型语言模型(LLM)能够思考后行动 的模式,全称是 Reasoning + Acting(推理+行动)。它不是前端框架,而是AI代理的核心设计思想。

通俗理解

想象你让一个聪明的助手完成复杂任务:

  1. 思考:先分析任务,规划步骤
  2. 行动:执行具体操作(如搜索、计算)
  3. 观察:查看行动结果
  4. 再思考:基于结果决定下一步

这个循环过程就是ReAct模式。

二、ReAct模式的工作原理

核心循环

复制代码
思考(Reason) → 行动(Act) → 观察(Observe) → 再思考...

与传统AI的区别

传统AI ReAct模式AI
直接给出答案 先思考,再行动
单一回应 多步骤执行
无法使用工具 可调用各种工具
无自我修正 基于反馈调整策略

三、您的Python代码详解

代码含义解析

python 复制代码
from langgraph.prebuilt import create_react_agent

这行代码的意思是:

  • langgraph:一个构建AI工作流的库
  • prebuilt:预构建好的组件
  • create_react_agent:创建一个具有"思考-行动"能力的AI代理

完整示例代码解释

python 复制代码
# 导入必要的模块
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
from langchain.tools import Tool

# 1. 定义工具 - AI可以使用的"手和脚"
def search_tool(query: str) -> str:
    """搜索信息"""
    # 实际应用中这里会调用搜索引擎API
    if "weather" in query:
        return "Current temperature: 22°C, Sunny"
    return "Information found: " + query

def calculator_tool(expression: str) -> str:
    """执行计算"""
    try:
        result = eval(expression)  # 注意:实际生产环境应更安全地处理
        return f"计算结果: {result}"
    except:
        return "计算错误"

# 2. 封装工具
tools = [
    Tool(
        name="搜索",  # 工具名称
        func=search_tool,  # 工具函数
        description="用于搜索网络信息"  # 工具描述,AI据此决定何时使用
    ),
    Tool(
        name="计算器",
        func=calculator_tool,
        description="用于数学计算"
    )
]

# 3. 创建AI大脑
llm = ChatOpenAI(
    model="gpt-4",  # 使用GPT-4模型
    temperature=0  # 确定性高,创造性低
)

# 4. 创建ReAct代理 - 这才是关键!
agent = create_react_agent(llm, tools)

# 5. 使用代理
inputs = {
    "messages": [("user", "北京现在的温度是多少?如果是摄氏25度,转成华氏是多少?")]
}
result = agent.invoke(inputs)

print("AI的完整思考过程:")
for msg in result["messages"]:
    print(f"- {msg}")
    
print("\n最终答案:", result["messages"][-1].content)

四、ReAct代理的内部运作机制

AI的思考过程(模拟)

当您问:"北京现在的温度是多少?如果是摄氏25度,转成华氏是多少?"

AI会这样思考:

复制代码
第1步思考:
用户问了两个问题:1)北京温度 2)摄氏转华氏。我应该先搜索北京温度。

第1步行动:
调用"搜索"工具,输入"北京天气"

第1步观察:
得到结果:"Current temperature: 25°C, Sunny"

第2步思考:
现在我有北京温度是25°C。用户还要求将25°C转换为华氏。
华氏温度公式是:F = C × 9/5 + 32

第2步行动:
调用"计算器"工具,输入"25 * 9/5 + 32"

第2步观察:
得到结果:"计算结果: 77.0"

第3步思考:
现在我可以回答用户了。北京温度25°C,相当于77°F。

最终答案:
北京现在的温度是25°C,晴朗。25°C转换为华氏温度是77°F。

五、实际应用场景

场景1:客服机器人

python 复制代码
# ReAct代理可以:
# 1. 思考:用户的问题是什么类型?
# 2. 行动:查订单数据库
# 3. 观察:找到订单状态
# 4. 思考:是否需要其他信息?
# 5. 行动:查物流信息
# 6. 给出完整回答

场景2:数据分析助手

python 复制代码
# 当用户问:"上个月销售额最高的产品是什么?比前个月增长多少?"
# ReAct代理会:
# 1. 调用"查询数据库"工具,获取上个月数据
# 2. 调用"排序"工具,找最高销售额
# 3. 调用"计算百分比"工具,计算增长率
# 4. 整理回答

场景3:编程助手

python 复制代码
# 当用户问:"写一个Python函数计算斐波那契数列,并测试n=10"
# ReAct代理会:
# 1. 思考:需要写代码,然后测试
# 2. 行动:调用"代码生成"工具
# 3. 观察:得到生成的代码
# 4. 行动:调用"代码执行"工具进行测试
# 5. 观察:测试结果
# 6. 返回代码和测试结果

六、为什么需要ReAct模式?

解决传统AI的局限性

  1. 复杂任务分解:AI能自动将大问题拆解为小步骤
  2. 工具使用能力:AI不只是聊天,还能真正"做事"
  3. 自我修正:基于行动结果调整策略
  4. 可解释性:能看到AI的思考过程,不只是黑盒

与传统提示工程对比

python 复制代码
# 传统方式 - 一次性回答
prompt = "北京温度多少?25°C转华氏是多少?"
response = llm(prompt)  # 可能出错,无法使用工具

# ReAct方式 - 思考后行动
agent.run("北京温度多少?25°C转华氏是多少?")
# 会:思考 → 搜索 → 思考 → 计算 → 回答

七、LangGraph中的高级ReAct功能

记忆功能

python 复制代码
# ReAct代理可以记住对话历史
agent_with_memory = create_react_agent(
    llm, 
    tools,
    memory=True  # 记住之前的对话
)

# 当用户问:"刚才说的北京温度,和上海比哪个高?"
# AI能记住之前的北京温度,只需查询上海温度

多代理协作

python 复制代码
# 可以创建多个ReAct代理,各自专长
weather_agent = create_react_agent(llm, weather_tools)
finance_agent = create_react_agent(llm, finance_tools)
travel_agent = create_react_agent(llm, travel_tools)

# 协同解决复杂问题:"计划去北京的旅行,考虑天气和预算"

八、入门者的关键概念总结

必须理解的5个核心概念

  1. 代理(Agent):能够思考行动的AI程序
  2. 工具(Tools):代理可以使用的功能(搜索、计算、API调用等)
  3. 思考链(Chain of Thought):AI的推理过程
  4. 行动(Action):调用工具执行任务
  5. 观察(Observation):工具返回的结果

类比理解

复制代码
ReAct代理 ≈ 项目经理
思考 ≈ 制定计划
行动 ≈ 分配任务
工具 ≈ 团队成员
观察 ≈ 进度汇报
最终答案 ≈ 项目报告

九、自己动手:创建第一个ReAct代理

简易版实现

python 复制代码
import re

# 简易工具
def search_simple(query):
    knowledge_base = {
        "北京温度": "25°C",
        "上海温度": "28°C",
        "华氏公式": "F = C × 9/5 + 32"
    }
    return knowledge_base.get(query, "未找到信息")

def calculate_simple(expression):
    # 简易计算器,仅支持基本运算
    expression = expression.replace("×", "*").replace("÷", "/")
    try:
        return str(eval(expression))
    except:
        return "计算失败"

# 简易ReAct逻辑
def simple_react_agent(question):
    print(f"问题: {question}")
    
    if "温度" in question and "北京" in question:
        print("思考: 需要查询北京温度")
        temp = search_simple("北京温度")
        print(f"行动: 查询北京温度 → 结果: {temp}")
        
    if "华氏" in question and "25" in question:
        print("思考: 需要将25°C转换为华氏")
        result = calculate_simple("25 * 9/5 + 32")
        print(f"行动: 计算华氏温度 → 结果: {result}°F")
        
    return f"北京温度{temp},转换为华氏是{result}°F"

# 使用
answer = simple_react_agent("北京温度多少?25°C转华氏是多少?")
print(f"回答: {answer}")

十、学习路径建议

入门者路线图

  1. 第一周:理解ReAct基本概念,运行示例代码
  2. 第二周:学习创建自定义工具
  3. 第三周:探索不同LLM模型与ReAct的结合
  4. 第四周:构建实际应用项目

常见误区提醒

  • ❌ ReAct不是React前端框架
  • ❌ 不是所有AI代理都需要ReAct模式
  • ❌ ReAct不是魔法,需要合理设计工具
  • ✅ ReAct让AI更可靠、可解释
  • ✅ 适合多步骤、需要工具的任务

总结

ReAct模式 是让AI从"聊天机器人"升级为"智能助手"的关键技术。通过思考→行动→观察 的循环,AI能够像人类一样规划任务、使用工具、解决问题。您的代码中的create_react_agent就是创建这样一个智能代理的快捷方式。

学习ReAct不仅是学习一个技术,更是理解未来AI如何真正帮助我们完成工作的思维方式。从简单的工具调用开始,逐步构建能够处理复杂任务的智能系统,这正是AI技术最有价值的方向之一。

相关推荐
Jinkxs2 小时前
AI - 测试工程师会被 AI 取代吗?我用 AI 测试工具干了 3 个月,结论很意外
人工智能·测试工具
熊猫钓鱼>_>2 小时前
【开源鸿蒙跨平台开发先锋训练营】[Day 3] React Native for OpenHarmony 实战:网络请求集成与高健壮性列表构建
大数据·人工智能·react native·华为·开源·harmonyos·智能体
Coovally AI模型快速验证2 小时前
计算机视觉的 2026:从“堆算力”竞赛,到“省算力”智慧
人工智能·深度学习·算法·yolo·计算机视觉·无人机
Kratzdisteln2 小时前
【1902】自适应学习系统 - 完整技术方案
java·python·学习
王潇洒呀2 小时前
AI+测试工具《Testim》使用说明
人工智能·测试工具
软件测试君2 小时前
2025年10款王炸AI测试工具,你用过几款?
自动化测试·软件测试·人工智能·深度学习·测试工具·单元测试·ai测试工具
因_果_律2 小时前
AWS 自研 AI 芯片 Trainium3 全面解析
人工智能·云计算·aws
weixin_397578022 小时前
LLM应用开发九: 开源智能体平台
人工智能
詩不诉卿2 小时前
Zephyr学习之点亮LED
学习