RAG2026-5일15차시 · 기본 RAG 앱 만들기17 / 19← 이전목차다음 →MetaContents

15차시. 기본 RAG 앱 만들기

퀴즈 2 — 빈 질문이면 검색하지 않고 안내만

빈 질문이면 검색을 호출하지 않고 안내만 반환하세요.

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

Python
def guard(question, search):
    pass
결과 보기 (예시 풀이)
Python
def guard(question, search):
    # None이거나, 공백을 걷어 내면 아무것도 없는 질문은 검색하지 않습니다.
    if not question or not question.strip():
        return {"answer": "질문을 입력하세요", "sources": []}
    # 내용이 있는 질문만 검색 함수에 넘깁니다.
    return search(question)

# 가짜 검색 함수입니다. 불린 횟수를 세어 검색이 호출됐는지 확인합니다.
calls = []

def fake_search(q):
    calls.append(q)
    return {"answer": f"'{q}' 검색 결과", "sources": [{"file": "manual.pdf", "page": 2}]}

# 공백만 있는 질문 -> 안내만 나오고 검색은 불리지 않아야 합니다.
print(guard("   ", fake_search))
print("검색 호출 횟수:", len(calls))

# 빈 문자열과 None도 같습니다.
print(guard("", fake_search))
print(guard(None, fake_search))
print("검색 호출 횟수:", len(calls))

# 내용이 있는 질문 -> 이번에는 검색이 한 번 불립니다.
print(guard("환불은 며칠 이내인가요?", fake_search))
print("검색 호출 횟수:", len(calls))

실행 결과

출력
{'answer': '질문을 입력하세요', 'sources': []}
검색 호출 횟수: 0
{'answer': '질문을 입력하세요', 'sources': []}
{'answer': '질문을 입력하세요', 'sources': []}
검색 호출 횟수: 0
{'answer': "'환불은 며칠 이내인가요?' 검색 결과", 'sources': [{'file': 'manual.pdf', 'page': 2}]}
검색 호출 횟수: 1

채점 기준: strip 후 빈 문자열이면 search를 호출하면 안 된다.

관련 교안: 15차시 「6. 예외 처리 — 앱이 죽지 않게」 › 6-1) 대비해야 할 상황

← 이전 절15차시 · 퀴즈 1 — 답과 출처를 함께 담은 딕셔너리 돌려주기다음 절 →15차시 · 정리