Spaces:
Runtime error
Runtime error
# File "/home/user/app/research.py", line 1, in <module> | |
# from crewai_tools import BaseTool | |
# ModuleNotFoundError: No module named 'crewai_tools' | |
from crewai_tools import BaseTool | |
from exa_py import Exa | |
import os | |
from datetime import datetime, timedelta | |
class SearchAndContents(BaseTool): | |
name: str = "Search and Contents Tool" | |
description: str = ( | |
"Searches the web based on a search query for the latest results. Results are only from the last week. Uses the Exa API. This also returns the contents of the search results." | |
) | |
def _run(self, search_query: str) -> str: | |
exa = Exa(api_key=os.getenv("EXA_API_KEY")) | |
one_week_ago = datetime.now() - timedelta(days=7) | |
date_cutoff = one_week_ago.strftime("%Y-%m-%d") | |
search_results = exa.search_and_contents( | |
query=search_query, | |
use_autoprompt=True, | |
start_published_date=date_cutoff, | |
text={"include_html_tags": False, "max_characters": 8000}, | |
) | |
return search_results | |
class FindSimilar(BaseTool): | |
name: str = "Find Similar Tool" | |
description: str = ( | |
"Searches for similar articles to a given article using the Exa API. Takes in a URL of the article" | |
) | |
def _run(self, article_url: str) -> str: | |
one_week_ago = datetime.now() - timedelta(days=7) | |
date_cutoff = one_week_ago.strftime("%Y-%m-%d") | |
exa = Exa(api_key=os.getenv("EXA_API_KEY")) | |
search_results = exa.find_similar( | |
url=article_url, start_published_date=date_cutoff | |
) | |
return search_results | |
class GetContents(BaseTool): | |
name: str = "Get Contents Tool" | |
description: str = "Gets the contents of a specific article using the Exa API. Takes in the ID of the article in a list, like this: ['https://www.cnbc.com/2024/04/18/my-news-story']." | |
def _run(self, article_ids: str) -> str: | |
exa = Exa(api_key=os.getenv("EXA_API_KEY")) | |
contents = exa.get_contents(article_ids) | |
return contents | |