Spaces:
Running
Running
| import logging | |
| from ddgs import DDGS # type: ignore | |
| logger= logging.getLogger(__name__) | |
| def search_web(query: str, max_results: int=5) -> str: | |
| """ | |
| Search the web using DuckDuckGo and return a formatted string of results. | |
| Useful for looking up real-time information, recent news, or technical questions. | |
| """ | |
| logger.info(f"Executing web search for query: '{query}'") | |
| try: | |
| with DDGS() as ddgs: | |
| results= list(ddgs.text(query, max_results= max_results)) | |
| if not results: | |
| return f"No search results found for query: '{query}'" | |
| formatted_results=[] | |
| for i, r in enumerate(results, 1): | |
| title= r.get("title", "No Title") | |
| href= r.get("href", "No Link") | |
| body= r.get("body", "No Description") | |
| formatted_results.append( | |
| f"[{i}] {title}\n" | |
| f"URL: {href}\n" | |
| f"Snippet: {body}\n" | |
| ) | |
| return "\n".join(formatted_results) | |
| except Exception as e: | |
| logger.error(f"Error executing web search: {str(e)}") | |
| return f"Failed to execute search due to error: {str(e)}" | |
| if __name__ == "__main__": | |
| print(search_web("Nvidia stock news", max_results= 2)) |