
Gemini Notebook의 참조 업데이트를 Python으로 감지하기
요약
Gemini Notebook 사용 시 참조 자료의 업데이트를 감지하기 위해 Python으로 SHA-256 해시 기반의 검사 도구를 구현하는 방법을 소개합니다. 자료의 버전 관리를 통해 답변의 근거가 되는 데이터의 변경 사항을 정확히 추적할 수 있습니다.
핵심 포인트
- SHA-256 해시를 사용하여 파일 내용의 변경 여부를 정확히 판별
- 추가(added), 삭제(removed), 변경(changed) 사항을 구분하여 관리
- URL 대신 로컬에 저장된 파일의 해시를 사용하여 데이터 일관성 확보
- 메타데이터(URL, 일시)와 내용(Hash)을 분리하여 출처와 내용 추적 최적화
사실, 노트북에 자료를 추가할수록 답변의 근거를 추적하기는 어려워진다. Gemini Notebook처럼 자료를 모아둔 곳에서 코드까지 실행할 수 있게 되면 더욱 그렇다. URL만 남겨두고 "이 자료를 보았다"로 끝내는 운용 방식은, 시간이 흐를수록 위험해진다.
Google은 7월 16일, NotebookLM을 Gemini Notebook으로 개칭하고, 노트북별 클라우드 실행 환경을 도입한다고 발표했다. 나는 이 뉴스를 보고, 모델보다 먼저 자료의 버전을 고정하고 싶어졌다. 자료가 업데이트되었음에도 이전과 동일한 근거로 취급하면, 답변만 재평가할 뿐 원인까지 추적할 수 없기 때문이다.
그래서 노트북에 넣기 전의 자료를 디렉토리에 두고, 파일의 SHA-256을 JSON에 기록하는 작은 검사 도구를 작성했다. 외부 라이브러리는 사용하지 않는다.
source_manifest.py로 저장한다. snapshot은 자료 일체를 기록하며, diff는 두 기록을 비교한다. 수정 날짜가 아니라 내용의 해시(Hash)를 확인하므로, 복사나 동기화로 인해 시간이 바뀌어도 판정이 흔들리지 않는다.
import argparse
import hashlib
import json
...
자료를 가져오기 직전과, 답변을 재실행하기 직전에 스냅샷을 찍는다.
python3 source_manifest.py snapshot sources manifests/before.json
# sources/ 의 자료를 업데이트한 후
python3 source_manifest.py snapshot sources manifests/after.json
...
before.json과 after.json은 sources/ 외부에 둔다. 자료와 같은 장소에 두면, 다음 스냅샷에서 기록 파일 자체를 자료로 간주하게 된다. 이러한 자기 참조는 차분이 매번 발생하는 원인이 된다. 커맨드 측에서 상위 디렉토리를 만들도록 되어 있으므로, 처음에 manifests/를 준비할 필요는 없다.
방금 2개 파일의 자료로 확인했다. 한쪽을 수정하고, 한쪽을 삭제하고, 1개 파일을 추가했을 때의 출력은 다음과 같았다.
{
"added": ["limits.md"],
"removed": ["policy.txt"],
...
changed뿐만 아니라 removed를 출력하는 것이 포인트다. 이전 답변이 삭제된 자료를 인용하고 있다면, 추가된 자료보다 먼저 재검토해야 한다. 파일 이름만 바꾸더라도 removed와 added로 나뉘기 때문에, 의도한 이동인지 여부도 여기서 포착할 수 있다.
이 검사가 알 수 있는 것은 입력이 이전과 동일한지 여부까지다. PDF의 표현이 바뀌었지만 의미가 같은지, 반대로 수치 한 줄만 바뀌어 답변에 영향을 줄지는 사람이나 별도의 평가 프로세스가 확인해야 한다. 이 부분을 섞어버리면 차분 검출이 갑자기 모호해진다.
URL을 그대로 노트북에 전달하는 경우에도, 취득한 본문이나 PDF를 일단 이 sources/에 저장한 후 기록한다. URL은 위치일 뿐, 내용의 식별자가 아니다. SaaS의 요금표나 사내 규정처럼 조용히 업데이트되는 자료일수록 이러한 구분이 효과적이다.
한 가지 운용 규칙을 더 정해둔다. 자료를 취득하는 시점에, 취득 원본 URL과 취득 일시를 별도의 메타데이터로 남긴다. 해시만으로는 동일한 본문을 어디에서 가져왔는지 알 수 없다. 출처 추적과 내용 추적은 역할이 다르므로, JSON 하나에 모두 담지 않고 분리하는 것이 나중에 다루기 편했다.
차분이 발생한 자료만을 답변 전 리뷰 대상으로 분류한다.
이전에 작성한 출처 업데이트 대장은 변경 사항을 누가 확인했는지 남기기 위한 운용에 관한 이야기였다. 이번 스크립트는 그 대장에 올려야 할 변경 사항을 기계적으로 걸러내는 입구가 된다.
Gemini Notebook과 같은 실행 환경이 자료 곁에 있으면 프로토타이핑은 상당히 빨라진다. 반면, 빨라진 답변을 나중에 설명하기 위해서는 입력의 버전을 남겨두어야 한다. 처음부터 전체 문장을 비교하는 체계까지 만들 필요는 없다. 우선 해시로 변경 부분을 찾아내고, 바뀐 자료만 재확인한다. 이 순서라면 노트북이 늘어나더라도 근거를 확인해야 할 장소는 크게 늘어나지 않는다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기