Spaces:
Sleeping
Sleeping
import requests | |
from duckduckgo_search import DDGS | |
from langchain_core.tools import tool | |
def reverse_text(input: str) -> str: | |
"""Reverse the characters in a text or string. | |
Args: | |
query: The text or string to reverse. | |
""" | |
return input[::-1] | |
def web_search(query: str) -> str: | |
"""Perform a web search using DuckDuckGo and return the top 3 summarized results. | |
Args: | |
query: The search query to look up. | |
""" | |
try: | |
results = [] | |
with DDGS() as ddgs: | |
for r in ddgs.text(query, max_results=3): | |
title = r.get("title", "") | |
snippet = r.get("body", "") | |
url = r.get("href", "") | |
if title and snippet: | |
results.append(f"{title}: {snippet} (URL: {url})") | |
if not results: | |
return "No results found." | |
return "\n\n---\n\n".join(results) | |
except Exception as e: | |
return f"Web search error: {e}" | |
def calculate(expression: str) -> str: | |
"""Evaluate a simple math expression and return the result. | |
Args: | |
expression: A string containing the math expression to evaluate. | |
""" | |
try: | |
allowed_names = { | |
"abs": abs, | |
"round": round, | |
"min": min, | |
"max": max, | |
"pow": pow, | |
} | |
result = eval(expression, {"__builtins__": None}, allowed_names) | |
return str(result) | |
except Exception as e: | |
return f"Calculation error: {e}" | |
def wikipedia_summary(query: str) -> str: | |
"""Retrieve a summary of a topic from Wikipedia. | |
Args: | |
query: The subject or topic to summarize. | |
""" | |
try: | |
response = requests.get( | |
f"https://en.wikipedia.org/api/rest_v1/page/summary/{query}", timeout=10 | |
) | |
response.raise_for_status() | |
data = response.json() | |
return data.get("extract", "No summary found.") | |
except Exception as e: | |
return f"Wikipedia error: {e}" | |
def define_term(term: str) -> str: | |
"""Provide a dictionary-style definition of a given term using an online API. | |
Args: | |
term: The word or term to define. | |
""" | |
try: | |
response = requests.get( | |
f"https://api.dictionaryapi.dev/api/v2/entries/en/{term}", timeout=10 | |
) | |
response.raise_for_status() | |
data = response.json() | |
meanings = data[0].get("meanings", []) | |
if meanings: | |
defs = meanings[0].get("definitions", []) | |
if defs: | |
return defs[0].get("definition", "Definition not found.") | |
return "Definition not found." | |
except Exception as e: | |
return f"Definition error: {e}" | |
# List of tools to register with your agent | |
TOOLS = [web_search, calculate, wikipedia_summary, define_term, reverse_text] | |