Spaces:
Running
Running
| import importlib | |
| __all__ = ['GoogleSearchTool'] | |
| class GoogleSearchTool(): | |
| dependencies = ["googlesearch-python==1.3.0"] | |
| inputSchema = { | |
| "name": "GoogleSearchTool", | |
| "description": "Provides a list of URLs from google search results based on a query string. Use the urls then to get the content of the page.", | |
| "parameters": { | |
| "type": "object", | |
| "properties": { | |
| "website": { | |
| "type": "string", | |
| "description": "The website domain to search in (e.g., 'stackoverflow.com').", | |
| }, | |
| "query": { | |
| "type": "string", | |
| "description": "The query string to search for on the website.", | |
| } | |
| }, | |
| "required": ["query"], | |
| } | |
| } | |
| def run(self, **kwargs): | |
| print("Running web search") | |
| website = kwargs.get("website") | |
| query = kwargs.get("query") | |
| if not query: | |
| return { | |
| "status": "error", | |
| "message": "Missing required parameters: 'query'", | |
| "output": None | |
| } | |
| search_query = query | |
| if website: | |
| search_query = f"site:{website} {query}" | |
| results = [] | |
| googlesearch = importlib.import_module("googlesearch") | |
| try: | |
| for result in googlesearch.search(search_query, num_results=10): | |
| if "/search?num=" not in result: | |
| results.append(result) | |
| return { | |
| "status": "success", | |
| "message": "Search completed successfully", | |
| "output": results, | |
| } | |
| except Exception as e: | |
| return { | |
| "status": "error", | |
| "message": f"Search failed: {str(e)}", | |
| "output": None, | |
| } | |