Abstraction that does not hide operations
A provider abstraction is only worth having if it still tells operators what they need to know: which model actually served the request, which provider failed, what the call cost. Hiding all that makes the layer easier to describe and a lot harder to run.