13차시. 프롬프트 최적화
퀴즈 1 — 인용 번호가 조각 개수 안인지 검사
[n] 인용이 1 이상이고 조각 개수 이하인지 검사하세요. 하나라도 벗어나면 False.
빈칸 코드에서 시작합니다.
import re
def check_citation(answer, n_docs):
pass결과 보기 (예시 풀이)
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. 실습 ③ — 출처 인용 검증하기」