본문 바로가기
C.W.K.
Stream
Lesson 02 of 07 · published

예비 사슬은 품질 저하를 숨기지 않아야 해

~14 min · fallback, degraded-mode, reliability

Level 0Observer
0 XP0/64 lessons0/13 achievements
0/150 XP to next level150 XP to go0% complete

세 예비 경로는 피해 범위가 달라

같은 제공자 안에서 Sonnet을 Haiku로 낮출 수도 있고, 비슷한 능력의 호출을 Anthropic에서 OpenAI나 Gemini로 넘길 수도 있어. 즉답이 필요 없다면 Batch API나 큐로 미룰 수도 있지. 각 선택은 비용과 품질, 완료 시간에 서로 다른 변화를 만들어.

낮아진 품질은 사용자에게 알려

예비 경로가 더 작은 모델을 썼다면 “Sonnet을 사용할 수 없어 Haiku가 답했어”라고 드러내. 말없이 낮은 품질을 내보내면 사용자는 답의 성격이 바뀐 이유를 알 수 없어. cwkPippa도 현재 브레인을 화면 표지로 보여 아빠가 어떤 경로가 응답했는지 알게 해.

모든 분기를 한 번씩 고장 내 봐

시험하지 않은 예비 경로에는 반드시 숨어 있는 문제가 있어. 준비 환경에서 주 경로를 의도적으로 끄고 각 분기가 처음부터 끝까지 동작하는지 확인해. 실제 장애가 오기 전에 인증·형식·화면 표시의 틈을 찾는 훈련이야.

원칙: 신뢰성은 여러 층으로 만들고, 예비 경로는 장애 훈련으로 존재를 증명해.

Code

Three-step fallback chain·python
from anthropic import Anthropic, RateLimitError, InternalServerError, APIConnectionError

client = Anthropic(max_retries=2)

async def chat_with_fallback(messages):
    # 1) 계획된 tier 시도.
    try:
        return ('sonnet', await call(client, 'claude-sonnet-4-6', messages))
    except (RateLimitError, InternalServerError, APIConnectionError):
        pass
    # 2) 같은 프로바이더, 더 작은 모델.
    try:
        return ('haiku', await call(client, 'claude-haiku-4-5-20251001', messages))
    except (RateLimitError, InternalServerError, APIConnectionError):
        pass
    # 3) Cross-프로바이더.
    return ('openai', await call_openai(messages))
User한테 fallback surface·typescript
function ResponseBadge({ tier }: { tier: 'sonnet' | 'haiku' | 'openai' }) {
  if (tier === 'sonnet') return null;  // primary path, no badge
  const label =
    tier === 'haiku' ? 'fast mode (smaller model)' : 'fallback provider';
  return (
    <span className="text-xs text-amber-600" title={`Generated via ${tier}`}>
      {label}
    </span>
  );
}

External links

Exercise

운영 문서에 분기마다 하는 예비 경로 훈련을 넣어. 준비 환경에서 이 사슬이 대비한 장애를 흉내 내(주 클라이언트의 base URL을 연결을 거부하는 주소로 돌려 APIConnectionError를 내거나, 전송층을 바꿔 529를 돌려주게 해). 대표 요청이 SLA 안에 예비 경로로 끝나는지 확인해. 키를 폐기해서 훈련하지는 마. 401은 장애가 아니라 고칠 버그고, 이 사슬은 일부러 그걸 그대로 통과시켜. 당직자가 누구고 무엇을 보게 되는지도 적어.
Hint
예비 경로에서 사용자가 보게 될 화면을 설명할 수 없다면 저하 UX가 아직 정의되지 않은 거야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인 — 댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.