|
|
from smolagents import tool |
|
|
import whisper |
|
|
import urllib |
|
|
import pandas as pd |
|
|
|
|
|
MODEL = whisper.load_model("tiny") |
|
|
FILES_URL = "https://agents-course-unit4-scoring.hf.space/files/" |
|
|
|
|
|
def download_file_from_url(url: str) -> str: |
|
|
""" |
|
|
Download a file from a URL and save it to a temporary location. |
|
|
Args: |
|
|
url: the URL of the file to download. |
|
|
""" |
|
|
file_path = None |
|
|
|
|
|
try: |
|
|
result = urllib.request.urlretrieve(url) |
|
|
file_path = result[0] |
|
|
except Exception as e: |
|
|
return f"Error downloading file: {str(e)}" |
|
|
|
|
|
return file_path |
|
|
|
|
|
@tool |
|
|
def csv_reader(task_id: str) -> str: |
|
|
""" |
|
|
Extract CSV file content and return it in a json format. Supported file extensions: .csv |
|
|
Args: |
|
|
task_id: the question TASK_ID. |
|
|
""" |
|
|
|
|
|
file_path = download_file_from_url(FILES_URL+task_id) |
|
|
|
|
|
try: |
|
|
df = pd.read_csv(file_path) |
|
|
return df.to_json() |
|
|
|
|
|
except Exception as e: |
|
|
return f"Error analyzing CSV file: {str(e)}" |
|
|
|
|
|
@tool |
|
|
def excel_reader(task_id: str) -> str: |
|
|
""" |
|
|
Extract Excel file content and return it in a json format. Supported file extensions: .xls, .xlsx, .xlsb, .xlsm, .odf, .ods, .odt |
|
|
Args: |
|
|
task_id: the question TASK_ID. |
|
|
""" |
|
|
|
|
|
file_path = download_file_from_url(FILES_URL+task_id) |
|
|
|
|
|
try: |
|
|
df = pd.read_excel(file_path) |
|
|
return df.to_json() |
|
|
|
|
|
except Exception as e: |
|
|
return f"Error analyzing Excel file: {str(e)}" |
|
|
|
|
|
|
|
|
@tool |
|
|
def transcribe_audio(task_id: str) -> str: |
|
|
""" |
|
|
Extract MP3 file content and return it as text. Supported file extensions: .mp3 |
|
|
Args: |
|
|
task_id: the question TASK_ID. |
|
|
""" |
|
|
|
|
|
file_path = download_file_from_url(FILES_URL+task_id) |
|
|
result = None |
|
|
|
|
|
try: |
|
|
result = MODEL.transcribe(file_path) |
|
|
except Exception as e: |
|
|
return f"Error transcribing file: {str(e)}" |
|
|
|
|
|
return result['text'] |