File size: 1,258 Bytes
00dd226
 
5c082e6
64188e4
00dd226
 
64188e4
 
 
00dd226
 
64188e4
 
ed0039a
64188e4
 
ed0039a
00dd226
64188e4
00dd226
 
ed0039a
64188e4
 
 
5c082e6
64188e4
 
 
 
 
 
 
 
 
 
 
00dd226
 
 
64188e4
00dd226
 
ed0039a
d21c232
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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
)