26차시. Verifier Node 설계
퀴즈 2 — 판정 재료로 pass·retry·research 고르기
근거에 있으면 pass, 질문과 어긋나면 retry, 근거 자체가 부족하면 research.
빈칸 코드에서 시작합니다.
def grade(grounded, relevant, enough_context):
pass결과 보기 (예시 풀이)
# 심판의 판정 재료 세 가지로 grade 를 정합니다. 답 문장은 건드리지 않습니다.
def grade(grounded, relevant, enough_context):
# 근거 자체가 모자라면 다시 써도 소용없으니 재검색(research)입니다.
if not enough_context:
return "research"
# 근거에도 맞고 질문에도 답했으면 통과입니다.
if grounded and relevant:
return "pass"
# 근거는 충분한데 답을 잘못 썼으면 같은 근거로 재생성(retry)합니다.
return "retry"
# (grounded, relevant, enough_context, 설명) 를 차례로 넣어 봅니다.
cases = [
(True, True, True, "정상 답변"),
(False, True, True, "환각 포함"),
(True, False, True, "질문과 어긋남"),
(True, True, False, "근거 부족"),
]
for g, r, e, desc in cases:
# 설명 옆에 grade 가 기대대로(pass, retry, retry, research) 나오는지 봅니다.
print(f"{desc:8} -> {grade(g, r, e)}")
실행 결과
정상 답변 -> pass
환각 포함 -> retry
질문과 어긋남 -> retry
근거 부족 -> research채점 기준: answer 문자열을 고쳐 반환하면 오답이다.
관련 교안: 26차시 「6. 판정 결과를 세 가지로 나눈 이유」