RAG2026-5일31차시 · 예외 처리 설계3 / 19← 이전목차다음 →MetaContents

31차시. 예외 처리 설계

이번 차시에서 배우는 것

출처: 원본 PDF 31차시_방어적코딩실습.pdf 1쪽 · 쪽 그림 1쪽

예외 처리 설계 — 어떤 상황에서도 죽지 않기

✓ 시스템의 실패 지점을 빠짐없이 목록화한다 ✓ 부분 실패를 허용하는 설계를 이해한다 ✓ Fallback을 상황별로 계층화한다
✓ 사용자에게 불확실성을 정직하게 알린다 ✓ 타임아웃과 재시도 정책을 설정한다
✓ 운영에 필요한 로그를 남긴다

교안 해설: 이 시간에 하는 일

출처: 교안 31_예외처리설계.md

노드가 늘면 실패 지점도 늘습니다. 분류의 형식 오류, 인덱스가 없음, 모델 호출 한도, 검증 JSON 파싱 실패가 각각 납니다. 예외가 그래프 밖으로 나가면 사용자에게는 빈 실패만 남습니다.

safe.py는 노드 함수를 감싸 예외가 나도 그 노드용 기본 State를 돌려주고 오류 문자열을 남깁니다. 이 파일은 실제로 실행했습니다. 정상 반환과 일부러 낸 오류가 샘플에 있습니다. 모든 예외를 삼키기만 하면 조용한 실패가 됩니다. 로그에 종류와 위치가 있어야 합니다.

analyze_logs.py는 logs/queries.jsonl을 집계합니다. 원본 로그 6건을 실행한 결과 통과율 67%, 재작성 17%, 평균 약 1.9초, 오류 0이었습니다. logger.py는 실행하면 로그 파일을 추가하므로 실행하지 않았습니다. 안내 문장은 '못 찾음'과 '요청이 많음'을 나누어 사용자가 다음에 할 일을 다르게 알게 합니다.

강의 PPT 흐름

출처: 강의 PPT 31차시_예외처리설계.pptx (21장)

장꼬리표슬라이드 제목
1-실습으로 배우는 LangGraph : 내 손으로 RAG 시스템 만들기
2LEARNING GOALS이번 차시에서 배우는 것
3FAILURE POINTS시스템이 커질수록 실패 지점도 늘어납니다
4WITHOUT HANDLING예외 처리가 없는 시스템의 최후
5KEY TERMS핵심 용어
6EMERGENCY ROOM응급실 비유
7PARTIAL POLICY단계별 부분 실패 정책
8FALLBACK LAYERS상황별로 안내를 나눕니다
9WHY SPLIT사용자의 다음 행동이 달라집니다
10UNVERIFIED미검증 답변을 정직하게 표시하기
11SAFE NODE모든 노드가 같은 방식으로 실패하게
12TIMEOUTS무한정 기다리지 않게
13PRAGMATICdeadline을 State에 넣는 이유
14STRUCTURED LOGS운영은 감이 아니라 로그로 합니다
15FAILURE DRILL일부러 고장 내보기
16SILENT FAILURE예외를 무조건 잡으면 안 되는 이유
17TROUBLESHOOTING자주 겪는 문제
18CHECKLIST이번 차시 체크리스트
19ASSIGNMENT이번 차시 과제
20NEXT다음 차시 미리보기 — 32차시 고도화 Modular RAG
21-마무리
← 이전 절31차시 · 용어 짚고 가기다음 절 →31차시 · 1. 시스템이 커질수록 실패 지점도 늘어난다