Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion demogpt_agenthub/tools/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@
from demogpt_agenthub.tools.wikidata import WikiDataTool
from demogpt_agenthub.tools.pubmed import PubmedTool
from demogpt_agenthub.tools.weather import WeatherTool # requires OPENWEATHERMAP_API_KEY
from demogpt_agenthub.tools.yolo import YoloTool
from demogpt_agenthub.tools.yolo import YoloTool
from demogpt_agenthub.tools.bocha_websearch_tool import BochaWebsearchTool
35 changes: 35 additions & 0 deletions demogpt_agenthub/tools/bocha_websearch_tool.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
from demogpt_agenthub.tools import BaseTool
import requests

class BochaWebsearchTool(BaseTool):
def __init__(self, BOCHA_API_KEY):
self.name = "bocha_websearch_tool"
self.description = "Perform web search using the Bocha Web Search API."
self.BOCHA_API_KEY = BOCHA_API_KEY
super().__init__()

def run(self, query):
url = 'https://api.bochaai.com/v1/web-search' # Fixed trailing whitespace
headers = {
'Authorization': f'Bearer {self.BOCHA_API_KEY}',
'Content-Type': 'application/json'
}
data = {
"query": query,
}

response = requests.post(url, headers=headers, json=data)

if response.status_code == 200:
json_response = response.json()
print(json_response)
try:
if json_response["code"] != 200 or not json_response["data"]:
return f"Search API request failed, reason: {json_response.get('msg', 'unknown error')}"

webpages = json_response["data"]["webPages"]["value"]
return webpages
except Exception as e:
return f"Search API request failed, reason: failed to parse search results - {str(e)}"
else:
return f"Search API request failed, status code: {response.status_code}, error message: {response.text}"