import os from langchain.tools import Tool from serpapi import GoogleSearch from dotenv import load_dotenv # Carica le variabili d'ambiente se hai la chiave API in un file .env load_dotenv() SERPAPI_API_KEY = os.getenv("SERPAPI_API_KEY") def _serpapi_search(query: str, num_results: int = 5, gl: str = "it", hl: str = "it") -> str: """ Esegue una ricerca sul web utilizzando SerpAPI con Google Search e restituisce i risultati formattati. Questo tool ha un costo elevato, pertanto sono da preferire altri tool se disponibili. Richiamare questo tool soltanto in caso gli altri tool non siano stati soddisfacenti. Args: query: La query di ricerca. num_results: Il numero di risultati da restituire. gl: Codice del paese per la geolocalizzazione dei risultati (es. "it" per Italia). hl: Codice della lingua per i risultati della ricerca (es. "it" per Italiano). Returns: Una stringa formattata con i risultati della ricerca o un messaggio di errore. """ if not SERPAPI_API_KEY: return "Errore: La variabile d'ambiente SERPAPI_API_KEY non รจ impostata." params = { "engine": "google", "q": query, "api_key": SERPAPI_API_KEY, "num": num_results, "gl": gl, "hl": hl } search = GoogleSearch(params) results = search.get_dict() organic_results = results.get("organic_results", []) if not organic_results: return f"Nessun risultato trovato per '{query}'." formatted_results = "\n\n".join([f"Title: {res.get('title')}\nLink: {res.get('link')}\nSnippet: {res.get('snippet')}" for res in organic_results]) return formatted_results serpapi_search_tool = Tool( name="serpapi_web_search", func=_serpapi_search, description="Esegue una ricerca sul web utilizzando SerpAPI (Google Search) per trovare informazioni aggiornate. L'input dovrebbe essere la query di ricerca." \ " Questo tool ha un costo elevato, pertanto sono da preferire altri tool se disponibili. \ Richiamare questo tool soltanto in caso gli altri tool non siano stati soddisfacenti." )