Spaces:
Sleeping
Sleeping
| """ | |
| Custom tools for the GAIA Agent | |
| """ | |
| import requests | |
| from smolagents import tool | |
| from markdownify import markdownify as md | |
| def smart_visit(url: str) -> str: | |
| """ | |
| Visits a webpage and returns its content converted to Markdown. | |
| Essential for Wikipedia, documentation, or any web content. | |
| Args: | |
| url: The URL of the page to visit. | |
| Returns: | |
| str: Webpage content in Markdown format (max 25000 chars) | |
| """ | |
| try: | |
| headers = { | |
| 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', | |
| 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', | |
| 'Accept-Language': 'en-US,en;q=0.5', | |
| 'Referer': 'https://www.google.com/' | |
| } | |
| response = requests.get(url, headers=headers, timeout=25) | |
| response.raise_for_status() | |
| content = md(response.text) | |
| return content[:25000] | |
| except Exception as e: | |
| return f"Error visiting {url}: {str(e)}" | |
| def get_youtube_info(video_url: str) -> str: | |
| """ | |
| Gets information about a YouTube video including title, description, | |
| and attempts to find transcripts or related information. | |
| Args: | |
| video_url: YouTube video URL (e.g., https://www.youtube.com/watch?v=VIDEO_ID) | |
| Returns: | |
| str: Video information and transcript search strategy | |
| """ | |
| try: | |
| if "youtube.com" in video_url: | |
| video_id = video_url.split("v=")[1].split("&")[0] if "v=" in video_url else "" | |
| elif "youtu.be" in video_url: | |
| video_id = video_url.split("/")[-1].split("?")[0] | |
| else: | |
| return "Invalid YouTube URL" | |
| if not video_id: | |
| return "Could not extract video ID" | |
| return f"""Video ID: {video_id} | |
| STRATEGY TO ANSWER: | |
| 1. Search for '{video_id}' + keywords from the question on DuckDuckGo | |
| 2. Look for transcripts, comments, or discussion forums about this video | |
| 3. The video URL is: {video_url} | |
| Note: Direct video playback is not available. Search online for transcripts or summaries.""" | |
| except Exception as e: | |
| return f"Error processing YouTube video: {str(e)}" | |
| def wikipedia_search(query: str) -> str: | |
| """ | |
| Searches Wikipedia for a query and returns the page content in Markdown format. | |
| Args: | |
| query: The search term or topic to look up on Wikipedia | |
| Returns: | |
| str: The Wikipedia page content in Markdown format, or an error message | |
| """ | |
| try: | |
| import urllib.parse | |
| search_url = f"https://en.wikipedia.org/w/index.php?search={urllib.parse.quote_plus(query)}&title=Special%3ASearch&go=Go" | |
| return smart_visit.forward(search_url) | |
| except Exception as e: | |
| return f"Error searching Wikipedia: {e}" | |