더 자연스러운 초안을 얻으려고 프롬프트를 고치기 전에, 초안이 사용할 수 있는 자료부터 좁혀야 했다. K-POP PULSE의 운영 절차에는 원문에서 사실표를 만들고 그 범위 안에서 글을 쓰게 하는 단계가 있다. 나는 이 표를 글의 요약보다 문장 작성자가 넘지 않아야 할 경계로 읽는다.
그 경계를 만들었다고 사실표가 언제나 맞는 것은 아니다. 시간 환산이 틀리거나 원문 일부가 빠지거나 관측하지 못한 숫자가 기본값으로 채워질 수 있다. 이번에는 실제 사실표 코드와 운영 기록을 대조하면서, AI에 맡길 일과 코드·사람이 확인할 일을 어떻게 나누었는지 풀어본다.
긴 원문 대신 출처와 항목의 역할을 정한다
당시 사실표에는 게시물 식별자, 제목, 채널, 게시 시각, 영상 길이, 통계와 설명란 항목이 들어 있다. 원고마다 무엇을 확인했는지 같은 형태로 읽을 수 있게 하는 구조다. 원본을 모두 모델에게 주는 것과 필요한 항목을 출처와 함께 정리하는 것은 책임이 다르다.
나는 표를 간단하게 만드는 것 자체를 목표로 삼지 않는다. 독자의 질문에 답하기 위해 필요한 정보가 빠지지 않았는지와 각 값이 어디서 왔는지를 함께 본다. 새로운 제품 글이라면 모델·사양·확인일이 필요할 수 있고, 일정 글이라면 날짜가 확정인지 시각도 공지됐는지가 중요해질 수 있다.
시간 계산은 문장 작성과 나누었다
기록에는 UTC 시각을 그대로 한국 시간처럼 쓴 초안 문제가 남아 있다. 이후 사실표를 만드는 코드에서 한국 시간 표기를 환산해 전달하는 선택이 보인다. 숫자 몇 자가 사실표 안에 있다는 것만으로 그 숫자가 올바른 시간대에 놓였다는 뜻은 아니었다.
내가 가져갈 판단은 계산 가능한 일을 문장의 그럴듯함으로 확인하지 않는 것이다. 날짜와 시간대가 있는 값을 코드로 환산하고, 결과를 사실표에 넣고, 문장에서는 그 값을 어떻게 읽기 쉽게 전달할지 다룬다. 해외 독자를 위한 다른 시간대까지 쓸 때는 날짜와 계절 조건도 함께 확인해야 한다.
관측한 시점까지 있어야 숫자의 뜻이 남는다
게시 시각은 콘텐츠가 나온 때이고 조회 수를 읽은 시각은 숫자를 관측한 때다. 두 시각이 같지 않다. 현재 수치를 예전 게시 시점의 수치처럼 옮기면 문장 안의 경과 시간과 성과 설명이 달라질 수 있다. 나는 숫자와 숫자를 읽은 시점을 함께 다루는 편이 좋다고 본다.
초안에 없는 수치를 더하지 말라는 기준은 숫자를 쓰지 말라는 뜻이 아니다. 무엇을 관측했는지, 언제 관측했는지, 어떤 계산을 별도로 했는지가 다시 확인될 수 있어야 한다는 조건이다. 표에 들어 있는 숫자라는 이유만으로 비교·합산·속도 해석까지 모두 허용되는 것은 아니다.
없다는 값과 실제로 0이라는 값은 다르다
이번에 읽은 과거 사실표 코드에는 통계 항목이 없으면 0을 기본값으로 넣는 경로도 있었다. 이것을 그대로 관측된 0이라고 읽어도 되는지는 별도의 확인 문제다. 좋아요 수를 읽지 못한 상태와 좋아요 수가 실제로 0인 상태는 같은 설명이 될 수 없다.
아래는 이 차이를 유지하려고 새로 작성한 작은 예제다. 자료가 없으면 None을 남기고 측정된 0은 숫자 0으로 받는다. 잘못된 숫자 형식은 실패로 돌린다. 기본값을 넣기 전의 원본 응답값을 전달해야 한다. 이미 누락을 0으로 바꾼 뒤에는 이 함수만으로 두 상태를 되살릴 수 없고 원본을 다시 읽어야 한다. 과거 프로그램에 이 수정이 적용되어 있다고 소개하는 코드가 아니다.
코드와 구현 살펴보기
새 설명용 예제. 관측 누락과 실제 0을 구별하며 현재 원본 프로그램의 수정본이 아니다.
"""A new example: missing observations are not measured zeroes."""
import re
def observed_count(raw):
if raw is None:return None
if type(raw) is int and raw>=0:return raw
if isinstance(raw,str) and re.fullmatch(r'[0-9]+',raw):return int(raw)
raise ValueError('Expected a measured nonnegative integer or no observation')
사실표도 검토 대상에 넣는다
표에 필요한 근거가 빠졌다면 초안이 검증에 막히는 이유가 문장만은 아닐 수 있다. 당시 코드에서 설명란 앞부분을 잘라 전달하는 구조를 읽을 수 있다. 원문의 뒤쪽에 필요한 일정이 있는지 확인하지 않은 채 짧아진 표를 완전한 원문처럼 쓰면 확인 경계가 줄어든다.
나는 차단된 문장, 저장된 사실표, 공식 원문을 따로 대조하는 순서를 권한다. 게이트를 느슨하게 바꾸는 대신 누락이 어디서 생겼는지 찾는다. 이 글은 전체 절차를 다루고, 잘린 설명란 때문에 실제 날짜를 놓친 별도 장면은 그 기록을 더 모아 따로 풀어낼 것이다.
표를 넘긴 뒤에도 검증자의 역할은 남는다
운영 기록의 초안 요청에는 사실표 밖 숫자를 만들지 말 것, 영상을 본 것처럼 쓰지 말 것 같은 경계가 함께 전달된다. 돌아온 문장은 다시 사람이 읽고 발행 통로의 검사를 지난다. 나는 초안 작성과 검증을 같은 단계로 뭉치지 않는 것이 중요하다고 본다.
새 숫자 예제는 누락·실제 0·숫자 문자열과 잘못된 입력을 다루는 로컬 합성 검사를 통과했다. 그것으로 공식 자료의 진실성이나 현재 모든 원고를 검증한 것은 아니다. 실제 적용에서는 출처와 관측 시점, 사실표의 버전, 원고가 사용한 값의 연결까지 남겨야 한다.
- 확인하지 못한 값이 0이나 빈 문장으로 감추어지지 않았는가?
- 시각과 수치가 같은 관측 조건에서 나온 것인가?
- 줄인 원문 때문에 이 글에 필요한 근거가 빠지지 않았는가?
- 초안의 주장과 저장한 근거를 다시 대조할 수 있는가?