Yeah, gradients are mostly for NUTS. The example you linked is a great place to get started. I can also take a look if you post your likelihood function. Basically you just need to get out a pen and paper and work out the derivatives for your function with respect to its inputs, translate that result to numpy code, then swap out the normal_gradients from the example with your new function. Pretty much everything else is boilerplate.