跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

AI 大模型旅游规划智能体 React Agent 实战

基于 LangChain 的 ReAct 框架构建旅游规划智能体,通过推理、行动、观察的循环流程解决复杂任务的多步拆解问题。文章详解 create_react_agent 方法,包括工具定义、Prompt 模板配置及完整代码示例,对比不同智能体创建方法的选型策略,并展示运行日志与结果解读,帮助开发者掌握边想边做的智能体开发技巧。

数字游民发布于 2026/2/8更新于 2026/6/24.9K 浏览
AI 大模型旅游规划智能体 React Agent 实战

AI 大模型旅游规划智能体 React Agent 实战

一、为什么需要 ReAct 智能体?复杂任务的'推理刚需'

之前学的 initialize_agent 适合简单任务,create_tool_calling_agent 擅长结构化参数传递,但面对需要多步推理的复杂任务(比如旅游规划),它们就显得力不从心:

  • 无法清晰拆解任务(比如'查天气→荐活动→查股价'需要分步执行)
  • 遇到错误不会自我修正(比如工具调用失败后不知道重试)
  • 思考过程不透明(调试时看不到智能体'为什么这么做')

而基于 ReAct 框架的 create_react_agent,完美解决了这些问题——它让智能体像人一样'边想边做',通过'推理→行动→观察'的循环,一步步拆解并完成复杂任务,特别适合旅游规划这类需要动态决策的场景。

二、ReAct 框架核心:推理 + 行动 + 观察

在这里插入图片描述

ReAct(Reasoning + Acting)是一种让智能体具备'思考能力'的设计模式,核心是通过循环迭代完成任务,每一轮都包含三个步骤:

2.1 三步循环流程

步骤核心动作示例(旅游规划场景)
推理(Reason)分析当前状态,决定下一步'该做什么'(调用工具/直接回答)'要推荐活动,得先查北京天气,所以调用 get_weather 工具'
行动(Act)执行决策(调用指定工具,传入正确参数)调用 get_weather,输入参数'北京'
观察(Observe)获取行动结果,更新状态,判断是否需要进入下一轮循环得到天气'晴,25℃',接下来需要调用推荐活动工具

2.2 标准格式示例

ReAct 智能体的思考和行动有固定格式,一眼就能看懂它的'心路历程':

[Thought] 我需要先查北京的天气,才能推荐活动,还要查腾讯股价 [Action] get_weather [Action Input] 北京 [Observation] 晴,25℃ [Thought] 天气是晴,适合推荐户外活动,现在调用推荐工具 [Action] recommend_activity [Action Input] 晴,25℃ [Observation] 推荐户外活动:公园骑⾏。 [Thought] 还需要查腾讯股价,用 web_search 工具 [Action] web_search [Action Input] 腾讯最新股价 [Observation] 来源:XX 财经... 腾讯股价 412 港元... [Thought] 所有任务都完成了,可以整理结果 [Final Answer] 北京天气晴 25℃,推荐公园骑⾏;腾讯最新股价 412 港元 

三、create_react_agent 方法详解

create_react_agent 是 LangChain 专门用于创建 ReAct 框架智能体的方法,专为复杂推理任务设计。

3.1 基础语法

from langchain.agents import create_react_agent
agent = create_react_agent(
    llm: BaseLanguageModel, # 支持 ReAct 格式的大模型
    tools: Sequence[BaseTool], # 工具列表(需详细文档字符串)
    prompt: ChatPromptTemplate # 包含 ReAct 特殊格式的提示模板
)-> Runnable # 返回可直接调用的智能体

3.2 三大必填参数

三个参数缺一不可,重点关注细节要求:

  • llm:必须支持 ReAct 推理格式,比如 qwen-plus、gpt-4、llama-3 等,旧版模型可能不兼容
  • tools:用 @tool 装饰的工具,每个工具的文档字符串要清晰(智能体靠文档判断'什么时候用')
  • prompt:核心中的核心,必须包含 ReAct 的固定格式(Thought/Action/Action Input/Observation)

3.3 关键:ReAct Prompt 模板

3.3.1 快速使用官方模板

LangChain Hub 提供了现成的 ReAct 模板,直接拉取即可使用:

from langchain import hub # 拉取官方 ReAct 模板(推荐,无需自己写格式)
prompt = hub.pull("hwchase17/react")
3.3.2 模板核心内容解析

官方模板的核心逻辑如下(理解即可,无需修改):

template =""" Answer the following questions using the following tools: {tools} # 注入工具列表 Use the following format: Question: the input question you must answer # 用户输入问题 Thought: you should always think about what to do # 每次都要写的思考过程 Action: the action to take, should be one of [{tool_names}] # 要调用的工具名(必须在工具列表中) Action Input: the input to the action # 工具的输入参数 Observation: the result of the action # 工具返回的结果 ...(可以重复 Thought/Action/Action Input/Observation 循环) Thought: I now know the final answer # 完成所有步骤后,表明可以输出最终结果 Final Answer: the final answer to the original input question # 最终回复用户的内容 """

四、智能体创建方法对比选型

面对三个常用智能体创建方法,该怎么选?记住'场景匹配'原则:

场景特征推荐方法原因说明
需要多步推理(如旅游规划)create_react_agent显式思考链,支持分步拆解任务
严格结构化参数传递create_tool_calling_agent直接输出 JSON 参数,解析错误率极低
快速开发简单任务initialize_agent开箱即用,无需复杂配置
错误后需要自我修正create_react_agent可重新推理,调整行动方案
需调试(看思考过程)create_react_agent思考链透明,易定位问题
API 集成(如支付、天气)create_tool_calling_agent参数格式严格,适配 API 需求

五、实战:打造旅游规划智能体

在这里插入图片描述

本次实战开发一个能完成'查城市天气→根据天气推荐活动→查实时股价'的旅游规划智能体,全程体验 ReAct 的'推理 + 行动'流程。

5.1 环境准备

确保安装所需依赖,拉取官方 ReAct 模板需要 LangChain Hub 权限(注册即可):

pip install -U langchain langchain-openai langchain-community langchain-hub 

5.2 步骤 1:定义工具(Tool)

创建 3 个核心工具,文档字符串要详细——ReAct 智能体全靠文档判断工具用途:

import os
from langchain.tools import tool
from langchain_community.utilities import SearchApiAPIWrapper

# ---------------------- 工具 1:获取城市天气 ----------------------
@tool
def get_weather(city: str) -> str:
    """ 获取指定城市的天气信息,用于旅游活动推荐。
    参数:city - 城市名称(如北京、上海、广州)
    """
    # 模拟天气数据(实际场景可替换为真实天气 API)
    weather_data = {
        "北京": "晴,25℃",
        "上海": "雨,20℃",
        "广州": "多云,28℃",
        "深圳": "晴,26℃"
    }
    return weather_data.get(city, f"暂不支持查询{city}的天气")

# ---------------------- 工具 2:根据天气推荐活动 ----------------------
@tool
def recommend_activity(weather: str) -> str:
    """ 根据天气信息推荐适合的旅游活动,必须先调用 get_weather 获取天气。
    参数:weather - get_weather 工具返回的天气字符串(如'晴,25℃')
    """
    if "雨" in weather:
        return "推荐室内活动:博物馆参观、文创店打卡、特色美食探店"
    elif "晴" in weather:
        return "推荐户外活动:公园骑⾏、长城徒步、城市天际线拍照"
    elif "多云" in weather:
        return "推荐通用活动:老街漫游、主题乐园游玩、非遗体验"
    else:
        return "推荐灵活活动:根据现场天气调整行程"

# ---------------------- 工具 3:网页搜索(查实时股价) ----------------------
# 配置 SearchApi 密钥(需注册:https://www.searchapi.io/)
os.environ["SEARCHAPI_API_KEY"] = "xxx"

@tool("web_search")
def web_search(query: str) -> str:
    """ 获取实时信息、最新事件(如股价、新闻)时使用,输入为搜索关键词。
    """
    try:
        search = SearchApiAPIWrapper()
        results = search.results(query) # 获取前 2 条搜索结果
        return "\n\n".join([f"来源:{res['title']}\n内容:{res['snippet']}" for res in results['organic_results'][:2]])
    except Exception as e:
        return f"搜索失败:{str(e)}"

# 整理工具列表
tools = [get_weather, recommend_activity, web_search]

5.3 步骤 2:初始化大模型

使用支持 ReAct 的大模型(这里用通义千问 qwen-plus):

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model_name="qwen-plus",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    api_key="sk-xxx", # 替换为自己的密钥
    temperature=0.3 # 降低随机性,提升推理稳定性
)

5.4 步骤 3:获取 ReAct Prompt 模板

直接拉取官方模板,避免自己写格式出错:

from langchain import hub # 拉取官方 ReAct 提示模板(核心:包含 Thought/Action 等固定格式)
prompt = hub.pull("hwchase17/react")

5.5 步骤 4:创建 ReAct 智能体和执行器

用 create_react_agent 创建智能体,再用 AgentExecutor 包装(负责运行循环):

from langchain.agents import AgentExecutor

# 创建 ReAct 智能体
agent = create_react_agent(
    llm=llm,
    tools=tools,
    prompt=prompt
)

# 创建智能体执行器(控制运行参数)
agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    verbose=True, # 显示思考和行动过程(调试必备)
    max_iterations=5, # 最大循环次数(防止无限循环)
    handle_parsing_errors="请检查输入格式,确保问题清晰", # 错误处理
    return_intermediate_steps=True # 返回中间推理步骤
)

5.6 步骤 5:测试旅游规划任务

让智能体完成'北京 3 天旅游规划:查天气荐活动 + 查腾讯股价'的复杂任务:

# 发起用户查询
response = agent_executor.invoke({"input":"我要去北京玩 3 天,根据天气推荐活动,顺便查下腾讯最新股价"})

# 打印最终结果
print("\n" + "="*80)
print("旅游规划智能体最终回复:")
print(response["output"])

六、运行结果与解读

6.1 完整运行日志(关键部分)

> Entering new AgentExecutor chain...
Thought: I need to answer the user's question which has two parts: recommend activities based on Beijing's weather and check Tencent's latest stock price. First, I should get Beijing's weather using the get_weather tool.
Action: get_weather
Action Input: 北京
Observation: 晴,25℃
Thought: Now I have Beijing's weather, which is sunny and 25℃. Next, I should use the recommend_activity tool to suggest suitable activities.
Action: recommend_activity
Action Input: 晴,25℃
Observation: 推荐户外活动:公园骑⾏、长城徒步、城市天际线拍照
Thought: Now I need to check Tencent's latest stock price, which requires real-time information, so I should use the web_search tool.
Action: web_search
Action Input: 腾讯最新股价
Observation: 来源:腾讯控股股价行情 - 东方财富网 内容:腾讯控股(00700.HK)最新价 412.00 港元,涨跌幅 +1.52%...
Thought: I now know the final answer
Final Answer: 北京 3 天旅游规划建议:
1. 天气情况:晴,25℃
2. 推荐活动:公园骑⾏、长城徒步、城市天际线拍照
3. 腾讯最新股价:腾讯控股(00700.HK)最新价 412.00 港元,涨跌幅 +1.52%

6.2 结果解读

在这里插入图片描述

  • 推理清晰:智能体按'查天气→荐活动→查股价'的顺序拆解任务,每一步都有明确的思考过程
  • 循环执行:通过 3 轮'Thought→Action→Observation'循环完成任务,符合 ReAct 框架
  • 透明可调试:verbose 模式下能看到完整思考链,出问题时能快速定位是哪一步出错

七、实战注意事项

  1. 大模型必须支持 ReAct:如果用不支持的模型(如 gpt-3.5-turbo-0301),会出现'不会循环推理'的问题,优先选 qwen-plus、gpt-4、llama-3-70b 等
  2. 工具文档要'精准':智能体靠文档判断工具用途,比如 recommend_activity 的文档写'必须先调用 get_weather',智能体就会按顺序调用
  3. 控制循环次数:设置 max_iterations(建议 3-5 次),防止智能体陷入无限循环
  4. 官方模板优先用:自己写 ReAct 格式容易漏项,优先用 hub.pull("hwchase17/react")
  5. 调试靠 verbose:遇到工具调用错误时,打开 verbose=True,看智能体的'Thought'就能知道它'为什么这么做'

八、总结

create_react_agent 的核心价值是让智能体具备'边想边做'的推理能力,通过 ReAct 框架的'推理→行动→观察'循环,完美解决复杂任务的分步拆解问题——这正是旅游规划、复杂问答等场景所需要的。

本次实战我们掌握了:

  • ReAct 框架的三大核心步骤(推理、行动、观察)
  • create_react_agent 的参数配置(重点是 ReAct Prompt 模板)
  • 旅游规划智能体的完整开发流程
  • 三种智能体创建方法的选型技巧

目录

  1. AI 大模型旅游规划智能体 React Agent 实战
  2. 一、为什么需要 ReAct 智能体?复杂任务的“推理刚需”
  3. 二、ReAct 框架核心:推理 + 行动 + 观察
  4. 2.1 三步循环流程
  5. 2.2 标准格式示例
  6. 三、createreactagent 方法详解
  7. 3.1 基础语法
  8. 3.2 三大必填参数
  9. 3.3 关键:ReAct Prompt 模板
  10. 3.3.1 快速使用官方模板
  11. 3.3.2 模板核心内容解析
  12. 四、智能体创建方法对比选型
  13. 五、实战:打造旅游规划智能体
  14. 5.1 环境准备
  15. 5.2 步骤 1:定义工具(Tool)
  16. ---------------------- 工具 1:获取城市天气 ----------------------
  17. ---------------------- 工具 2:根据天气推荐活动 ----------------------
  18. ---------------------- 工具 3:网页搜索(查实时股价) ----------------------
  19. 配置 SearchApi 密钥(需注册:https://www.searchapi.io/)
  20. 整理工具列表
  21. 5.3 步骤 2:初始化大模型
  22. 5.4 步骤 3:获取 ReAct Prompt 模板
  23. 5.5 步骤 4:创建 ReAct 智能体和执行器
  24. 创建 ReAct 智能体
  25. 创建智能体执行器(控制运行参数)
  26. 5.6 步骤 5:测试旅游规划任务
  27. 发起用户查询
  28. 打印最终结果
  29. 六、运行结果与解读
  30. 6.1 完整运行日志(关键部分)
  31. 6.2 结果解读
  32. 七、实战注意事项
  33. 八、总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • CISP 全类别证书详细介绍
  • 无人机公司如何用“第三种语言”拆掉部门墙实现协同
  • Python 执行命令并保存输出到文件
  • Visual Studio 关闭 Copilot AI 代码提示的方法
  • 从登录页实战到 XSS 防御:Web 前端安全入门全攻略
  • Spring IoC 控制反转与依赖注入详解
  • ComfyUI AI 工作流抠图构建实践
  • Python pip 安装路径查看与修改指南
  • Spring Boot RESTful 接口开发实战指南
  • 22 个核心概念,彻底搞懂 AIGC 基础
  • LobeChat 支持 AR/VR 交互:三维空间对话界面构想
  • 大语言模型 LoRA 微调实战指南
  • C# 反射机制实战:动态加载 DLL 与运行时调用详解
  • Stable Diffusion IP 海报生成流程与 LoRA 训练指南
  • Ubuntu 22.04 源码编译安装 libwebkit2gtk-4.1-0
  • Moments 使用 Docker 本地部署与远程访问配置
  • 时空数据与大模型:基础模型的愿景、挑战与机遇及应用
  • 国内大模型公司面试经验与考点总结
  • C++ 多态核心解析:虚函数重写与动态绑定原理
  • C++ 泛型编程与模板详解:从原理到工程实践

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online