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)}"