Langchain传统方式ReAct调用工具

引言

本文将介绍如何使用LangChain的传统方式ReAct模式调用工具,通过一个实际的天气查询示例,展示如何结合Tavily搜索工具和DeepSeek模型构建智能助手。

完整代码实现

import os
from dotenv import load_dotenv
from langchain_community.tools import TavilySearchResults
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent

# 加载env环境变量
load_dotenv()

# tavily工具的API_KEY
os.environ['TAVILY_API_KEY'] = os.getenv('TAVILY_API_KEY')

# 创建搜索工具
search_tool = TavilySearchResults(
    max_results=3,
    name="web_search",
    description="用于检索互联网上的实时信息,如天气、新闻等"
)

tools = [search_tool]

# 获取对话模型
chat_model = ChatOpenAI(
    model="deepseek-chat",
    base_url=os.getenv('OPENAI_BASE_URL'),
    api_key=os.getenv('OPENAI_API_KEY'),
    temperature=0.7
)

# 创建 React Agent
system_prompt = """你是一个智能助手,可以使用搜索工具获取实时信息。
当用户询问天气、新闻等需要实时数据的问题时,请使用搜索工具。
回答时请基于搜索结果,用友好的方式总结信息。"""

agent_executor = create_react_agent(
    model=chat_model,
    tools=tools,
    prompt=system_prompt
)

# 执行查询
result = agent_executor.invoke("今天长沙的天气怎么样")
print("最终回答:")
print(result["messages"][-1].content)

代码详解

1. 导入必要的库

import os
from dotenv import load_dotenv
from langchain_community.tools import TavilySearchResults
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
  • os: 用于操作系统环境变量
  • load_dotenv: 从.env文件加载环境变量
  • TavilySearchResults: LangChain社区提供的搜索工具
  • ChatOpenAI: OpenAI格式的聊天模型接口
  • create_react_agent: LangGraph预构建的ReAct代理创建函数

2. 环境变量配置

# 加载env环境变量
load_dotenv()

# tavily工具的API_KEY
os.environ['TAVILY_API_KEY'] = os.getenv('TAVILY_API_KEY')

在这里插入图片描述

  • 使用load_dotenv()加载.env文件中的环境变量
  • 从环境变量获取Tavily API密钥并设置到系统环境变量中
  • 工具官网: https://www.tavily.com/

3. 创建搜索工具

search_tool = TavilySearchResults(
    max_results=3,
    name="web_search",
    description="用于检索互联网上的实时信息,如天气、新闻等"
)

tools = [search_tool]
  • TavilySearchResults: 创建搜索工具实例
    • max_results=3: 最多返回3条搜索结果
    • name="web_search": 工具名称
    • description: 工具功能描述,帮助Agent理解何时使用该工具
  • 将工具放入列表中,支持添加多个工具

4. 初始化对话模型

chat_model = ChatOpenAI(
    model="deepseek-chat",
    base_url=os.getenv('OPENAI_BASE_URL'),
    api_key=os.getenv('OPENAI_API_KEY'),
    temperature=0.7
)
  • model="deepseek-chat": 使用DeepSeek聊天模型
  • base_url: DeepSeek API接口地址
  • api_key: DeepSeek API密钥
  • temperature=0.7: 控制输出随机性,值越大回答越多样

5. 创建ReAct Agent

system_prompt = """你是一个智能助手,可以使用搜索工具获取实时信息。
当用户询问天气、新闻等需要实时数据的问题时,请使用搜索工具。
回答时请基于搜索结果,用友好的方式总结信息。"""

agent_executor = create_react_agent(
    model=chat_model,
    tools=tools,
    prompt=system_prompt
)
  • system_prompt: 系统提示词,定义Agent的行为准则
  • create_react_agent: 创建ReAct模式的Agent执行器
    • model: 使用的语言模型
    • tools: 可用的工具列表
    • prompt: 系统提示词

6. 执行查询并输出结果

# 执行查询
result = agent_executor.invoke("今天长沙的天气怎么样")
print("最终回答:")
print(result["messages"][-1].content)
  • agent_executor.invoke(): 调用Agent执行查询
  • 从返回结果中提取最后一条消息的内容

运行输出

E:\pythonWorkSpace\LangChain\(17)Langchain传统方式ReAct调用工具.py:15: LangChainDeprecationWarning: The class `TavilySearchResults` was deprecated in LangChain 0.3.25 and will be removed in 1.0. An updated version of the class exists in the `langchain-tavily package and should be used instead. To use it run `pip install -U `langchain-tavily` and import as `from `langchain_tavily import TavilySearch``.
  search_tool = TavilySearchResults(
E:\pythonWorkSpace\LangChain\(17)Langchain传统方式ReAct调用工具.py:36: LangGraphDeprecatedSinceV10: create_react_agent has been moved to `langchain.agents`. Please update your import to `from langchain.agents import create_agent`. Deprecated in LangGraph V1.0 to be removed in V2.0.
  agent_executor = create_react_agent(
开始查询...
最终回答:
根据搜索结果,我来为您总结长沙今天的天气情况:

## 长沙今天(3月4日)天气情况:

**当前天气:**
- 天气状况:雾
- 当前温度:10- 体感温度:7- 风向:西北风
- 风力:2- 湿度:79%
- 空气质量:良(AQI 70**今日预报:**
- 天气:多云
- 温度:6~16- 风向:北风
- 风力:微风

**生活指数建议:**
- 穿衣指数:较冷,建议着厚外套加毛衣等服装
- 运动指数:较适宜,天气凉,在户外运动请注意增减衣物
- 洗车指数:较不宜,路面有积水,车子易被溅上泥水
- 紫外线指数:弱,辐射较弱
- 过敏指数:极不易发,无需担心过敏问题

**温馨提示:**
今天长沙天气以多云为主,气温在6-16℃之间,体感较冷。早上有雾,能见度可能较低,出行请注意安全。空气质量良好,适合户外活动,但风力较大,外出时请注意防风保暖。

明天(35日)预计也是多云天气,温度6-16℃,与今天相似。

代码执行流程分析

  1. 环境初始化: 加载.env文件中的API密钥
  2. 工具创建: 实例化Tavily搜索工具
  3. 模型初始化: 配置DeepSeek聊天模型
  4. Agent创建: 使用create_react_agent创建ReAct模式的Agent
  5. 查询执行: Agent接收用户问题,判断需要使用搜索工具
  6. 工具调用: 自动调用Tavily搜索获取天气信息
  7. 结果总结: 将搜索结果返回给模型,生成友好的回答
  8. 输出结果: 打印最终格式化后的天气信息

注意事项

  1. API密钥配置: 需要在项目根目录创建.env文件,包含以下内容:

    OPENAI_BASE_URL=https://api.deepseek.com
    OPENAI_API_KEY=你的DeepSeek密钥
    TAVILY_API_KEY=你的Tavily密钥
    
  2. 依赖安装:

    pip install langchain-community langchain-openai langgraph tavily-python python-dotenv
    
  3. 版本警告说明:

    • TavilySearchResults将在LangChain 1.0中被移除,建议迁移到langchain-tavily
    • create_react_agent已迁移到langchain.agents,建议使用from langchain.agents import create_agent
Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐