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

27차시. 기본 Modular RAG 구현

퀴즈 2 — retries만 올리는 bump 노드

bump는 retries를 1 올리고 로그 한 줄을 반환합니다. 답은 쓰지 않습니다.

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

Python
def bump(state):
    pass
결과 보기 (예시 풀이)
Python
# 재시도 횟수만 1 올리는 노드입니다. 답(answer)은 손대지 않습니다.
def bump(state):
    # 처음이면 retries 가 없으므로 0 에서 시작합니다.
    n = state.get("retries", 0) + 1
    # 바꿀 키만 돌려줍니다. log 는 리스트로 주어야 reducer 가 이어 붙입니다.
    return {"retries": n, "log": [f"재시도 {n}"]}

# 그래프가 하는 일을 흉내 냅니다: 노드가 돌려준 값을 State 에 합칩니다.
state = {"question": "환불 방법과 수수료를 알려주세요", "answer": "첫 답", "retries": 0, "log": []}
for _ in range(2):
    update = bump(state)
    state["retries"] = update["retries"]
    state["log"] = state["log"] + update["log"]   # reducer 가 하는 이어 붙이기
    print("bump 반환:", update)

# retries 는 2, log 는 두 줄, answer 는 처음 그대로여야 합니다.
print("retries:", state["retries"])
print("log:", state["log"])
print("answer 그대로인가:", state["answer"] == "첫 답")
print("반환값에 answer 가 없는가:", "answer" not in bump(state))

실행 결과

출력
bump 반환: {'retries': 1, 'log': ['재시도 1']}
bump 반환: {'retries': 2, 'log': ['재시도 2']}
retries: 2
log: ['재시도 1', '재시도 2']
answer 그대로인가: True
반환값에 answer 가 없는가: True

채점 기준: answer를 반환하면 오답이다.

관련 교안: 27차시 「2. 루프 설계 — 3가지 요소」 › 2-2) ② 카운터를 올리는 노드

← 이전 절27차시 · 퀴즈 1 — 상한 먼저, retry일 때만 bump로다음 절 →27차시 · 정리