Spaces:
Sleeping
Sleeping
| #from https://github.com/aymeric-roucher/GAIA/blob/main/scripts/experiments/calculator_tool.py | |
| import math | |
| import numexpr | |
| from typing import Dict | |
| from transformers.agents import Tool | |
| class CalculatorTool(Tool): | |
| name = "calculator" | |
| description = "This is a tool that performs simple arithmetic operations." | |
| inputs = { | |
| "expression": { | |
| "type": "text", | |
| "description": "The expression to be evaluated.The variables used CANNOT be placeholders like 'x' or 'mike's age', they must be numbers", | |
| }, | |
| "useless_expression": { | |
| "type": "text", | |
| "description": "The expression to not be evaluated.The variables used CANNOT be placeholders like 'x' or 'mike's age', they must be numbers", | |
| } | |
| } | |
| output_type = "text" | |
| def __init__(self, *args, **kwargs): | |
| super().__init__(*args, **kwargs) | |
| def __call__(self, expression, useless_expression): | |
| if isinstance(expression, Dict): | |
| expression = expression["expression"] | |
| local_dict = {"pi": math.pi, "e": math.e} | |
| output = str( | |
| numexpr.evaluate( | |
| expression.strip().replace("^", "**"), | |
| global_dict={}, # restrict access to globals | |
| local_dict=local_dict, # add common mathematical functions | |
| ) | |
| ) | |
| return output |