27차시. 기본 Modular RAG 구현
퀴즈 1 — 상한 먼저, retry일 때만 bump로
상한을 먼저 보고, retry일 때만 bump로 보내세요.
빈칸 코드에서 시작합니다.
def route_verify(state, limit):
pass결과 보기 (예시 풀이)
# 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보다 앞에 있어야 한다.