sunxiaokang commited on
Commit
a8d8977
·
verified ·
1 Parent(s): 26fd4de

Delete weather_query.py

Browse files
Files changed (1) hide show
  1. weather_query.py +0 -71
weather_query.py DELETED
@@ -1,71 +0,0 @@
1
- import os
2
- import requests
3
- from lagent.actions.base_action import BaseAction, tool_api
4
- from lagent.schema import ActionReturn, ActionStatusCode
5
-
6
- class WeatherQuery(BaseAction):
7
- def __init__(self):
8
- super().__init__()
9
- self.api_key = os.getenv("weather_token")
10
- print(self.api_key)
11
- if not self.api_key:
12
- raise EnvironmentError("未找到环境变量 'token'。请设置你的和风天气 API Key 到 'weather_token' 环境变量中,比如export weather_token='xxx' ")
13
-
14
- @tool_api
15
- def run(self, location: str) -> dict:
16
- """
17
- 查询实时天气信息。
18
-
19
- Args:
20
- location (str): 要查询的地点名称、LocationID 或经纬度坐标(如 "101010100" 或 "116.41,39.92")。
21
-
22
- Returns:
23
- dict: 包含天气信息的字典
24
- * location: 地点名称
25
- * weather: 天气状况
26
- * temperature: 当前温度
27
- * wind_direction: 风向
28
- * wind_speed: 风速(公里/小时)
29
- * humidity: 相对湿度(%)
30
- * report_time: 数据报告时间
31
- """
32
- try:
33
- # 如果 location 不是坐标格式(例如 "116.41,39.92"),则调用 GeoAPI 获取 LocationID
34
- if not ("," in location and location.replace(",", "").replace(".", "").isdigit()):
35
- # 使用 GeoAPI 获取 LocationID
36
- geo_url = f"https://geoapi.qweather.com/v2/city/lookup?location={location}&key={self.api_key}"
37
- geo_response = requests.get(geo_url)
38
- geo_data = geo_response.json()
39
-
40
- if geo_data.get("code") != "200" or not geo_data.get("location"):
41
- raise Exception(f"GeoAPI 返回错误码:{geo_data.get('code')} 或未找到位置")
42
-
43
- location = geo_data["location"][0]["id"]
44
-
45
- # 构建天气查询的 API 请求 URL
46
- weather_url = f"https://devapi.qweather.com/v7/weather/now?location={location}&key={self.api_key}"
47
- response = requests.get(weather_url)
48
- data = response.json()
49
-
50
- # 检查 API 响应码
51
- if data.get("code") != "200":
52
- raise Exception(f"Weather API 返回错误码:{data.get('code')}")
53
-
54
- # 解析和组织天气信息
55
- weather_info = {
56
- "location": location,
57
- "weather": data["now"]["text"],
58
- "temperature": data["now"]["temp"] + "°C",
59
- "wind_direction": data["now"]["windDir"],
60
- "wind_speed": data["now"]["windSpeed"] + " km/h",
61
- "humidity": data["now"]["humidity"] + "%",
62
- "report_time": data["updateTime"]
63
- }
64
-
65
- return {"result": weather_info}
66
-
67
- except Exception as exc:
68
- return ActionReturn(
69
- errmsg=f"WeatherQuery 异常:{exc}",
70
- state=ActionStatusCode.HTTP_ERROR
71
- )