Superbrida commited on
Commit
49c2e76
·
verified ·
1 Parent(s): c752b7a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -67
app.py CHANGED
@@ -1,78 +1,69 @@
1
- from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, load_tool, tool
2
- import datetime
3
- import requests
4
- import pytz
5
- import yaml
6
- from tools.final_answer import FinalAnswerTool
7
- from Gradio_UI import GradioUI
8
 
9
- # Tool personalizzato per ottenere l'ora attuale in qualsiasi città
10
- @tool
11
- def get_current_time(city: str) -> str:
12
- """Restituisce l'ora attuale per una città specificata dall'utente.
13
-
14
- Args:
15
- city (str): Il nome della città per cui ottenere l'ora.
16
-
17
- Returns:
18
- str: Una stringa contenente l'ora attuale nella città richiesta oppure un messaggio di errore.
19
  """
20
- try:
21
- # Mapping della città alla sua timezone
22
- timezone = pytz.timezone(city)
23
- local_time = datetime.datetime.now(timezone).strftime("%Y-%m-%d %H:%M:%S")
24
- return f"L'ora attuale a {city.capitalize()} è: {local_time}"
25
- except Exception as e:
26
- return f"Errore nel recupero dell'ora per {city}: {str(e)}"
27
 
28
- final_answer = FinalAnswerTool()
 
 
 
 
 
 
 
 
 
 
 
 
 
29
 
30
- model = HfApiModel(
31
- max_tokens=2096,
32
- temperature=0.5,
33
- model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
34
- custom_role_conversions=None,
35
- )
36
 
37
- # Importa lo strumento di generazione immagini dal tool Hub
38
- image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
39
 
40
- with open("prompts.yaml", 'r') as stream:
41
- prompt_templates = yaml.safe_load(stream)
42
-
43
- agent = CodeAgent(
44
- model=model,
45
- tools=[final_answer, get_current_time], # Aggiunto il nuovo tool per qualsiasi città
46
- max_steps=6,
47
- verbosity_level=1,
48
- grammar=None,
49
- planning_interval=None,
50
- name=None,
51
- description=None,
52
- prompt_templates=prompt_templates
53
  )
54
 
55
- # Funzione per interpretare la richiesta e restituire l'ora della città specificata
56
- @tool
57
- def interpret_and_respond(query: str) -> str:
58
- """Interpreta la richiesta dell'utente e restituisce l'ora per una città specificata.
59
-
60
- Args:
61
- query (str): La domanda dell'utente contenente la città richiesta.
62
 
63
- Returns:
64
- str: Una stringa contenente l'ora attuale nella città richiesta oppure un messaggio di errore.
65
- """
66
- words = query.lower().split()
67
- if "time" in words or "ora" in words:
68
- for word in words:
69
- try:
70
- return get_current_time(word)
71
- except:
72
- continue
73
- return "Per favore, specifica una città valida."
74
- return "Mi dispiace, non ho capito la richiesta. Puoi riformularla?"
75
 
76
- agent.tools.append(interpret_and_respond)
77
 
78
- GradioUI(agent).launch()
 
1
+ da smolagents importa CodeAgent,DuckDuckGoSearchTool,HfApiModel,load_tool,tool
2
+ importa data e ora
3
+ richieste di importazione
4
+ importare pytz
5
+ importare yaml
6
+ da strumenti.final_answer importa FinalAnswerTool
 
7
 
8
+ da Gradio_UI importa GradioUI
9
+
10
+ # Di seguito un esempio di uno strumento che non fa nulla. Stupiscici con la tua creatività!
11
+ @attrezzo
12
+ def my_custom_tool ( arg1: str , arg2: int )-> str : #è importante specificare il tipo di ritorno
13
+ #Mantieni questo formato per la descrizione / argomenti / descrizione argomenti ma sentiti libero di modificare lo strumento
14
+ """Uno strumento che non fa ancora nulla
15
+ Argomenti:
16
+ arg1: il primo argomento
17
+ arg2: il secondo argomento
18
  """
19
+ ritorna "Quale magia costruirai?"
 
 
 
 
 
 
20
 
21
+ @attrezzo
22
+ def get_current_time_in_timezone ( fuso orario: str ) -> str :
23
+ """Uno strumento che recupera l'ora locale corrente in un fuso orario specificato.
24
+ Argomenti:
25
+ fuso orario: una stringa che rappresenta un fuso orario valido (ad esempio, 'America/New_York').
26
+ """
27
+ Tentativo :
28
+ # Crea oggetto fuso orario
29
+ tz = pytz.timezone(fuso orario)
30
+ # Ottieni l'ora corrente in quel fuso orario
31
+ ora_locale = datetime.datetime.now(tz).strftime( "%Y-%m-%d %H:%M:%S" )
32
+ restituisci f"L'ora locale corrente in {timezone} è: {local_time} "
33
+ eccetto Eccezione come e:
34
+ restituisci f"Errore durante il recupero dell'ora per il fuso orario ' {timezone} ': { str (e)} "
35
 
 
 
 
 
 
 
36
 
37
+ risposta_finale = StrumentoRispostaFinale()
 
38
 
39
+ # Se l'agente non risponde, il modello è sovraccarico, utilizzare un altro modello o il seguente Hugging Face Endpoint che contenga anche il codificatore qwen2.5:
40
+ # model_id='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud'
41
+
42
+ modello = HfApiModel(
43
+ numero massimo di token = 2096 ,
44
+ temperatura= 0,5 ,
45
+ model_id= 'Qwen/Qwen2.5-Coder-32B-Instruct' , # è possibile che questo modello sia sovraccarico
46
+ custom_role_conversions= Nessuno ,
 
 
 
 
 
47
  )
48
 
49
+
50
+ # Strumento di importazione dall'hub
51
+ image_generation_tool = load_tool( "agenti-corso/testo-in-immagine" , trust_remote_code= True )
52
+
53
+ con open ( "prompts.yaml" , 'r' ) come flusso:
54
+ prompt_templates = yaml.safe_load(flusso)
 
55
 
56
+ agente = CodeAgent(
57
+ modello=modello,
58
+ tools=[final_answer], ## aggiungi i tuoi strumenti qui (non rimuovere la risposta finale)
59
+ max_passi= 6 ,
60
+ livello_di_verbosità= 1 ,
61
+ grammatica= Nessuna ,
62
+ planning_interval= Nessuno ,
63
+ nome= Nessuno ,
64
+ descrizione= Nessuno ,
65
+ prompt_templates=template_prompt
66
+ )
 
67
 
 
68
 
69
+ GradioUI(agente).launch()