|
|
|
@@ -28,6 +28,9 @@ class BingSearchTool(BuiltinTool): |
|
|
|
if not query: |
|
|
|
raise Exception('query is required') |
|
|
|
|
|
|
|
limit = min(tool_parameters.get('limit', 5), 10) |
|
|
|
result_type = tool_parameters.get('result_type', 'text') or 'text' |
|
|
|
|
|
|
|
market = tool_parameters.get('market', 'US') |
|
|
|
lang = tool_parameters.get('language', 'en') |
|
|
|
|
|
|
|
@@ -49,13 +52,24 @@ class BingSearchTool(BuiltinTool): |
|
|
|
raise Exception(f'Error {response.status_code}: {response.text}') |
|
|
|
|
|
|
|
response = response.json() |
|
|
|
# get the first 5 results |
|
|
|
search_results = response['webPages']['value'][:5] |
|
|
|
results = [] |
|
|
|
for result in search_results: |
|
|
|
results.append(self.create_text_message( |
|
|
|
text=f'{result["name"]}: {result["url"]}' |
|
|
|
)) |
|
|
|
|
|
|
|
return results |
|
|
|
|
|
|
|
search_results = response['webPages']['value'][:limit] |
|
|
|
|
|
|
|
if result_type == 'link': |
|
|
|
results = [] |
|
|
|
for result in search_results: |
|
|
|
results.append(self.create_text_message( |
|
|
|
text=f'{result["name"]}: {result["url"]}' |
|
|
|
)) |
|
|
|
|
|
|
|
return results |
|
|
|
else: |
|
|
|
# construct text |
|
|
|
text = '' |
|
|
|
for i, result in enumerate(search_results): |
|
|
|
text += f'{i+1}: {result["name"]} - {result["snippet"]}\n' |
|
|
|
|
|
|
|
text += '\n\nRelated Searches:\n' |
|
|
|
for related in response['relatedSearches']['value']: |
|
|
|
text += f'{related["displayText"]} - {related["webSearchUrl"]}\n' |
|
|
|
|
|
|
|
return self.create_text_message(text=self.summary(user_id=user_id, content=text)) |