Spaces:
Running
Running
File size: 4,343 Bytes
ae87082 4b13f38 e33a27b aaa8467 8c05954 4b13f38 4e8d51c 71c08fb 4e8d51c 71c08fb 4e8d51c e33a27b aaa8467 71c08fb e33a27b 71c08fb e33a27b aaa8467 71c08fb 4b13f38 ae87082 71c08fb 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 |
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 = {
"filename": {
"type": "string",
"description": "The name of the media file to transcribe."
}
}
output_type = "string"
def forward(self, filename: str):
print(f"called MediaTool with {filename}")
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):
print(f"called WikipediaTool with {title}")
try:
page = wikipedia.page(title)
content = page.content[:3000]
return content
except Exception as e:
return f"ERROR: {e}"
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, filename: str):
print(f"called ExcelTool with {filename}")
try:
df = pd.read_excel(filename, engine = "openpyxl")
return df
except Exception as e:
return f"ERROR: {e}"
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):
print(f"called WebscraperTool with {url}")
try:
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:
return "Website cannot be reached."
except Exception as e:
return f"ERROR: {e}"
# 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):
print(f"called InternetSearchTool with {question}")
try:
search_tool = DuckDuckGoSearchTool()
result = search_tool(question)
return result
except Exception as e:
return f"ERROR: {e}"
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)}"
|