RAG2026-5일13차시 · 프롬프트 최적화15 / 18← 이전목차다음 →MetaContents

13차시. 프롬프트 최적화

퀴즈 1 — 인용 번호가 조각 개수 안인지 검사

[n] 인용이 1 이상이고 조각 개수 이하인지 검사하세요. 하나라도 벗어나면 False.

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

Python
import re

def check_citation(answer, n_docs):
    pass
결과 보기 (예시 풀이)
Python
import re

def check_citation(answer, n_docs):
    # 답에서 [숫자] 모양을 모두 찾아 정수로 바꿉니다.
    # findall은 괄호 안 숫자만 문자열로 돌려주므로 int()로 바꿉니다.
    nums = [int(x) for x in re.findall(r"\[(\d+)\]", answer)]
    # 인용 번호가 하나도 없으면 실패입니다.
    if not nums:
        return False
    # 모든 번호가 1 이상, 조각 개수 이하일 때만 통과입니다.
    return all(1 <= n <= n_docs for n in nums)

# 조각 2개, [1]과 [2]만 씀 -> True
print(check_citation("환불은 7일 이내입니다[1]. 교환은 30일입니다[2].", 2))

# 조각 2개인데 [3]이 나옴 -> 없는 근거를 인용했으므로 False
print(check_citation("환불은 7일 이내입니다[1]. 수수료는 10%입니다[3].", 2))

# 번호가 하나도 없음 -> False
print(check_citation("환불은 7일 이내입니다.", 2))

# [0]도 범위 밖 -> False
print(check_citation("환불은 7일 이내입니다[0].", 2))

실행 결과

출력
True
False
False
False

채점 기준: 번호가 없거나 범위를 벗어나면 False.

관련 교안: 13차시 「6. 실습 ③ — 출처 인용 검증하기」

← 이전 절13차시 · 실습 1 — 프롬프트 최적화 실습 따라 하기다음 절 →13차시 · 퀴즈 2 — 버전 이름으로 프롬프트 틀 고르기