본문 바로가기
C.W.K.
Stream
Lesson 03 of 10 · published

프롬프트와 응답 기록 — 정보는 새지 않게

~12 min · production, logging, privacy

Level 0수련생
0 XP0/100 lessons0/14 achievements
0/120 XP to next level120 XP to go0% complete

조사할 자료는 필요하지만 전부 남길 수는 없어

기록은 디버깅, 평가 사례 발굴, 규정 준수에 필요해. 하지만 사용자 원문에는 개인정보, 규제 대상 내용, 실수로 붙인 비밀이 있을 수 있어. 조사할 만큼은 남기되 정책이 허용한 것 이상은 보관하지 않는 규율이 필요해.

남길 항목

  • 프롬프트 버전, 모델, 샘플러 매개변수는 항상.
  • 범주별 토큰 사용량도 항상.
  • 사용자 입력은 민감정보를 가리고 정책에 따라 보통 1~90일만.
  • 도구 호출과 반환값도 같은 가림 규칙으로.
  • 모델 출력도 같은 규칙으로.
  • 어떤 검증기와 필터가 표시했는지는 항상.

기록 전에 가리고 단계별로 보관해

  • 정규식과 분류기로 이메일, 전화번호, 주민번호, 신용카드를 기록 전에 걷어내.
  • 개수와 범주 표시는 오래 남기고 원문은 짧게 남겨.
  • 예를 들어 전체 글 7일, 가린 글 30일, 집계값은 장기로 나눠.

Code

기록 전 민감정보 가리기·python
import re

PATTERNS = {
    "email": re.compile(r"[\w.+-]+@[\w-]+\.[\w.-]+"),
    "phone": re.compile(r"\b\d{3}-\d{3}-\d{4}\b"),
    "ssn":   re.compile(r"\b\d{3}-\d{2}-\d{4}\b"),
}

def redact(text: str) -> tuple[str, dict[str, int]]:
    counts = {}
    for name, p in PATTERNS.items():
        text, n = p.subn(f"[{name}]", text)
        if n: counts[name] = n
    return text, counts

External links

Exercise

끝점 하나의 기록 보관 정책을 감사해봐. 필요 이상으로 원문을 남기는 필드를 찾고 단계별 보관 일정을 제안해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.