27차시. 기본 Modular RAG 구현
퀴즈 2 — retries만 올리는 bump 노드
bump는 retries를 1 올리고 로그 한 줄을 반환합니다. 답은 쓰지 않습니다.
빈칸 코드에서 시작합니다.
def bump(state):
pass결과 보기 (예시 풀이)
# 재시도 횟수만 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를 반환하면 오답이다.