如何用langchain来实现一个查询天气的智能体

27人浏览 / 0人评论 / 添加收藏

上一篇,我们讲了如何用Langchain来搭建一个通义大语言模型应用。今天小编就来讲一讲如何用Langchain来搭建一个查询天气的智能体

本文的大模型用的是智谱AI,采用Python代码来实现。我们需要先在官方网站申请一个开发的Key,在接下来的代码中需要用到。

申请地址:https://bigmodel.cn/usercenter/apikeys?_gl=1*pnvw6*_ga*MjA3NDMyMTk5Mi4xNzczMzYyOTM4*_ga_SF8X67RPF9*czE3NzMzNjI5MzgkbzEkZzEkdDE3NzMzNjM1ODUkajU4JGwwJGgw

1、代码

全程上干货,代码如下:

文件名:weather.py

import requests
import pandas as pd
from langchain.tools import tool
from langchain.agents import create_react_agent,AgentExecutor
from langchain import hub
import os
from langchain_community.chat_models import ChatZhipuAI

# @tool("get_weather")
# @tool
@tool(description="根据城市名称获取天气信息")
def getWeather(cityName: str) -> str:
   """根据城市名称获取天气信息。"""
   cityCode = get_city_code(cityName)
   url = "https://eolink.o.apispace.com/456456/weather/v001/now"
   payload = {"areacode" : cityCode,"lonlat" : "116.407526,39.904030"}
   headers = {
       "X-APISpace-Token":"wndgc4vuwxxxx"
   }
   response = requests.get(url, params=payload, headers=headers)
   print(response.text)
   data = response.json()
   temp = data.get("result").get("realtime").get("temp")
   wd = data.get("result").get("realtime").get("text")
   # return response.text
   return f"当前{cityName}的温度是{temp}度,天气是{wd}"

def get_city_code(city_name:str) ->int:
   """根据城市名称获取城市代码。"""
   city_df = pd.read_csv("./city.csv")
   # 获取城市编码
   # 优先匹配区县
   match = city_df[city_df['district']==city_name]
   if not match.empty:
       return match.iloc[0]['areacode/城市ID']
   #匹配城市
   match = city_df[city_df['city']==city_name]
   if not match.empty:
       return match.iloc[0]['areacode/城市ID']
   #匹配省份
   match = city_df[city_df['city'].str.contains(city_name,na=False)]
   if not match.empty:
       return match.iloc[0]['areacode/城市ID']
   #默认北京
   return 101010100


key= '35a6xxxx'  #这里的key需要替换成你自己的key
chat = ChatZhipuAI(
   api_key=key,
   model="glm-4",
   streaming=False,   # 确保 streaming=False
   temperature=0.7
)

#创建工具对象
tools = [getWeather]
#获取提示词
prompt = hub.pull("hwchase17/react")
#创建智能体
agent = create_react_agent(llm=chat,tools=tools,prompt=prompt)
#创建AgentExecutor,运行智能体
agent_executor = AgentExecutor(agent=agent, tools=tools,verbose=True)
#verbose代表输出日志
#调用智能体
response = agent_executor.invoke({'input':'今天北京天气如何?'})
print(response)
 

2、运行展示

在命令行中运行代码:python3 weather.py

 

 

全部评论