agents-final-assessment / tools /web_searcher.py
ana-35's picture
improved tools
64188e4
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
)