RAG2026-5일25차시 · Generator Node 분리17 / 19← 이전목차다음 →MetaContents

25차시. Generator Node 분리

퀴즈 2 — 근거가 없으면 모델을 부르지 않는 생성

문서가 없으면 모델을 호출하지 마세요.

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

Python
def generate(documents, call_llm):
    pass
결과 보기 (예시 풀이)
Python
# 근거 문서가 없으면 모델을 부르지 않고 바로 안내 결과를 돌려줍니다.
# call_llm 은 진짜 모델 호출 대신 넘겨받는 함수입니다.
def generate(documents, call_llm):
    # 근거가 0건인 것은 코드가 이미 아는 사실입니다. 모델에게 물을 필요가 없습니다.
    if not documents:
        return {
            "answer": "자료에서 확인할 수 없습니다",
            "insufficient": True,
            "has_citation": False,
        }
    # 근거가 있을 때만 모델을 부릅니다.
    return call_llm(documents)

# 가짜 모델: 불릴 때마다 한 줄을 찍어, 정말 불렸는지 눈으로 확인합니다.
def fake_llm(documents):
    print("   (모델 호출됨: 근거", len(documents), "건)")
    return {"answer": "환불은 7일 이내에 신청합니다[1].",
            "insufficient": False, "has_citation": True}

# 확인 1: 근거가 있으면 모델이 불립니다
print(generate(["환불 조항 조각"], fake_llm))

# 확인 2: 근거가 없으면 '모델 호출됨'이 찍히지 않아야 합니다
print(generate([], fake_llm))

실행 결과

출력
   (모델 호출됨: 근거 1 건)
{'answer': '환불은 7일 이내에 신청합니다[1].', 'insufficient': False, 'has_citation': True}
{'answer': '자료에서 확인할 수 없습니다', 'insufficient': True, 'has_citation': False}

채점 기준: documents가 비어 있으면 call_llm을 호출하면 안 된다.

관련 교안: 25차시 「4. 근거가 없으면 LLM을 부르지 않는다」

← 이전 절25차시 · 퀴즈 1 — 재시도 여부로 프롬프트 고르기다음 절 →25차시 · 정리