You picked a model. You built on it. It worked great — until it didn't.
Maybe the provider's reasoning model disappointed you on a hard task. Maybe their pricing quietly changed. Maybe they had a three-hour outage and your users noticed before you did. Whatever the trigger, you now face the same migration every LLM dev dreads: new SDK, new auth, new billing, new edge cases.
Here's the thing: it didn't have to be this way.
The mistake: building on a provider, not an interface
When you call a vendor directly, your model choice is welded into your codebase. DeepSeek's SDK here, Moonshot's quirks there, a hardcoded model="gpt-4o" in seventeen places. Switching vendors isn't a config change — it's a migration project.
The alternative is boring on purpose: build against one OpenAI-compatible endpoint and treat the model as a parameter you can change in one string.
from openai import OpenAI
client = OpenAI(
base_url="https://aibridge-api.com/v1",
api_key="mb-your-key",
)
# Budget model today...
client.chat.completions.create(model="deepseek-chat", messages=[...])
# ...reasoning model tomorrow. Same code, one string changed.
client.chat.completions.create(model="kimi-k3", messages=[...])
That's it. The OpenAI SDK you already use, pointed at a gateway in front of 15+ models. DeepSeek, Kimi K3, GLM-4-Plus, Qwen — all behind the same key, the same streaming behavior, the same embeddings endpoint.
What "no lock-in" actually gets you
You can benchmark instead of guessing. When switching costs one string, you actually run your real prompts against three models and pick the winner — instead of reading a leaderboard and hoping.
You can route by cost. Cheap model for the easy 95% of traffic, flagship model for the hard 5%. We wrote about the numbers [here] — short version: you stop paying $15/M output for "summarize this email."
You can de-risk outages. One provider degrades, you flip a string. No deployment, no waiting on their status page.
And the boring parts are handled
- Free tier: 500K tokens/month, resets automatically, no card required
- Top-ups: 1M tokens for $2.99, raw 1:1, no expiry, no multiplier games
- Playground: compare models in the browser before writing code
- Usage dashboard: see per-model spend so you know what to reroute
The principle
Vendor lock-in isn't something providers do to you. It's something you build for yourself, one hardcoded model string at a time.
Decouple the interface from the model, and every future "this model got better" or "this provider got worse" becomes a one-line decision instead of a migration.
15+ models, one OpenAI-compatible endpoint. Change models without changing your code. 🚀





Top comments (0)