가드레일 설계 — 모델이 삽질하기 전에 막는 법
입력 필터, 출력 검증, 행동 제한으로 안전한 하네스 만들기
Claude Code를 쓰면 "이 파일을 삭제해도 되나요?"라고 물어본다. 이게 실행 단계 가드레일이다. 물어보지 않고 삭제하면 복구가 안 된다.
입력 가드레일
모델에 전달되는 입력을 사전에 검증한다.
프롬프트 인젝션 방어 — 사용자 입력이 시스템 프롬프트를 덮어쓰지 못하도록 분리. 입력을 XML 태그나 delimiter로 격리하는 방식이 일반적이다.
토큰 길이 제한 — 입력이 컨텍스트 윈도우를 초과하면 truncation 전략이 필요하다. 무작정 자르면 중요한 정보가 빠진다.
PII 마스킹 — 개인정보(이메일, 전화번호, 주민번호)를 모델에 전달하기 전에 마스킹.
실행 가드레일
모델이 도구를 사용할 때 행동을 제한한다.
허용 목록 기반 도구 사용 — 모델이 호출 가능한 도구를 화이트리스트로 관리. "파일 읽기는 OK, 파일 삭제는 승인 필요."
타임아웃과 재시도 횟수 제한 — 무한 루프 방지. 5번 재시도해도 안 되면 에스컬레이션.
샌드박스 실행 — 코드 실행은 격리된 환경에서. Docker 컨테이너나 VM에서 돌리면 호스트에 영향을 안 준다.
출력 가드레일
모델의 응답을 사용자에게 전달하기 전에 검증한다.
스키마 검증 — JSON 출력이 기대하는 스키마에 맞는지. 필수 필드 누락, 타입 불일치를 잡는다.
유해 콘텐츠 필터 — 모델이 부적절한 내용을 생성하면 차단. 별도의 분류 모델로 체크하는 경우도 있다.
사실 확인(grounding) — 모델이 참조한 정보가 실제로 제공된 컨텍스트에 있는지 확인. hallucination 방지.
동작 흐름
입력 가드레일 — 프롬프트 인젝션 방어, 토큰 길이 제한, PII 마스킹
실행 가드레일 — 허용 목록 기반 도구 사용, 타임아웃, 샌드박스
출력 가드레일 — 스키마 검증, 유해 콘텐츠 필터, 사실 확인(grounding)
3단계 전부 적용해야 완전한 가드레일 — 하나만 있으면 구멍이 생긴다