CoolFace
Apppublic

CindyDelage/Unit_3_Agentic_RAG

sourceHugging Faceapache-2.0updated 1y agoView on Hugging Face
0likes
tools.py77 linesDownload Raw Back to root
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 57class NewsTool(Tool):58    name = "news"59    description = "Search for the latest news on a specific topic."60    inputs = {61        "author": {62            "type": "string",63            "description": "The topic on which the user wants the latest news"64        }65    }66    output_type = "string"67 68    def forward(self, author: str):69        search_tool = DuckDuckGoSearchTool()70        # Example usage71        results = search_tool(f"What are the latest news on {author}?")72        return f"Voici les dernières informations sur {author} : {str(results)}"73## Initialize the tool74#news_tool = NewsTool()75 76# Example usage77#print(news_tool("CAPES"))