RAG2026-5일15차시 · 기본 RAG 앱 만들기9 / 19← 이전목차다음 →MetaContents

15차시. 기본 RAG 앱 만들기

6. 예외 처리 — 앱이 죽지 않게

출처: 원본 PDF 15차시_기본RAG앱만들기.pdf 12쪽 · 쪽 그림 12쪽

실험 코드와 앱의 가장 큰 차이입니다. 앱은 어떤 상황에서도 죽으면 안 됩니다.

6-1) 대비해야 할 상황

상황처리 없으면rag.py의 처리
빈 질문 입력이상한 검색 실행안내 메시지 반환
검색 결과 0건IndexError"자료 없음" 반환
API 키 만료프로그램 종료오류 메시지 반환
네트워크 끊김프로그램 종료오류 메시지 반환
API 한도 초과프로그램 종료오류 메시지 반환

🛡️ 예외 처리의 원칙
① 사용자에게는 친절한 메시지를
"RateLimitError: 429" ❌
"잠시 후 다시 시도해주세요" ✅
② 개발자에게는 진짜 원인을
print나 logging으로 실제 에러를 남깁니다
③ 반환 형식은 항상 같게
성공이든 실패든 같은 딕셔너리 구조로 돌려줍니다
→ 부르는 쪽이 분기 처리를 안 해도 됩니다

💡 반환 형식을 통일하는 것이 중요합니다
{"answer": ..., "sources": [...], "ok": True/False}
성공하든 실패하든 이 형태입니다.
그래서 app.py는 이렇게만 쓰면 됩니다.
result = ask(q)
print(result["answer"])
이 딕셔너리 구조가 18차시 State의 원형입니다.

← 이전 절15차시 · 5. 실습 ③ — rag.py (핵심)다음 절 →15차시 · 7. 실습 ④ — app.py (터미널 버전)