from langchain.tools import tool from langchain_community.document_loaders import WikipediaLoader @tool def multiply(a: float, b: float) -> float: """ Multiplie deux nombres. :param a: Le premier nombre à multiplier. :param b: Le deuxième nombre à multiplier. :return: Le produit de a et b. """ return a * b @tool def substract(a: float, b: float) -> float: """ Soustrait b de a. :param a: Le nombre duquel soustraire. :param b: Le nombre à soustraire. :return: La différence entre a et b. """ return a - b @tool def add(a: float, b: float) -> float: """ Additionne deux nombres. :param a: Le premier nombre. :param b: Le deuxième nombre. :return: La somme de a et b. """ return a + b @tool def divide(a: float, b: float) -> float: """ Divise a par b. :param a: Le numérateur. :param b: Le dénominateur. :return: Le résultat de la division de a par b. :raises ZeroDivisionError: Si b est égal à zéro. """ return a / b @tool def wiki_search(query: str) -> str: """Search Wikipedia for a query and return maximum 2 results. Args: query: The search query.""" search_docs = WikipediaLoader(query=query, load_max_docs=2).load() formatted_search_docs = "\n\n---\n\n".join( [ f'\n{doc.page_content}\n' for doc in search_docs ]) return {"wiki_results": formatted_search_docs}