|
import json |
|
import os |
|
|
|
import requests |
|
from langchain.tools import tool |
|
|
|
|
|
class SearchTools(): |
|
@tool("Search the internet") |
|
def search_internet(query): |
|
"""Useful to search the internet |
|
about a a given topic and return relevant results""" |
|
top_result_to_return = 4 |
|
url = "https://google.serper.dev/search" |
|
payload = json.dumps({"q": query}) |
|
headers = { |
|
'X-API-KEY': os.environ['SERPER_API_KEY'], |
|
'content-type': 'application/json' |
|
} |
|
response = requests.request("POST", url, headers=headers, data=payload) |
|
results = response.json()['organic'] |
|
string = [] |
|
for result in results[:top_result_to_return]: |
|
try: |
|
string.append('\n'.join([ |
|
f"Title: {result['title']}", f"Link: {result['link']}", |
|
f"Snippet: {result['snippet']}", "\n-----------------" |
|
])) |
|
except KeyError: |
|
next |
|
|
|
return '\n'.join(string) |
|
|
|
@tool("Search news on the internet") |
|
def search_news(query): |
|
"""Useful to search news about a company, stock or any other |
|
topic and return relevant results""""" |
|
top_result_to_return = 4 |
|
url = "https://google.serper.dev/news" |
|
payload = json.dumps({"q": query}) |
|
headers = { |
|
'X-API-KEY': os.environ['SERPER_API_KEY'], |
|
'content-type': 'application/json' |
|
} |
|
response = requests.request("POST", url, headers=headers, data=payload) |
|
results = response.json()['news'] |
|
string = [] |
|
for result in results[:top_result_to_return]: |
|
try: |
|
string.append('\n'.join([ |
|
f"Title: {result['title']}", f"Link: {result['link']}", |
|
f"Snippet: {result['snippet']}", "\n-----------------" |
|
])) |
|
except KeyError: |
|
next |
|
|
|
return '\n'.join(string) |
|
|