Treating LLM calls as just another upstream dependency. How to use Spring AI to build a multi-provider gateway with retries, circuit breakers, prompt versioning, and observability — the same hygiene you'd put around any external API.
A circuit breaker is supposed to mean the downstream is dead. Sometimes the downstream is fine — and the breaker is the problem. Three failure modes I learned the hard way, and what to do about each.