25차시. Generator Node 분리
퀴즈 2 — 근거가 없으면 모델을 부르지 않는 생성
문서가 없으면 모델을 호출하지 마세요.
빈칸 코드에서 시작합니다.
def generate(documents, call_llm):
pass결과 보기 (예시 풀이)
# 근거 문서가 없으면 모델을 부르지 않고 바로 안내 결과를 돌려줍니다.
# 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을 호출하면 안 된다.