Spaces:
Sleeping
Sleeping
| 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 | |
| ) | |