GAIA_Agent / gaia_tools.py
ArturoNereu's picture
added local version of the gradio ui
48d443e
from smolagents import PythonInterpreterTool, tool
import requests
import wikipedia
@tool
def RunPythonFileTool(file_path: str) -> str:
"""
Executes a Python script loaded from the specified path using the PythonInterpreterTool.
Args:
file_path (str): The full path to the python (.py) file containing the Python code.
Returns:
str: The output produced by the code execution, or an error code if it fails.
"""
try:
with open(file_path, "r") as f:
code = f.read()
interpreter = PythonInterpreterTool()
result = interpreter.run({"code": code})
return result.get("output", "No output returned.")
except Exception as e:
return f"Execution failed: {e}"
@tool
def WikipediaSearchTool(query: str) -> str:
"""
Searches Wikipedia and returns page content for a given query.
Args:
query (str): The search term or page title to look up on Wikipedia
Returns:
str: The Wikipedia page content, or an error message if not found
"""
try:
page = wikipedia.page(query)
return f"Title: {page.title}\nURL: {page.url}\nContent: {page.content[:2000]}..."
except wikipedia.exceptions.DisambiguationError as e:
try:
page = wikipedia.page(e.options[0])
return f"Title: {page.title}\nURL: {page.url}\nContent: {page.content[:2000]}..."
except:
return f"Multiple pages found: {e.options[:5]}"
except wikipedia.exceptions.PageError:
try:
search_results = wikipedia.search(query, results=3)
if search_results:
page = wikipedia.page(search_results[0])
return f"Title: {page.title}\nURL: {page.url}\nContent: {page.content[:2000]}..."
else:
return f"No Wikipedia pages found for: {query}"
except:
return f"No Wikipedia pages found for: {query}"
except Exception as e:
return f"Wikipedia search failed: {e}"
@tool
def ReverseTextTool(text: str) -> str:
"""
Reverses a text string character by character.
Args:
text (str): The text to reverse
Returns:
str: The reversed text
"""
return text[::-1]