[全量] 初始化项目代码、配置、文档及Agent协同harness
This commit is contained in:
49
langchain-chat/server/agent/tools/weather_check.py
Normal file
49
langchain-chat/server/agent/tools/weather_check.py
Normal file
@@ -0,0 +1,49 @@
|
||||
"""
|
||||
更简单的单参数输入工具实现,用于查询现在天气的情况
|
||||
"""
|
||||
import json
|
||||
import re
|
||||
from pydantic import BaseModel, Field
|
||||
import requests
|
||||
from configs.kb_config import SENIVERSE_API_KEY
|
||||
from server.chat import utils
|
||||
|
||||
|
||||
def weather(location: str, api_key: str):
|
||||
url = f"https://api.seniverse.com/v3/weather/daily.json?key={api_key}&location={location}&language=zh-Hans&unit=c&start=0&days=5"
|
||||
response = requests.get(url)
|
||||
if response.status_code == 200:
|
||||
data = response.json()
|
||||
weather = {
|
||||
"today": json.dumps(data["results"][0]["daily"][0]),
|
||||
"others": json.dumps(data["results"][0]["daily"][1:])
|
||||
}
|
||||
weather_info = json.dumps(weather)
|
||||
return weather_info
|
||||
else:
|
||||
raise Exception(
|
||||
f"Failed to retrieve weather: {response.status_code}")
|
||||
|
||||
|
||||
def weathercheck(query: str):
|
||||
"""获取到uid并拆分query"""
|
||||
try:
|
||||
matches = re.findall(r'\{.*?\}', query)
|
||||
if len(matches)>=2:
|
||||
query = matches[0]
|
||||
else:
|
||||
return "<关键指令>不需要再调用该工具了</关键指令>"
|
||||
location = json.loads(query)["location"]
|
||||
time_based_uuid = json.loads(matches[1])["uuid"]
|
||||
# sources = utils.get_shared_variable(time_based_uuid)
|
||||
# sources["source_docs"]=["天气 预报"]
|
||||
# sources["num"]+=1
|
||||
# sources["END"] = "ok"
|
||||
# utils.set_shared_variable(time_based_uuid,sources)
|
||||
return weather(location, SENIVERSE_API_KEY)
|
||||
except Exception as e:
|
||||
return f"Failed to retrieve weather.{e}"
|
||||
|
||||
|
||||
class WeatherInput(BaseModel):
|
||||
location: str = Field(description="City name,include city and county")
|
||||
Reference in New Issue
Block a user