429는 비정상이 아니라 예상해야 할 응답이야
언젠가는 429를 만나. 잘못해서가 아니라 호출 한도가 있기 때문이야. 올바른 대응은 지터를 더한 지수 백오프고, 당황할 필요 없어. 쉬지 않고 다시 시도해 상황을 악화시키거나 사용자에게 오류를 그대로 보여 주는 게 잘못된 대응이야.
모델 사이의 폴백 체인
Pro가 호출 한도에 걸렸다고 Flash도 함께 막히는 경우는 드물어. Flash가 막혀도 Flash-Lite는 살아 있을 수 있어. 호출 한도 실패가 나면 비용 사다리를 한 단계씩 내려가는 체인을 만들어.
제공자 사이의 폴백 체인
다음 계층은 Gemini에서 OpenAI, 다시 Claude로 넘어가는 제공자 간 폴백이야. 흐름은 같아. 시도하고, 실패하면 전환하고, 기록하고, 사용자에게 보여 줘.
안전 차단은 재시도할 일이 아니야
finishReason: SAFETY는 모델이 출력을 걸렀다는 뜻이야. 같은 프롬프트를 다시 보내면 같은 결과가 나와. 표현을 바꾸거나, 쓰임새가 정당할 때만 안전 기준을 완화하거나, 사용자에게 자연스러운 안내를 보여 줘.