I have used ASE to create slaps of complex, anisotropic materials in the past. However,
ase.lattice is not for creating slabs, it's a module containing functions for creating three dimensional Bravais lattices. Some functions you could use are
ase.build.cut (for lower level control).
from ase.build import surface
s1 = surface('Au', (2, 1, 1), 9)
Creates a gold (211) slap with 9 layers
from ase.spacegroup import crystal
a = 4.05
aluminium = crystal('Al', [(0,0,0)], spacegroup=225,
cellpar=[a, a, a, 90, 90, 90])
al111 = cut(aluminium, (1,-1,0), (0,1,-1), nlayers=3)
Cut allows for finer control as you are specifying vectors (or atoms indices) that define a triangle in the plane you are cutting.
ASE is great for automization in general as it offers calculator interfaces to programs like VASP and I highly recommend it. I am not too familiar with pymatgen, but it seems to provide many similar features. Either is probably fine.