The only really capable models are from OpenAI, Anthropic, and Meta. They all have guard rails of some kind and you need to use a supervisor agent to decide if the output is as you wanted if you can't use something more basic like a JSON parser. Google Bard/Gemini output is not that high quality IMO.