Files changed (1) hide show
  1. tools.py +50 -47
tools.py CHANGED
@@ -2,55 +2,58 @@ from smolagents import DuckDuckGoSearchTool
2
  from smolagents import Tool
3
  import random
4
  from huggingface_hub import list_models
 
5
 
6
 
7
- # Initialize the DuckDuckGo search tool
8
- #search_tool = DuckDuckGoSearchTool()
9
 
10
 
11
- class WeatherInfoTool(Tool):
12
- name = "weather_info"
13
- description = "Fetches dummy weather information for a given location."
14
- inputs = {
15
- "location": {
16
- "type": "string",
17
- "description": "The location to get weather information for."
18
- }
19
- }
20
- output_type = "string"
21
-
22
- def forward(self, location: str):
23
- # Dummy weather data
24
- weather_conditions = [
25
- {"condition": "Rainy", "temp_c": 15},
26
- {"condition": "Clear", "temp_c": 25},
27
- {"condition": "Windy", "temp_c": 20}
28
- ]
29
- # Randomly select a weather condition
30
- data = random.choice(weather_conditions)
31
- return f"Weather in {location}: {data['condition']}, {data['temp_c']}°C"
32
-
33
- class HubStatsTool(Tool):
34
- name = "hub_stats"
35
- description = "Fetches the most downloaded model from a specific author on the Hugging Face Hub."
36
- inputs = {
37
- "author": {
38
- "type": "string",
39
- "description": "The username of the model author/organization to find models from."
40
- }
41
- }
42
- output_type = "string"
43
-
44
- def forward(self, author: str):
45
- try:
46
- # List models from the specified author, sorted by downloads
47
- models = list(list_models(author=author, sort="downloads", direction=-1, limit=1))
48
-
49
- if models:
50
- model = models[0]
51
- return f"The most downloaded model by {author} is {model.id} with {model.downloads:,} downloads."
52
- else:
53
- return f"No models found for author {author}."
54
- except Exception as e:
55
- return f"Error fetching models for {author}: {str(e)}"
56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  from smolagents import Tool
3
  import random
4
  from huggingface_hub import list_models
5
+ from langchain_community.tools import DuckDuckGoSearchRun
6
 
7
 
8
+ from langchain.tools import Tool
9
+ from huggingface_hub import list_models
10
 
11
 
12
+ from langchain.tools import Tool
13
+ import random
14
+
15
+ # Initialize the DuckDuckGo search tool
16
+ #search_tool = DuckDuckGoSearchTool()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
 
18
+ search_tool = DuckDuckGoSearchRun()
19
+
20
+ def get_weather_info(location: str) -> str:
21
+ """Fetches dummy weather information for a given location."""
22
+ # 虚拟天气数据
23
+ weather_conditions = [
24
+ {"condition": "Rainy", "temp_c": 15},
25
+ {"condition": "Clear", "temp_c": 25},
26
+ {"condition": "Windy", "temp_c": 20}
27
+ ]
28
+ # 随机选择一种天气状况
29
+ data = random.choice(weather_conditions)
30
+ return f"Weather in {location}: {data['condition']}, {data['temp_c']}°C"
31
+
32
+ # 初始化工具
33
+ weather_info_tool = Tool(
34
+ name="get_weather_info",
35
+ func=get_weather_info,
36
+ description="Fetches dummy weather information for a given location."
37
+ )
38
+
39
+
40
+ def get_hub_stats(author: str) -> str:
41
+ """Fetches the most downloaded model from a specific author on the Hugging Face Hub."""
42
+ try:
43
+ # 列出指定作者的模型,按下载次数排序
44
+ models = list(list_models(author=author, sort="downloads", direction=-1, limit=1))
45
+
46
+ if models:
47
+ model = models[0]
48
+ return f"The most downloaded model by {author} is {model.id} with {model.downloads:,} downloads."
49
+ else:
50
+ return f"No models found for author {author}."
51
+ except Exception as e:
52
+ return f"Error fetching models for {author}: {str(e)}"
53
+
54
+ # 初始化工具
55
+ hub_stats_tool = Tool(
56
+ name="get_hub_stats",
57
+ func=get_hub_stats,
58
+ description="Fetches the most downloaded model from a specific author on the Hugging Face Hub."
59
+ )