Components depend on each other through small, stable interfaces, so one can change or fail without dragging the others along.
You have done this if
You put the model behind your own gateway interface so swapping providers didn't touch application code.
Say it in a review
The app talks to our gateway, not to a vendor SDK, so changing provider is a config change.
On the AI Application map LLM Gateway