MihailRus commited on
Commit
b2eeb74
·
verified ·
1 Parent(s): 81df275

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +41 -38
app.py CHANGED
@@ -37,49 +37,52 @@ def get_current_time_in_timezone(timezone: str) -> str:
37
  @tool
38
  def get_weather_by_city(city_name: str) -> str:
39
  """
40
- A tool that returns the current weather for the specified city.
41
- Args:
42
- city_name: city name
 
 
 
 
43
  """
44
- # Получаем координаты города
45
- # Формируем URL для запроса к API
46
- city_name = city_name
47
- url = f"https://geocoding-api.open-meteo.com/v1/search?name={city_name}&count=1&language=en&format=json"
48
- try:
49
- # Отправляем GET-запрос к API
50
- response = requests.get(url)
51
- response.raise_for_status() # Проверяем на ошибки HTTP
52
-
53
- # Парсим JSON-ответ
54
- data = response.json()
55
-
56
- # Проверяем, есть ли результаты
57
- if "results" in data and len(data["results"]) > 0:
58
- city_data = data["results"][0]
59
- else:
60
- return {"error": "Город не найден"}
61
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  except requests.RequestException as e:
63
- return {"error": f"Ошибка при запросе к API: {str(e)}"}
64
- except Exception as e:
65
- return {"error": f"Неожиданная ошибка: {str(e)}"}
66
-
67
- coordinates = {
68
- "latitude": city_data["latitude"],
69
- "longitude": city_data["longitude"]
70
- }
71
- if "error" in coordinates:
72
- return coordinates["error"]
73
 
74
- # Используем координаты для запроса погоды
75
- weather_url = f"https://api.open-meteo.com/v1/forecast?latitude={coordinates['latitude']}&longitude={coordinates['longitude']}&current_weather=true"
76
  try:
77
- response = requests.get(weather_url)
78
- response.raise_for_status()
79
- weather_data = response.json()
80
- return f"Текущая температура в {city_name}: {weather_data['current_weather']['temperature']}°C"
 
 
 
81
  except requests.RequestException as e:
82
- return f"Ошибка при запросе погоды: {str(e)}"
 
 
 
83
 
84
  final_answer = FinalAnswerTool()
85
 
@@ -102,7 +105,7 @@ with open("prompts.yaml", 'r') as stream:
102
 
103
  agent = CodeAgent(
104
  model=model,
105
- tools=[final_answer, get_weather_by_city()], ## add your tools here (don't remove final answer)
106
  max_steps=6,
107
  verbosity_level=1,
108
  grammar=None,
 
37
  @tool
38
  def get_weather_by_city(city_name: str) -> str:
39
  """
40
+ Возвращает текущую погоду для указанного города в формате: "Температура в [город]: X°C".
41
+
42
+ Аргументы:
43
+ city_name (str): Название города на английском или русском языке. Например: "Paris" или "Париж".
44
+
45
+ Возвращает:
46
+ str: Строка с температурой или сообщение об ошибке.
47
  """
48
+ # Шаг 1: Получаем координаты города
49
+ geocoding_url = f"https://geocoding-api.open-meteo.com/v1/search?name={city_name}&count=1&language=en&format=json"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
 
51
+ try:
52
+ # Запрос координат
53
+ geo_response = requests.get(geocoding_url)
54
+ geo_response.raise_for_status()
55
+ geo_data = geo_response.json()
56
+
57
+ # Проверка наличия результатов
58
+ if not geo_data.get("results"):
59
+ return f"Город '{city_name}' не найден"
60
+
61
+ city_data = geo_data["results"][0]
62
+ latitude = city_data["latitude"]
63
+ longitude = city_data["longitude"]
64
+
65
  except requests.RequestException as e:
66
+ return f"Ошибка геокодинга: {str(e)}"
67
+ except KeyError:
68
+ return "Некорректный ответ от API геокодинга"
69
+
70
+ # Шаг 2: Получаем погоду по координатам
71
+ weather_url = f"https://api.open-meteo.com/v1/forecast?latitude={latitude}&longitude={longitude}&current_weather=true"
 
 
 
 
72
 
 
 
73
  try:
74
+ weather_response = requests.get(weather_url)
75
+ weather_response.raise_for_status()
76
+ weather_data = weather_response.json()
77
+
78
+ temperature = weather_data["current_weather"]["temperature"]
79
+ return f"Текущая температура в {city_name}: {temperature}°C"
80
+
81
  except requests.RequestException as e:
82
+ return f"Ошибка запроса погоды: {str(e)}"
83
+ except KeyError:
84
+ return "Некорректный ответ от API погоды"
85
+
86
 
87
  final_answer = FinalAnswerTool()
88
 
 
105
 
106
  agent = CodeAgent(
107
  model=model,
108
+ tools=[final_answer, get_weather_by_city], ## add your tools here (don't remove final answer)
109
  max_steps=6,
110
  verbosity_level=1,
111
  grammar=None,