AlexGrig23/Unit_3_Agentic_RAG
0
1from smolagents import DuckDuckGoSearchTool2from smolagents import Tool3import random4from huggingface_hub import list_models5 6 7# Initialize the DuckDuckGo search tool8#search_tool = DuckDuckGoSearchTool()9 10 11class 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 data24 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 condition30 data = random.choice(weather_conditions)31 return f"Weather in {location}: {data['condition']}, {data['temp_c']}°C"32 33class 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 downloads47 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 57 