import requests import os from langchain.tools import Tool from dotenv import load_dotenv load_dotenv() SERPER_API_KEY = os.getenv("SERPER_API_KEY") SERPER_API_URL = "https://google.serper.dev/search" def web_search(query: str) -> str: if not SERPER_API_KEY: return "[Error: SERPER_API_KEY is not set]" headers = {"X-API-KEY": SERPER_API_KEY, "Content-Type": "application/json"} payload = {"q": query, "num": 3} try: response = requests.post(SERPER_API_URL, headers=headers, json=payload, timeout=10) response.raise_for_status() data = response.json() if not data.get("organic"): return "No relevant results found." results = [] for item in data["organic"]: snippet = item.get("snippet") if snippet: results.append(snippet) return "\n".join(results[:3]) if results else "No snippet found." except requests.exceptions.Timeout: return "[Error: Request timed out.]" except requests.exceptions.RequestException as e: return f"[Error: {e}]" web_search_tool = Tool.from_function( name="web_search", description="Search the web for information using Google Search.", func=web_search )