first_ai_agent / tools /google_search.py
gerinsp's picture
update
f245476
Raw
History Blame Contribute Delete
1.35 kB
import os
from smolagents.tools import Tool
from serpapi import GoogleSearch
from dotenv import load_dotenv
class GoogleSearchTool(Tool):
name = "google_search"
description = "Perform a Google search and return the top 5 results as a string."
inputs = {'query': {'type': 'string', 'description': 'The search query to perform.'}}
output_type = "string"
def __init__(self):
super().__init__()
load_dotenv()
self.api_key = os.getenv("SERPAPI_API_KEY")
if not self.api_key:
raise ValueError("SerpAPI key is missing. Set 'SERPAPI_API_KEY' in environment variables.")
def forward(self, query: str) -> str:
params = {
"q": query,
"api_key": self.api_key,
"num": 5
}
search = GoogleSearch(params)
results = search.get_dict().get("organic_results", [])
if not results:
return f"No search results found for '{query}'."
formatted_results = []
for idx, result in enumerate(results):
title = result.get("title", "No title")
link = result.get("link", "No link")
snippet = result.get("snippet", "No description available.")
formatted_results.append(f"{idx+1}. {title}\n {snippet}\n {link}")
return "\n\n".join(formatted_results)