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

31차시. 예외 처리 설계

10. app.py 업데이트

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

불확실성을 사용자에게 표시하도록 화면을 수정합니다.

출력
from graph import ask
import time
from logger import log_query

def main():
    print(BANNER)
    while True:
        q = input("\n질문 > ").strip()
        if q.lower() in ("q", "exit", "quit", "종료"):
            break
        if not q:
            continue

        t0 = time.time()
        r = ask(q)
        elapsed = time.time() - t0
        log_query(q, r.get("_state", {}), elapsed)

        print("\n" + "─" * 52)

        # 미검증 답변에는 경고 표시
        if r.get("answer") and not r.get("verified"):
            if r.get("grade") == "unverified":
                print("⚠ 이 답변은 자동 검증을 통과하지 못했습니다.")
                print("  원문과 대조해 확인해주세요.\n")

        print(r["answer"])

        if r.get("sources"):
            print("\n

📎 참고 자료")

출력
            seen = set()
            for s in r["sources"]:
                key = (s["file"], s["page"])
                if key not in seen:
                    seen.add(key)
                    print(f"   · {s['file']} {s['page']}페이지")

        print(f"\n({elapsed:.1f}초)")
        print("─" * 52)
← 이전 절31차시 · 9. 자주 겪는 문제다음 절 →31차시 · 체크리스트와 과제