eugpal4 commited on
Commit
cfc21f9
·
verified ·
1 Parent(s): 6af7186

Create main.py

Browse files

The program that call function and connect app and tools methods

Files changed (1) hide show
  1. main.py +65 -0
main.py ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import time
3
+ import json
4
+ import requests
5
+ from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, InferenceClientModel
6
+ from tools import duckduckgo_search, wikipedia_search, summarize_text, load_memory, save_memory
7
+
8
+ # Token di Autorizzazione (verifica ambiente)
9
+ token = os.getenv("HUGGINGFACEHUB_API_TOKEN")
10
+ if not token:
11
+ raise ValueError("Imposta la variabile d'ambiente HUGGINGFACEHUB_API_TOKEN")
12
+
13
+ # Scegli il modello
14
+ model = HfApiModel(model_id="google/flan-t5-base", token=token)
15
+
16
+ # Strumenti
17
+ tools = [DuckDuckGoSearchTool(), wikipedia_search]
18
+
19
+ agent = CodeAgent(
20
+ tools=tools,
21
+ model=model,
22
+ additional_authorized_imports=["requests", "bs4"]
23
+ )
24
+
25
+ def run_agent(query: str) -> str:
26
+ try:
27
+ memory = load_memory()
28
+ if query in memory:
29
+ return memory[query]
30
+
31
+ # Ricerca e sintesi
32
+ duck_text = duckduckgo_search(query, max_results=3)
33
+ wiki_text = wikipedia_search(query)
34
+
35
+ duck_summary = summarize_text(duck_text, max_length=150)
36
+ wiki_summary = summarize_text(wiki_text, max_length=150)
37
+
38
+ prompt = (
39
+ f"Domanda: {query}\n\n"
40
+ f"Informazioni sintetizzate da Wikipedia:\n{wiki_summary}\n\n"
41
+ f"Informazioni sintetizzate da DuckDuckGo:\n{duck_summary}\n\n"
42
+ "Fornisci una risposta sintetica e chiara."
43
+ )
44
+
45
+ # Verifica tipo modello e chiama generate con argomento corretto
46
+ if isinstance(model, InferenceClientModel):
47
+ messages = [
48
+ {"role": "system", "content": "Sei un assistente utile."},
49
+ {"role": "user", "content": prompt}
50
+ ]
51
+ response = model.generate(messages=messages)
52
+ else:
53
+ response = model.generate(prompt=prompt, max_new_tokens=200)
54
+
55
+ # Controllo per risposte vuote
56
+ if not response.strip():
57
+ response = "Non ho capito la domanda, per favore riprova."
58
+
59
+ memory[query] = response
60
+ save_memory(memory)
61
+
62
+ return response
63
+
64
+ except Exception as e:
65
+ return f"Errore durante l'esecuzione dell'agent: {str(e)}"