How to create custom distribution for sampling?

The following is the log_pdf of the distribution from which I want to sample from in Numpyro:

    real gamma_dirichlet_lpdf(vector raw, vector prior, vector parametrization, vector dirichlet){
        return std_normal_lpdf(raw) + dirichlet_lpdf(dirichlet | prior) - dirichlet_lpdf(dirichlet | parametrization);
    }

How can I create such a distribution in Numpyro and sample from it?