Example: Adding a Calculator to Our Agent › Extending the Calculator
Michael BrenndoerferJune 29, 20252 min read
AI Agent HandbookAll chapters Part 5 of 15Tool Use - Extending the Agent's Abilities
Example: Adding a Calculator to Our Agent › Extending the CalculatorOne section · Sections in this chapter10 / 16 ↓
Sections in this chapter16
Our basic calculator works, but we can make it more robust. Here's an enhanced version that handles more scenarios:
In[14]:
Codeimport re
def calculate_enhanced(expression: str) -> dict:
"""
Enhanced calculator with better error handling and formatting.
Args:
expression: A math expression
Returns:
Dictionary with result or error
"""
try:
# Clean the expression
# Remove common words that might appear
expression = expression.lower()
expression = re.sub(r'\b(what is|calculate|compute|equals?)\b', '', expression)
expression = expression.strip()
# Replace common word operators
expression = expression.replace('times', '*')
expression = expression.replace('divided by', '/')
expression = expression.replace('plus', '+')
expression = expression.replace('minus', '-')
expression = expression.replace('to the power of', '**')
# Evaluate
result = eval(expression)
# Format the result nicely
if isinstance(result, float):
# Round to reasonable precision
if result.is_integer():
result = int(result)
else:
result = round(result, 6)
return {
"success": True,
"result": result,
"expression": expression
}
except Exception as e:
return {
"success": False,
"error": f"Could not evaluate '{expression}': {str(e)}",
"expression": expression
}This enhanced version:
- Cleans up the expression by removing common phrases
- Replaces word operators ("times" → "*")
- Formats results nicely (removes unnecessary decimals)
- Provides clearer error messages
You can swap this into your agent by updating the tool registry:
In[15]:
Codetool_registry = {
"calculate": calculate_enhanced
}