Spaces:
Sleeping
Sleeping
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool | |
import datetime | |
import requests | |
import pytz | |
import yaml | |
from tools.final_answer import FinalAnswerTool | |
from Gradio_UI import GradioUI | |
# Tool personalizzato per ottenere l'ora attuale in qualsiasi città | |
def get_current_time(city: str) -> str: | |
"""Restituisce l'ora attuale per una città specificata dall'utente.""" | |
try: | |
# Ricerca della timezone basata sulla città | |
timezone = pytz.timezone(pytz.country_timezones.get(city.lower(), 'UTC')) | |
local_time = datetime.datetime.now(timezone).strftime("%Y-%m-%d %H:%M:%S") | |
return f"L'ora attuale a {city.capitalize()} è: {local_time}" | |
except Exception as e: | |
return f"Errore nel recupero dell'ora per {city}: {str(e)}" | |
final_answer = FinalAnswerTool() | |
model = HfApiModel( | |
max_tokens=2096, | |
temperature=0.5, | |
model_id='Qwen/Qwen2.5-Coder-32B-Instruct', | |
custom_role_conversions=None, | |
) | |
# Importa lo strumento di generazione immagini dal tool Hub | |
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True) | |
with open("prompts.yaml", 'r') as stream: | |
prompt_templates = yaml.safe_load(stream) | |
agent = CodeAgent( | |
model=model, | |
tools=[final_answer, get_current_time], # Aggiunto il nuovo tool per qualsiasi città | |
max_steps=6, | |
verbosity_level=1, | |
grammar=None, | |
planning_interval=None, | |
name=None, | |
description=None, | |
prompt_templates=prompt_templates | |
) | |
# Funzione per interpretare la richiesta e restituire l'ora della città specificata | |
def interpret_and_respond(query: str) -> str: | |
"""Interpreta la richiesta dell'utente e restituisce l'ora per una città specificata.""" | |
words = query.lower().split() | |
if "time" in words or "ora" in words: | |
for word in words: | |
if word in pytz.all_timezones: | |
return get_current_time(word) | |
return "Per favore, specifica una città." | |
return "Mi dispiace, non ho capito la richiesta. Puoi riformularla?" | |
agent.tools.append(interpret_and_respond) | |
GradioUI(agent).launch() |