| from smolagents import Tool |
| import requests |
| import os |
|
|
|
|
| class SerperSearchTool(Tool): |
| name = "serper_search" |
| description = "Searches the web for a given query and returns the top result's title and URL." |
| inputs = { |
| "query": { |
| "type": "string", |
| "description": "The search query to look up on the web." |
| } |
| } |
| output_type = "string" |
|
|
| def forward(self, query: str) -> str: |
| headers = { |
| "X-API-KEY": os.environ['SERPER_API_KEY'], |
| "Content-Type": "application/json" |
| } |
| payload = { |
| "q": query |
| } |
|
|
| response = requests.post("https://google.serper.dev/search", headers=headers, json=payload) |
| data = response.json() |
|
|
| if "organic" in data and data["organic"]: |
| top = data["organic"][0] |
| return f"{top['title']}: {top['link']}" |
| return "No relevant results found." |