Lesson 21 / 29
Failure Handling in Layers
Combine retries, timeouts, fallbacks and graceful degradation.
Plan each failure, then test it
Typical failures and a layered response: transient provider errors and rate limits → retry with exponential backoff and jitter, within a total time budget; provider outage → fail over to another model or provider (keep prompts portable and test the fallback regularly), or a cached or simpler answer; slow responses → timeouts, streaming, hedging for idempotent calls; invalid output → bounded repair loop, then safe default or human queue; retrieval empty or weak → say "I could not find this" rather than guess; tool errors → return clear error text to the model, limit retries, never repeat side-effecting actions blindly; runaway loops → step, token, time and cost caps; overload → queue, shed low-priority work, return a clear "busy" message. Add a circuit breaker to stop calling a failing dependency for a short time. Then run failure drills in staging: disable the provider, inject slow responses and bad outputs, and confirm users get a sensible experience.
Failure modes and responses
Fill in your own system; test each row in staging.
Failure Layered response
rate limit / 5xx / timeout retry with backoff+jitter inside a time budget -> fallback model -> cached/simple answer
provider outage circuit breaker -> secondary provider (portable prompts) -> graceful message
invalid structured output bounded repair (<= 2) -> safe default or human queue; count the failure
empty or weak retrieval "I could not find this in our documents" + offer a human; do not guess
tool error clear error text to the model; capped retries; no blind repeat of side effects
runaway agent loop step/token/time/cost caps -> stop, report what was tried
overload queue, shed low priority, "busy, try again" with retry hintsRun a failure drill each quarter
Disable the provider in staging and confirm users get a sensible fallback.
Quick check: What is the safest response when retrieval returns nothing relevant?
- Invent a plausible answer
- Say the answer was not found, and offer a human
- Return an empty page
- Crash the app
Answer
Say the answer was not found, and offer a human — An honest "not found" beats a confident guess.