Spaces:
Runtime error
Runtime error
# Copyright (c) OpenMMLab. All rights reserved. | |
import os | |
import sys | |
import requests | |
try: | |
SERPER_API_KEY = os.environ['SERPER_API_KEY'] | |
except Exception: | |
print('Please obtain the `SERPER_API_KEY` from https://serper.dev and ' | |
'set it using `export SERPER_API_KEY=xxx`.') | |
sys.exit(1) | |
def parse_results(results, k=10): | |
snippets = [] | |
for result in results['organic'][:k]: | |
if 'snippet' in result: | |
snippets.append(result['snippet']) | |
for attribute, value in result.get('attributes', {}).items(): | |
snippets.append(f'{attribute}: {value}.') | |
return snippets | |
def search(api_key, search_term, **kwargs): | |
headers = { | |
'X-API-KEY': api_key, | |
'Content-Type': 'application/json', | |
} | |
params = { | |
'q': search_term, | |
**{key: value | |
for key, value in kwargs.items() if value is not None}, | |
} | |
try: | |
response = requests.post( | |
'https://google.serper.dev/search', | |
headers=headers, | |
params=params, | |
timeout=5) | |
except Exception as e: | |
return -1, str(e) | |
return response.status_code, response.json() | |
def Search(q, k=10): | |
status_code, response = search(SERPER_API_KEY, q) | |
if status_code != 200: | |
ret = 'None\n' | |
else: | |
text = parse_results(response, k=k) | |
ret = '' | |
for idx, res in enumerate(text): | |
ret += f"<|{idx+1}|>: '{res}'\n" | |
return ret | |