Spaces:
Sleeping
Sleeping
File size: 5,188 Bytes
38812af f5d3563 38812af f5d3563 92e2e56 f5d3563 92e2e56 f5d3563 92e2e56 f5d3563 92e2e56 f5d3563 92e2e56 f5d3563 92e2e56 f5d3563 92e2e56 f5d3563 92e2e56 f5d3563 92e2e56 f5d3563 92e2e56 f5d3563 92e2e56 f5d3563 92e2e56 f5d3563 92e2e56 f5d3563 92e2e56 f5d3563 92e2e56 f5d3563 92e2e56 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | from smolagents import DuckDuckGoSearchTool
from smolagents import Tool
import random
import requests
from huggingface_hub import list_models
# Initialize the DuckDuckGo search tool
#search_tool = DuckDuckGoSearchTool()
class WeatherInfoTool(Tool):
name = "weather_info"
description = "Fetches dummy weather information for a given location."
inputs = {
"location": {
"type": "string",
"description": "The location to get weather information for."
}
}
output_type = "string"
def forward(self, location: str):
# Dummy weather data
weather_conditions = [
{"condition": "Rainy", "temp_c": 15},
{"condition": "Clear", "temp_c": 25},
{"condition": "Windy", "temp_c": 20}
]
# Randomly select a weather condition
data = random.choice(weather_conditions)
return f"Weather in {location}: {data['condition']}, {data['temp_c']}°C"
class HubStatsTool(Tool):
name = "hub_stats"
description = "Fetches the most downloaded model from a specific author on the Hugging Face Hub."
inputs = {
"author": {
"type": "string",
"description": "The username of the model author/organization to find models from."
}
}
output_type = "string"
def forward(self, author: str):
try:
# List models from the specified author, sorted by downloads
models = list(list_models(author=author, sort="downloads", direction=-1, limit=1))
if models:
model = models[0]
return f"The most downloaded model by {author} is {model.id} with {model.downloads:,} downloads."
else:
return f"No models found for author {author}."
except Exception as e:
return f"Error fetching models for {author}: {str(e)}"
class CountryLanguageTool(Tool):
name = "country_language"
description = "Returns the main language(s) spoken in a given country (offline database)."
inputs = {
"country": {
"type": "string",
"description": "The name of the country (e.g., France, Japan, Brazil)."
}
}
output_type = "string"
def forward(self, country: str):
try:
country_languages = {
"united states": "English",
"usa": "English",
"canada": "English, French",
"france": "French",
"germany": "German",
"spain": "Spanish",
"mexico": "Spanish",
"brazil": "Portuguese",
"japan": "Japanese",
"china": "Mandarin Chinese",
"india": "Hindi, English",
"russia": "Russian",
"italy": "Italian",
"south korea": "Korean",
"korea": "Korean",
"united kingdom": "English",
"uk": "English",
"australia": "English",
"nigeria": "English",
"egypt": "Arabic",
"saudi arabia": "Arabic",
"argentina": "Spanish",
"switzerland": "German, French, Italian, Romansh",
"south africa": "Zulu, Xhosa, Afrikaans, English",
}
key = country.lower().strip()
if key in country_languages:
return (
f"The main language(s) spoken in {country} "
f"is: {country_languages[key]}."
)
return f"Sorry, I don't have language data for {country}."
except Exception as e:
return f"Error retrieving language info: {str(e)}"
# class CountryLanguageTool(Tool):
# name = "country_language"
# description = "Gives the language(s) spoken in a requested country."
# inputs = {
# "country":{
# "type": "string",
# "description": "The country to get the language from."
# }
# }
# output_type = "string"
# def forward(self, country: str):
# try:
# url = f"https://restcountries.com/v3.1/name/{country}"
# response = requests.get(url, timeout=10)
# response.raise_for_status()
# data = response.json()
# if not data:
# return f"No data found for {country}."
# country_data = data[0]
# languages = country_data.get("languages", {})
# if not languages:
# return f"No language information available for {country}."
# language_list = ", ".join(languages.values())
# return (
# f"The main language(s) spoken in {country} "
# f"is: {language_list}."
# )
# except requests.exceptions.HTTPError:
# return f"Country '{country}' not found."
# except requests.exceptions.RequestException as e:
# return f"Network error while fetching data: {str(e)}"
# except Exception as e:
# return f"Unexpected error: {str(e)}" |