You can't really "reduce" halucinations, you can only work around that problem! In one of the experiments, folks gave an all prime number input to the LLM to determine if something is prime or not. Even with CoT prompting and a bunch of other techniques, it kept producing wrong output. The only thing you can do is adjust the temperature of the model, and maybe some post processing to determine if the output is relevant.
If you want to go further, use Guardrails or NeMo to keep the LLM output within an acceptable range out of outputs.