32차시. 고도화된 Modular RAG
퀴즈 2 — 문서 질문만 검색으로 보내기
document가 아니면 검색 함수를 호출하지 마세요.
빈칸 코드에서 시작합니다.
def dispatch(intent, search, other):
pass결과 보기 (예시 풀이)
# 질문 유형이 document일 때만 검색 함수를 부릅니다.
def dispatch(intent, search, other):
# 인사, 계산, 범위 밖 질문은 검색하지 않고 다른 처리로 보냅니다.
if intent != "document":
return other(intent)
# 문서 질문만 검색합니다.
return search()
# 검색이 몇 번 불렸는지 세기 위한 가짜 검색 함수입니다.
calls = []
def fake_search():
calls.append("search")
return "근거 조각 2개로 답을 만듭니다."
def short_answer(intent):
replies = {"greeting": "안녕하세요.", "calc": "계산 결과를 돌려줍니다.", "scope": "문서 밖 질문입니다."}
return replies.get(intent, "처리할 수 없습니다.")
# 네 유형을 차례로 넣어 봅니다.
for intent in ["greeting", "calc", "scope", "document"]:
print(f"{intent:<9} -> {dispatch(intent, fake_search, short_answer)}")
# 검색은 document 한 번만 불렸어야 합니다.
print("검색 호출 횟수:", len(calls))
실행 결과
greeting -> 안녕하세요.
calc -> 계산 결과를 돌려줍니다.
scope -> 문서 밖 질문입니다.
document -> 근거 조각 2개로 답을 만듭니다.
검색 호출 횟수: 1채점 기준: intent가 document일 때만 search를 호출한다.
관련 교안: 32차시 「1. 오늘 완성할 시스템」