Renzo
wip: added tool to convert audio to text and improve fetch file and save to temp location
c42da51
import os
import whisper
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.tools.reasoning import ReasoningTools
from utils import fetch_file_content
from agno.tools.wikipedia import WikipediaTools
BASE_STORAGE_ROOT = os.getenv("AGENT_STORAGE_ROOT", os.path.join(os.getcwd(), "agent_storage"))
def get_file_from_task_id(task_id: str) -> str:
"""
Use this tool to **download** the file linked to a given `task_id`.
Args:
task_id (str): Identifier that points to the remote file.
Returns:
str: Path to the downloaded file.
"""
task_dir = os.path.join(BASE_STORAGE_ROOT, task_id)
os.makedirs(task_dir, exist_ok=True)
filename = task_id
file_path = os.path.join(task_dir, filename)
if os.path.exists(file_path):
print("[INFO] Using cached file:", file_path)
return file_path
# Use the utility function to fetch content
result = fetch_file_content(task_id)
content = result["content"]
with open(file_path, "wb") as f:
f.write(content)
return file_path
def read_file_from_task_id(task_id: str) -> str:
"""
Args:
task_id (str): Identifier that points to the remote file.
Returns:
str: Content of the downloaded (or cached) file.
"""
# expected local path
file_path = os.path.join(BASE_STORAGE_ROOT, task_id, task_id)
with open(file_path, "r", encoding="utf-8") as f:
print("[INFO] Reading file:", file_path)
return f.read()
def convert_audio_to_text(task_id: str) -> str:
"""
Use this to download an audio and convert it to text
Args:
task_id (str): Identifier that points to the remote file.
Returns:
str: the transcript of the audio in text
"""
result = fetch_file_content(task_id, temp=True)
model = whisper.load_model("turbo")
result_whisper = model.transcribe(audio=result["path"])
print("[convert_audio_to_text]", result_whisper["text"])
return result_whisper["text"]
tools = [
ReasoningTools(think=True, add_few_shot=True),
DuckDuckGoTools(fixed_max_results=5),
WikipediaTools(),
get_file_from_task_id,
read_file_from_task_id,
convert_audio_to_text
]