Spaces:
Running
Running
Download tools/search_engine.py from Leon4gr45/openoperator: direct link, hf CLI and curl.
- Browser
- Download file 1.2 kB
-
https://huggingface.co/spaces/Leon4gr45/openoperator/resolve/main/tools/search_engine.py
- Command line
-
hf download hf://spaces/Leon4gr45/openoperator/tools/search_engine.py
-
curl -L -o search_engine.py https://huggingface.co/spaces/Leon4gr45/openoperator/resolve/main/tools/search_engine.py
1.2 kB
| import os | |
| import asyncio | |
| from helpers import dotenv, perplexity_search, duckduckgo_search | |
| from helpers.tool import Tool, Response | |
| from helpers.print_style import PrintStyle | |
| from helpers.errors import handle_error | |
| from helpers.searxng import search as searxng | |
| SEARCH_ENGINE_RESULTS = 10 | |
| class SearchEngine(Tool): | |
| async def execute(self, query="", **kwargs): | |
| searxng_result = await self.searxng_search(query) | |
| await self.agent.handle_intervention( | |
| searxng_result | |
| ) # wait for intervention and handle it, if paused | |
| return Response(message=searxng_result, break_loop=False) | |
| async def searxng_search(self, question): | |
| results = await searxng(question) | |
| return self.format_result_searxng(results, "Search Engine") | |
| def format_result_searxng(self, result, source): | |
| if isinstance(result, Exception): | |
| handle_error(result) | |
| return f"{source} search failed: {str(result)}" | |
| outputs = [] | |
| for item in (result or {}).get("results", []): | |
| outputs.append(f"{item['title']}\n{item['url']}\n{item['content']}") | |
| return "\n\n".join(outputs[:SEARCH_ENGINE_RESULTS]).strip() | |