Spaces:
Runtime error
Runtime error
import re | |
from smolagents.tools import Tool | |
class FetchNewsTool(Tool): | |
""" | |
A tool that searches for the latest English news using DuckDuckGo. | |
""" | |
name = "fetch_news" | |
description = "Finds the latest English news using DuckDuckGo" | |
inputs = {} | |
output_type = "string" | |
def __init__(self, max_results=5, **kwargs): | |
super().__init__() | |
self.max_results = max_results | |
try: | |
from duckduckgo_search import DDGS | |
except ImportError as e: | |
raise ImportError( | |
"You must install package `duckduckgo_search` to run this tool: " | |
"for instance run `pip install duckduckgo-search`." | |
) from e | |
# Create a DuckDuckGoSearch instance with any kwargs needed | |
self.ddgs = DDGS(**kwargs) | |
def forward(self) -> str: | |
""" | |
1) Perform a DuckDuckGo search on 'latest news'. | |
2) Format each result with a "Headline #: ..." prefix. | |
3) Return all the headlines as one string, separated by newlines. | |
""" | |
results = self.ddgs.news("latest news", max_results=self.max_results) | |
if not results: | |
return "No results found, or unable to retrieve news at this time." | |
headlines = [] | |
for i, item in enumerate(results, start=1): | |
snippet = f"{item['body']}" | |
headlines.append(snippet) | |
return " ".join(headlines) | |
# Example usage: | |
if __name__ == "__main__": | |
news = FetchNewsTool() | |
print(news.forward()) | |