31차시. 예외 처리 설계
1. 시스템이 커질수록 실패 지점도 늘어난다
출처: 원본 PDF 31차시_방어적코딩실습.pdf 3~4쪽 · 쪽 그림 3쪽 4쪽
30차시까지 오면서 노드가 9개, 분기가 4개가 됐습니다. 각각이 실패할 수 있습니다.
1-1) 실패 지점 목록
| 단계 | 실패 원인 | 발생 빈도 |
|---|---|---|
| 분류 | LLM 오류 · 형식 이탈 | 낮음 |
| 검색 | 인덱스 없음 · 손상 · 디스크오류 | 낮음 |
| 임베딩 | API 오류 · 한도 초과 · 타임아웃 | 중간 |
| 생성 | API 오류 · 컨텍스트 초과 · 타임아웃 | 높음 |
| 검증 | JSON 파싱 실패 · API 오류 | 중간 |
| 재작성 | API 오류 · 빈 결과 | 낮음 |
| 전체 | 무한루프 · 메모리 부족 | 낮음 |
⚠️ 실무에서 가장 흔한 세 가지
① RateLimitError (429)
API 호출 한도 초과. 트래픽이 몰리면 발생합니다
② Timeout
LLM 응답이 30초 넘게 안 오는 경우
③ 컨텍스트 초과
k를 크게 잡았거나 문서 조각이 긴 경우
이 셋은 반드시 대비해야 합니다.
1-2) 대비하지 않으면
출처: 원본 PDF 4쪽
💥 예외 처리 없는 시스템의 최후
검증 노드에서 JSON 파싱이 실패합니다.
↓
예외가 그래프 밖으로 던져집니다.
↓
app.invoke가 예외를 던집니다.
↓
웹 서버가 500 에러를 반환합니다.
↓
사용자는 아무 답도 못 받습니다.
그런데 사실 답변은 이미 만들어져 있었습니다.
검증만 실패했을 뿐인데요.