Spaces:
Sleeping
Sleeping
| from typing import List | |
| import requests | |
| from bs4 import BeautifulSoup | |
| from langchain_core.tools import tool | |
| from langchain_community.retrievers import TavilySearchAPIRetriever | |
| def search_tool(query: str) -> List[dict]: | |
| """Searches the web for a given query using Tavily and returns a list of search results.""" | |
| try: | |
| retriever = TavilySearchAPIRetriever(k=5) | |
| results = retriever.invoke(query) | |
| return [{"url": doc.metadata["source"], "content": doc.page_content} for doc in results] | |
| except Exception as e: | |
| # Return an empty list or handle the error as appropriate | |
| return | |
| def scrape_tool(url: str) -> str: | |
| """Scrapes the text content of a given URL.""" | |
| try: | |
| response = requests.get(url, timeout=10, headers={'User-Agent': 'Mozilla/5.0'}) | |
| response.raise_for_status() | |
| soup = BeautifulSoup(response.content, "lxml") | |
| for script_or_style in soup(["script", "style"]): | |
| script_or_style.decompose() | |
| text = "\n".join(chunk for chunk in (phrase.strip() for line in (line.strip() for line in soup.get_text().splitlines()) for phrase in line.split(" ")) if chunk) | |
| return text if text else "No content found." | |
| except requests.RequestException as e: | |
| return f"Error scraping URL {url}: {e}" |