RAG2026-5일27차시 · 기본 Modular RAG 구현15 / 18← 이전목차다음 →MetaContents

27차시. 기본 Modular RAG 구현

퀴즈 1 — 상한 먼저, retry일 때만 bump로

상한을 먼저 보고, retry일 때만 bump로 보내세요.

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

Python
def route_verify(state, limit):
    pass
결과 보기 (예시 풀이)
Python
# verify 다음에 어디로 갈지 고르는 분기 함수입니다. State 는 읽기만 합니다.
def route_verify(state, limit):
    # 안전장치를 맨 위에 둡니다. 상한에 닿았으면 판정과 상관없이 끝냅니다.
    if state.get("retries", 0) >= limit:
        return "fallback"
    grade = state.get("grade")
    # 통과면 그래프를 끝냅니다.
    if grade == "pass":
        return "done"
    # retry 일 때만 bump 로 보내 횟수를 올린 뒤 다시 생성합니다.
    if grade == "retry":
        return "bump"
    # 그 외(giveup, research, 값 없음)는 모두 fallback 입니다.
    return "fallback"

LIMIT = 2
# 판정과 재시도 횟수를 바꿔 가며 경로를 확인합니다.
tests = [
    {"grade": "pass", "retries": 0},    # done 이어야 합니다
    {"grade": "retry", "retries": 0},   # bump 이어야 합니다
    {"grade": "retry", "retries": 2},   # 상한이라 fallback 이어야 합니다
    {"grade": "giveup", "retries": 1},  # fallback 이어야 합니다
    {},                                 # 아무 값이 없어도 fallback 으로 빠져야 합니다
]
for s in tests:
    print(s, "->", route_verify(s, LIMIT))

실행 결과

출력
{'grade': 'pass', 'retries': 0} -> done
{'grade': 'retry', 'retries': 0} -> bump
{'grade': 'retry', 'retries': 2} -> fallback
{'grade': 'giveup', 'retries': 1} -> fallback
{} -> fallback

채점 기준: 상한 검사가 pass보다 위에 있어도 된다. retry보다 앞에 있어야 한다.

관련 교안: 27차시 「3. 라우팅 규칙표」 › 3-2) verify 이후

← 이전 절27차시 · 실습 1 — 기본 Modular RAG 구현 실습 따라 하기다음 절 →27차시 · 퀴즈 2 — retries만 올리는 bump 노드