# Add comprehensive error handling
@tool("Process payment")
def process_payment(self, amount: float) -> dict:
"""Tool with error handling"""
try:
logger.info(f"Processing payment: ${amount}")
# Validate input
if amount <= 0:
raise ValueError("Amount must be positive")
# Process payment
result = payment_service.charge(amount)
logger.info(f"Payment successful: {result.id}")
return {"success": True, "transaction_id": result.id}
except ValueError as e:
logger.error(f"Validation error: {e}")
return {"error": "invalid_amount", "message": str(e)}
except PaymentError as e:
logger.error(f"Payment failed: {e}")
return {"error": "payment_failed", "message": str(e)}
except Exception as e:
logger.exception(f"Unexpected error: {e}")
return {"error": "internal_error", "message": "Please try again"}