OpenAI, Anthropic, and Google expose different APIs, message formats, tool-calling conventions, error types, and response structures.

That difference is manageable while an application uses only one provider. It becomes more expensive when the application needs retries, circuit breakers, fallback routes, observability, and recovery across several providers.

Without a shared abstraction, resilience logic tends to be implemented repeatedly:

OpenAI integration

├── request conversion