Pick a chatbot gateway that exposes one chat API behind one key and lets you change models with a string — then keep the fallback ladder in your own code, where you can test it.
That's the whole answer. Everything below is how I got there.
I ship RAG and agent features in Python for a mid-size SaaS product, and our in-app chatbot has been through three routing designs in about eighteen months. The first one had three vendor SDKs bolted together behind a if provider == "openai" branch, and I genuinely believed that was fine, because each individual call site looked clean. What I hadn't counted on was that the branching isn't the expensive part. The expensive part is that every provider disagrees with every other provider about the shape of a response, the name of an error, and whether token counts show up at all — and your eval harness, your cost dashboard and your retry logic all sit downstream of exactly those three things.
What three provider SDKs really cost you
The auth story is trivial. Three env vars, three clients, done in an afternoon.






