DoNotChoke commited on
Commit
2f2933d
·
verified ·
1 Parent(s): 5030b1f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +7 -37
app.py CHANGED
@@ -2,7 +2,7 @@ import gradio as gr
2
  import requests
3
  import os
4
  from geopy.geocoders import Nominatim
5
- from smolagents import tool, CodeAgent, HfApiModel
6
 
7
  # Lấy API key từ biến môi trường
8
  WEATHER_API_KEY = os.environ.get("WEATHER_API_KEY")
@@ -15,6 +15,8 @@ def get_weather(lat: float, lon: float) -> dict | None:
15
  Args:
16
  lat: latitude of the location
17
  lon: longitude of the location
 
 
18
  """
19
  url = f"https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={WEATHER_API_KEY}&units=metric"
20
  try:
@@ -35,48 +37,16 @@ def get_weather(lat: float, lon: float) -> dict | None:
35
  # Khởi tạo agent
36
  weather_agent = CodeAgent(
37
  model=HfApiModel("deepseek-ai/DeepSeek-R1", max_tokens=8096),
38
- tools=[get_weather],
 
39
  description="Weather information provider"
40
  )
41
 
42
- # Hàm xử lý địa lý
43
- def get_coordinates(location: str) -> tuple:
44
- geolocator = Nominatim(user_agent="weather_chatbot")
45
- location = geolocator.geocode(location)
46
- if location:
47
- return (location.latitude, location.longitude)
48
- return (None, None)
49
 
50
  # Hàm xử lý chat
51
  def respond(message, history):
52
- # Chuyển đổi địa điểm thành tọa độ
53
- lat, lon = get_coordinates(message)
54
-
55
- if not lat or not lon:
56
- return "Không tìm thấy địa điểm. Vui lòng thử lại với tên chính xác hơn."
57
-
58
- # Gọi agent
59
- result = weather_agent.run(f"""
60
- Hãy phân tích thông tin thời tiết cho tọa độ {lat}, {lon} và trình bày kết quả theo định dạng:
61
- - Điều kiện thời tiết
62
- - Nhiệt độ
63
- - Độ ẩm
64
- - Tốc độ gió
65
- """)
66
-
67
- # Xử lý kết quả
68
- weather_data = get_weather(lat, lon)
69
- if not weather_data:
70
- return "Không thể lấy dữ liệu thời tiết. Vui lòng thử lại sau."
71
-
72
- response = f"""
73
- 🌤️ **Thông tin thời tiết cho {message}**:
74
- - **Điều kiện**: {weather_data['condition'].capitalize()}
75
- - **Nhiệt độ**: {weather_data['temperature']}°C
76
- - **Độ ẩm**: {weather_data['humidity']}%
77
- - **Gió**: {weather_data['wind_speed']} m/s
78
- """
79
-
80
  return response
81
 
82
  # Tạo giao diện Gradio
 
2
  import requests
3
  import os
4
  from geopy.geocoders import Nominatim
5
+ from smolagents import tool, CodeAgent, HfApiModel, GoogleSearchTool, VisitWebpageTool
6
 
7
  # Lấy API key từ biến môi trường
8
  WEATHER_API_KEY = os.environ.get("WEATHER_API_KEY")
 
15
  Args:
16
  lat: latitude of the location
17
  lon: longitude of the location
18
+
19
+ Return: dictionary about weather information or None.
20
  """
21
  url = f"https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={WEATHER_API_KEY}&units=metric"
22
  try:
 
37
  # Khởi tạo agent
38
  weather_agent = CodeAgent(
39
  model=HfApiModel("deepseek-ai/DeepSeek-R1", max_tokens=8096),
40
+ tools=[get_weather, GoogleSearchTool(provider="serper"), VisitWebpageTool()],
41
+ name="weather_agent",
42
  description="Weather information provider"
43
  )
44
 
45
+
 
 
 
 
 
 
46
 
47
  # Hàm xử lý chat
48
  def respond(message, history):
49
+ response = weather_agent.run(message)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  return response
51
 
52
  # Tạo giao diện Gradio