(LangChain实战16):使用LangChain的传统方式ReAct模式调用工具
·
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℃之间,体感较冷。早上有雾,能见度可能较低,出行请注意安全。空气质量良好,适合户外活动,但风力较大,外出时请注意防风保暖。
明天(3月5日)预计也是多云天气,温度6-16℃,与今天相似。
代码执行流程分析
- 环境初始化: 加载.env文件中的API密钥
- 工具创建: 实例化Tavily搜索工具
- 模型初始化: 配置DeepSeek聊天模型
- Agent创建: 使用
create_react_agent创建ReAct模式的Agent - 查询执行: Agent接收用户问题,判断需要使用搜索工具
- 工具调用: 自动调用Tavily搜索获取天气信息
- 结果总结: 将搜索结果返回给模型,生成友好的回答
- 输出结果: 打印最终格式化后的天气信息
注意事项
-
API密钥配置: 需要在项目根目录创建
.env文件,包含以下内容:OPENAI_BASE_URL=https://api.deepseek.com OPENAI_API_KEY=你的DeepSeek密钥 TAVILY_API_KEY=你的Tavily密钥 -
依赖安装:
pip install langchain-community langchain-openai langgraph tavily-python python-dotenv -
版本警告说明:
TavilySearchResults将在LangChain 1.0中被移除,建议迁移到langchain-tavily包create_react_agent已迁移到langchain.agents,建议使用from langchain.agents import create_agent
更多推荐



所有评论(0)