File: //opt/PraisonAI/docs/tools/calculator_tools.mdx
---
title: "Calculator Agent"
description: "Mathematical calculation tools for AI agents."
icon: "calculator"
---
<Note>
**Prerequisites**
- Python 3.10 or higher
- PraisonAI Agents package installed
- `sympy` and `pint` packages installed
</Note>
## Calculator Tools
Use Calculator Tools to perform mathematical calculations with AI agents.
<Steps>
<Step title="Install Dependencies">
First, install the required packages:
```bash
pip install praisonaiagents sympy pint
```
</Step>
<Step title="Import Components">
Import the necessary components:
```python
from praisonaiagents import Agent, Task, PraisonAIAgents
from praisonaiagents.tools import (
evaluate, solve_equation, convert_units,
calculate_statistics, calculate_financial
)
```
</Step>
<Step title="Create Agent">
Create a calculator agent:
```python
calculator_agent = Agent(
name="MathAssistant",
role="Mathematical Computation Specialist",
goal="Perform accurate mathematical calculations and solve equations.",
backstory="Expert in mathematical computations and problem-solving.",
tools=[
evaluate, solve_equation, convert_units,
calculate_statistics, calculate_financial
],
self_reflect=False
)
```
</Step>
<Step title="Define Task">
Define the calculation task:
```python
calc_task = Task(
description="Calculate the area of a circle with radius 5",
expected_output="The area of the circle in square units",
agent=calculator_agent,
name="circle_area"
)
```
</Step>
<Step title="Run Agent">
Initialize and run the agent:
```python
agents = PraisonAIAgents(
agents=[calculator_agent],
tasks=[calc_task],
process="sequential"
)
agents.start()
```
</Step>
</Steps>
## Understanding Calculator Tools
<Card title="What are Calculator Tools?" icon="question">
Calculator Tools provide mathematical computation capabilities for AI agents:
- Expression evaluation
- Equation solving
- Unit conversions
- Support for mathematical functions
- Variable substitution
</Card>
## Key Components
<CardGroup cols={2}>
<Card title="Expression Evaluation" icon="function">
Evaluate mathematical expressions:
```python
result = evaluate("2 + 2 * 3")
```
</Card>
<Card title="Equation Solving" icon="equals">
Solve mathematical equations:
```python
result = solve_equation("2*x + 3 = 7")
```
</Card>
<Card title="Unit Conversions" icon="exchange">
Convert between units:
```python
result = convert_units(100, "meters", "kilometers")
```
</Card>
<Card title="Statistical Calculations" icon="chart-line">
Calculate statistical metrics:
```python
result = calculate_statistics([1, 2, 3, 4, 5])
```
</Card>
<Card title="Financial Calculations" icon="chart-pie">
Calculate financial metrics:
```python
result = calculate_financial(1000, 5, 2)
```
</Card>
</CardGroup>
## Advanced Usage
<AccordionGroup>
<Accordion title="Expression Evaluation">
Evaluate complex mathematical expressions with variables:
```python
# Basic arithmetic
result = evaluate("2 + 2 * 3")
# With mathematical functions
result = evaluate("sin(pi/2) + sqrt(16)")
# With variables
result = evaluate(
"x^2 + y",
variables={"x": 3, "y": 4}
)
```
</Accordion>
<Accordion title="Equation Solving">
Solve different types of equations:
```python
# Linear equation
result = solve_equation("2*x + 3 = 7")
# With custom variable
result = solve_equation("y^2 = 4", variable="y")
```
</Accordion>
<Accordion title="Unit Conversions">
Convert between different units:
```python
# Length conversion
result = convert_units(100, "meters", "kilometers")
# Temperature conversion
result = convert_units(32, "fahrenheit", "celsius")
# Time conversion
result = convert_units(2.5, "hours", "minutes")
```
</Accordion>
<Accordion title="Statistical Calculations">
Calculate statistical metrics:
```python
result = calculate_statistics([1, 2, 3, 4, 5])
```
</Accordion>
<Accordion title="Financial Calculations">
Calculate financial metrics:
```python
result = calculate_financial(1000, 5, 2)
```
</Accordion>
</AccordionGroup>
## Error Handling
<Card title="Error Management" icon="shield-check">
The tools include comprehensive error handling:
```python
# Returns success result
{"result": 8.0}
# Returns error message
{"error": "Invalid expression"}
```
</Card>
## Best Practices
<CardGroup cols={2}>
<Card title="Precision Control" icon="ruler">
Control calculation precision:
```python
evaluate(
"pi",
precision=5
)
```
</Card>
<Card title="Safe Execution" icon="shield">
Uses safe evaluation environment with:
- Restricted builtins
- Mathematical functions only
- Variable validation
</Card>
</CardGroup>