|
from langchain.tools import Tool |
|
import math |
|
|
|
|
|
|
|
|
|
|
|
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 = [ |
|
add_numbers, |
|
subtract_numbers, |
|
multiply_numbers, |
|
divide_numbers, |
|
power, |
|
modulus, |
|
square_root, |
|
logarithm |
|
] |