FrancescaScipioni's picture
added basic math functions as tools
97bdee5 verified
raw
history blame
2.89 kB
from langchain.tools import Tool
import math
## ----- TOOLS DEFINITION ----- ##
# ** Math Tools ** #
def add_numbers(a: float, b: float) -> float:
"""
Add two floating-point numbers.
Args:
a (float): The first number.
b (float): The second number.
Returns:
float: The result of the addition.
"""
return a + b
def subtract_numbers(a: float, b: float) -> float:
"""
Subtract the second floating-point number from the first.
Args:
a (float): The first number.
b (float): The second number.
Returns:
float: The result of the subtraction.
"""
return a - b
def multiply_numbers(a: float, b: float) -> float:
"""
Multiply two floating-point numbers.
Args:
a (float): The first number.
b (float): The second number.
Returns:
float: The result of the multiplication.
"""
return a * b
def divide_numbers(a: float, b: float) -> float:
"""
Divide the first floating-point number by the second.
Args:
a (float): The numerator.
b (float): The denominator.
Returns:
float: The result of the division.
Raises:
ValueError: If division by zero is attempted.
"""
if b == 0:
raise ValueError("Division by zero")
return a / b
def power(a: float, b: float) -> float:
"""
Raise the first number to the power of the second.
Args:
a (float): The base.
b (float): The exponent.
Returns:
float: The result of the exponentiation.
"""
return a ** b
def modulus(a: float, b: float) -> float:
"""
Compute the modulus (remainder) of the division of a by b.
Args:
a (float): The dividend.
b (float): The divisor.
Returns:
float: The remainder after division.
"""
return a % b
def square_root(a: float) -> float:
"""
Compute the square root of a number.
Args:
a (float): The number.
Returns:
float: The square root.
Raises:
ValueError: If a is negative.
"""
if a < 0:
raise ValueError("Cannot compute square root of a negative number")
return math.sqrt(a)
def logarithm(a: float, base: float = math.e) -> float:
"""
Compute the logarithm of a number with a specified base.
Args:
a (float): The number.
base (float, optional): The logarithmic base (default is natural log).
Returns:
float: The logarithm.
Raises:
ValueError: If a or base is not positive.
"""
if a <= 0 or base <= 0:
raise ValueError("Logarithm arguments must be positive")
return math.log(a, base)
## ----- TOOLS LIST ----- ##
tools = [
add_numbers,
subtract_numbers,
multiply_numbers,
divide_numbers,
power,
modulus,
square_root,
logarithm
]