A-Mistral-Agent / src /tools /web_search.py
mriusero
feat: 55 pts version
0167b87
from src.utils.tooling import tool
@tool
def web_search(query: str, max_results: int = 3, timeout: int = 10) -> str:
"""
Performs a web search based on the query and returns the top search results.
Args:
query (str): The search query to perform (Warning: have to be concise and precise).
max_results (int, optional): The maximum number of results to return. Defaults to 10.
timeout (int, optional): Timeout for the search request in seconds. Defaults to 10.
region (str, optional): Region code for the search. Defaults to 'wt-wt' (worldwide).
"""
try:
from duckduckgo_search import DDGS
except ImportError as e:
raise ImportError(
"You must install package `duckduckgo_search` to run this tool: for instance run `pip install duckduckgo-search`."
) from e
ddgs = DDGS(timeout=timeout)
results = ddgs.text(query, max_results=max_results)
if len(results) == 0:
raise Exception("No results found! Try a less restrictive/shorter query.")
postprocessed_results = [f"[{result['title']}]({result['href']})\n{result['body']}" for result in results]
return "## Search Results\n\n" + "\n\n".join(postprocessed_results)