Welcome!
The first thing I would suggest is to avoid custom steps whenever possible. pm.sample() will happily (and effectively) select steps on your behalf based on the model you build. So unless you have some unique case in which you want to override the pymc-inferred steps, I would just call pm.sample(25000).
That being said, you may be able to induce some shape information by specifying p1 = pm.Uniform(‘p’, 0, 1, shape=1). @ricardoV94 may be able to suggest a conventional solution.