helloparthshah's picture
removing some tools
0c9f199
import importlib
__all__ = ['WikipediaTool']
class WikipediaTool():
dependencies = ["requests==2.32.3", "beautifulsoup4==4.13.3"]
inputSchema = {
"name": "WikipediaTool",
"description": "Searches Wikipedia for a given question and returns a short summary.",
"parameters": {
"type": "object",
"properties": {
"question": {
"type": "string",
"description": "The topic or question to search on Wikipedia.",
}
},
"required": ["question"],
}
}
def run(self, **kwargs):
question = kwargs.get("question")
if not question:
return {
"status": "error",
"message": "Missing required parameter: 'question'",
"output": None
}
print(f"Searching Wikipedia for: {question}")
requests = importlib.import_module("requests")
bs4 = importlib.import_module("bs4")
BeautifulSoup = bs4.BeautifulSoup
search_url = "https://en.wikipedia.org/w/api.php"
search_params = {
"action": "query",
"format": "json",
"list": "search",
"srsearch": question,
"srlimit": 1,
}
try:
response = requests.get(search_url, params=search_params)
if response.status_code != 200:
return {
"status": "error",
"message": "Wikipedia API request failed.",
"output": None,
}
data = response.json()
search_results = data.get("query", {}).get("search", [])
if not search_results:
return {
"status": "error",
"message": "No results found on Wikipedia.",
"output": None,
}
top_result = search_results[0]["title"]
page_url = f"https://en.wikipedia.org/wiki/{top_result.replace(' ', '_')}"
print(f"Fetching full content from: {page_url}")
html_url = f"https://en.wikipedia.org/api/rest_v1/page/html/{top_result.replace(' ', '_')}"
html_response = requests.get(html_url)
if html_response.status_code != 200:
return {
"status": "error",
"message": "Failed to fetch article content.",
"output": None,
}
soup = BeautifulSoup(html_response.text, "html.parser")
paragraphs = [p.get_text() for p in soup.find_all("p") if p.get_text()]
full_text = " ".join(paragraphs)
summary = " ".join(full_text.split(". ")[:5]) # First 5 sentences
output_text = f"**{top_result}**\n{summary}...\n[Read more]({page_url})"
return {
"status": "success",
"message": "Wikipedia article summary retrieved successfully.",
"output": output_text,
}
except Exception as e:
return {
"status": "error",
"message": f"Exception occurred: {str(e)}",
"output": None,
}