from bs4 import BeautifulSoup from smolagents import tool, Tool import markdownify import openpyxl import requests import tabulate import whisper # Calculator Tools @tool def addition_tool(a:float, b:float)->float: """ Takes two floating point numbers and returns the results of their addition. Args: a: First number of the addition operation b: Second number of the addition operation """ return f"The result of addition between {a} and {b} is {a+b}" @tool def subtraction_tool(a:float, b:float)->float: """ Takes two floating point numbers and returns the results of their subtraction. Args: a: First number of the subtraction operation b: Second number of the subtraction operation """ return f"The result of subtraction between {a} and {b} is {a-b}" @tool def multiplication_tool(a:float, b:float)->float: """ Takes two floating point numbers and returns the results of their addition. Args: a: First number of the multiplication operation b: Second number of the multiplication operation """ return f"The result of multiplication between {a} and {b} is {a*b}" @tool def division_tool(a:float, b:float)->float: """ Takes two floating point numbers and returns the results of their addition. Args: a: The dividend of the division operation b: The divisor of the division operation """ return f"The result of division between {a} and {b} is {a/b}" @tool def exponent_tool(a:float, b:int)->float: """ Takes a floating point number and an integer expoent and returns the results of their exponential operation. Args: a: Base number of the addition operation b: Exponent number of the addition operation """ return f"The result of exponential operation between {a} and {b} is {a**b}" @tool def modulus_tool(a:int, b:int)->float: """Get the modulus of two numbers. Args: a: first int b: second int """ return f"The result of modulus operation between {a} and {b} is {a%b}" # Main Tools @tool def transcriber_tool(file_path:str)->str: """ Takes the file path of an audio file and returns the transcribed text Args: file_path: File path of audio file """ model = whisper.load_model("base") # You can try "small" or "medium" for better accuracy # Transcribe the audio result = model.transcribe(file_path)["text"] # Print the text return f"The result of the transcription is: \n{result}" @tool def excel_loader_tool(file_path:str)->str: """ For loading and reading the contents of an excel file. Args: file_path: File path of the excel file """ def format_sheet(data): import tabulate return tabulate.tabulate(data[1:], headers=data[0], tablefmt="github") wb = openpyxl.load_workbook(file_path) ws = wb.active my_list = list() for value in ws.iter_rows( min_row=1, max_row=ws.max_row, min_col=1, max_col=ws.max_column, values_only=True): my_list.append(value) return f"The result of the excel Loader is; \n\n{format_sheet(my_list)}"