GAIA-Langgraph / tools /math_tools.py
jash0803's picture
feat: langgraph agents
95bd81e
from langchain_experimental.tools import PythonREPLTool
from langchain_core.tools import tool
@tool
def calculator(expression: str) -> str:
"""Evaluate a mathematical expression using Python. Supports arithmetic,
trigonometry, statistics, and any expression valid in Python's math module.
Example inputs: '2 + 2', 'math.sqrt(144)', 'sum([1,2,3,4,5]) / 5'
"""
import math
import statistics
allowed_names = {
k: v for k, v in math.__dict__.items() if not k.startswith("_")
}
allowed_names.update({
k: v for k, v in statistics.__dict__.items() if not k.startswith("_")
})
allowed_names["abs"] = abs
allowed_names["round"] = round
allowed_names["sum"] = sum
allowed_names["min"] = min
allowed_names["max"] = max
allowed_names["len"] = len
allowed_names["pow"] = pow
allowed_names["int"] = int
allowed_names["float"] = float
try:
result = eval(expression, {"__builtins__": {}}, allowed_names)
return str(result)
except Exception as e:
return f"Error evaluating expression: {e}"
def get_math_tools():
python_repl = PythonREPLTool()
return [calculator, python_repl]