RAG2026-5일32차시 · 고도화된 Modular RAG15 / 18← 이전목차다음 →MetaContents

32차시. 고도화된 Modular RAG

퀴즈 1 — 검증 결과로 다음 노드 고르기

grade에 따라 done, bump, rewrite, fallback 중 하나를 반환하세요. 각 횟수 상한을 먼저 봅니다.

빈칸 코드에서 시작합니다.

Python
def route(state):
    pass
결과 보기 (예시 풀이)
Python
# 검증 결과(grade)를 보고 다음에 갈 노드 이름을 돌려주는 분기 함수입니다.
def route(state):
    grade = state.get("grade")
    # 통과면 끝냅니다.
    if grade == "pass":
        return "done"
    # 검증이 포기를 선언했으면 안내 노드로 갑니다.
    if grade == "giveup":
        return "fallback"
    # 답 문장만 다시 쓸 때: 재생성 상한을 먼저 확인합니다.
    if grade == "retry":
        if state.get("retries", 0) >= state.get("max_retries", 1):
            return "fallback"
        return "bump"
    # 문서를 다시 찾을 때: 재작성 상한을 먼저 확인합니다.
    if grade == "research":
        if state.get("rewrites", 0) >= state.get("max_rewrites", 2):
            return "fallback"
        return "rewrite"
    # 모르는 grade가 오면 안전하게 안내 노드로 보냅니다.
    return "fallback"

# 여러 State를 넣어 보고 기대한 경로가 나오는지 확인합니다.
cases = [
    ({"grade": "pass"}, "done"),
    ({"grade": "giveup"}, "fallback"),
    ({"grade": "retry", "retries": 0, "max_retries": 1}, "bump"),       # 상한 전
    ({"grade": "retry", "retries": 1, "max_retries": 1}, "fallback"),   # 상한 도달
    ({"grade": "research", "rewrites": 1}, "rewrite"),                  # 기본 상한 2 전
    ({"grade": "research", "rewrites": 2}, "fallback"),                 # 상한 도달
    ({"grade": "unknown"}, "fallback"),                                # 모르는 값
]
for state, expected in cases:
    got = route(state)
    mark = "OK" if got == expected else "틀림"
    print(f"{mark:<3} {str(state):<52} -> {got}")

실행 결과

출력
OK  {'grade': 'pass'}                                    -> done
OK  {'grade': 'giveup'}                                  -> fallback
OK  {'grade': 'retry', 'retries': 0, 'max_retries': 1}   -> bump
OK  {'grade': 'retry', 'retries': 1, 'max_retries': 1}   -> fallback
OK  {'grade': 'research', 'rewrites': 1}                 -> rewrite
OK  {'grade': 'research', 'rewrites': 2}                 -> fallback
OK  {'grade': 'unknown'}                                 -> fallback

채점 기준: pass는 done, giveup은 fallback, retry 상한 전이면 bump, research 상한 전이면 rewrite.

관련 교안: 32차시 「2. 실습 ① — 통합 그래프 완성」

← 이전 절32차시 · 실습 1 — 고도화된 Modular RAG 실습 따라 하기다음 절 →32차시 · 퀴즈 2 — 문서 질문만 검색으로 보내기