eugpal4's picture
Create main.py
6bb1177 verified
raw
history blame
2.25 kB
import os
import time
import json
import requests
from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, InferenceClientModel
from tools import duckduckgo_search, wikipedia_search, summarize_text, load_memory, save_memory
tokens = os.environ.get('HUGGINGFACEHUB_API_TOKEN')
print(tokens)
token = os.getenv('HF_HOME/token')
#Token di Autorizzazione (verifica ambiente)
token = 'HUGGINGFACEHUB_API_TOKEN'
if not token:
raise ValueError("Imposta la variabile d'ambiente HF_TOKEN")
# Scegli il modello
model = HfApiModel(model_id="google/flan-t5-base", token=token)
# Strumenti
tools = [DuckDuckGoSearchTool(), wikipedia_search]
agent = CodeAgent(
tools=tools,
model=model,
additional_authorized_imports=["requests", "bs4"]
)
def run_agent(query: str) -> str:
try:
memory = load_memory()
if query in memory:
return memory[query]
# Ricerca e sintesi
duck_text = duckduckgo_search(query, max_results=3)
wiki_text = wikipedia_search(query)
duck_summary = summarize_text(duck_text, max_length=150)
wiki_summary = summarize_text(wiki_text, max_length=150)
prompt = (
f"Domanda: {query}\n\n"
f"Informazioni sintetizzate da Wikipedia:\n{wiki_summary}\n\n"
f"Informazioni sintetizzate da DuckDuckGo:\n{duck_summary}\n\n"
"Fornisci una risposta sintetica e chiara."
)
# Verifica tipo modello e chiama generate con argomento corretto
if isinstance(model, InferenceClientModel):
messages = [
{"role": "system", "content": "Sei un assistente utile."},
{"role": "user", "content": prompt}
]
response = model.generate(messages=messages)
else:
response = model.generate(prompt=prompt, max_new_tokens=200)
# Controllo per risposte vuote
if not response.strip():
response = "Non ho capito la domanda, per favore riprova."
memory[query] = response
save_memory(memory)
return response
except Exception as e:
return f"Errore durante l'esecuzione dell'agent: {str(e)}"