Spaces:
Sleeping
Sleeping
File size: 2,539 Bytes
80494ac 0774b2e 80494ac 0774b2e 936b841 c752b7a 936b841 80494ac c752b7a 0774b2e 9b5b26a 0774b2e 8c01ffb 80494ac ae7a494 80494ac 13d500a 8c01ffb 80494ac 8c01ffb 80494ac 9b5b26a 80494ac 0774b2e 80494ac 8fe992b 0774b2e 936b841 c752b7a 936b841 c752b7a 936b841 0774b2e c752b7a 0774b2e c752b7a 0774b2e c752b7a |
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 |
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à
@tool
def get_current_time(city: str) -> str:
"""Restituisce l'ora attuale per una città specificata dall'utente.
Args:
city (str): Il nome della città per cui ottenere l'ora.
Returns:
str: Una stringa contenente l'ora attuale nella città richiesta oppure un messaggio di errore.
"""
try:
# Mapping della città alla sua timezone
timezone = pytz.timezone(city)
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
@tool
def interpret_and_respond(query: str) -> str:
"""Interpreta la richiesta dell'utente e restituisce l'ora per una città specificata.
Args:
query (str): La domanda dell'utente contenente la città richiesta.
Returns:
str: Una stringa contenente l'ora attuale nella città richiesta oppure un messaggio di errore.
"""
words = query.lower().split()
if "time" in words or "ora" in words:
for word in words:
try:
return get_current_time(word)
except:
continue
return "Per favore, specifica una città valida."
return "Mi dispiace, non ho capito la richiesta. Puoi riformularla?"
agent.tools.append(interpret_and_respond)
GradioUI(agent).launch()
|