Spaces:
Running
Running
File size: 4,467 Bytes
ae87082 4b13f38 e33a27b aaa8467 8c05954 4b13f38 4e8d51c e33a27b aaa8467 e33a27b 8c05954 e33a27b aaa8467 4b13f38 ae87082 4b13f38 |
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 |
from smolagents import DuckDuckGoSearchTool
from smolagents import Tool
import random
from huggingface_hub import list_models
import requests
from bs4 import BeautifulSoup
import openpyxl
import wikipedia
import pandas as pd
class MediaTool(Tool):
name = "media_tool"
description = "Used for deciphering video and audio files."
inputs = {
"title": {
"type": "string",
"description": "The name of the media file to transcribe."
}
}
output_type = "string"
def forward(self, title: str):
return "this tool hasn't been implemented yet. Please return 0 if the task cannot be solved without knowing the contents of this file."
class WikipediaTool(Tool):
name = "wikipedia_api"
description = "Returns the contents of a wikipedia article through a direct API call."
inputs = {
"title": {
"type": "string",
"description": "The title of the wikipedia article to retrieve."
}
}
output_type = "string"
def forward(self, title: str):
page = wikipedia.page(title)
return page.content
class ExcelTool(Tool):
name = "read_excel"
description = "Returns the contents of an Excel file as a Pandas dataframe."
inputs = {
"filename": {
"type": "string",
"description": "The name of the Excel file to read."
}
}
output_type = "string"
def forward(self, path: str):
df = pd.read_excel(path, engine = "openpyxl")
return df
class WebscraperTool(Tool):
name = "webscraper"
description = "Returns the page's html content from the input url."
inputs = {
"url": {
"type": "string",
"description": "The link of the web page to scrape."
}
}
output_type = "string"
def forward(self, url: str):
response = requests.get(url, stream=True)
if response.status_code == 200:
soup = BeautifulSoup(response.content, 'html.parser')
html_text = soup.get_text()
return html_text
else:
raise Exception(f"Failed to retrieve the webpage. Status code: {response.status_code}")
# Initialize the DuckDuckGo search tool
class InternetSearchTool(Tool):
name = "internet_search"
description = "Searches the internet for the answer to any question input. Returns a long batch of textual information related to the query."
inputs = {
"question": {
"type": "string",
"description": "The question to retrieve an answer for."
}
}
output_type = "string"
def forward(self, question: str):
search_tool = DuckDuckGoSearchTool()
result = search_tool(question)
return result
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)}"
|