데이터 보호하면서 LLM 망가뜨리지 않는 법: 가드레일 필터의 내부 작동 방식
OpenAI
Anthropic
이 기사는 LLM 요청을 위한 데이터 보호 계층인 가드레일 필터를 구축하는 엔지니어링 과제를 자세히 설명합니다. 스트리밍 응답에서 개인 데이터 마스킹 및 마스킹 해제, 도구 호출 처리, 여러 API 형식 지원의 복잡성을 강조합니다. 저자는 채팅 완성 API와 메시지 API 모두에 필터를 구현한 경험에서 얻은 통찰력을 공유합니다.
이 기사는 대형 언어 모델과의 상호작용에서 개인 데이터를 보호하기 위해 설계된 가드레일 필터의 개발 과정을 다룹니다. 정규 표현식을 사용해 개인 데이터를 찾는 것은 간단하지만, 실제 문제는 상호작용을 방해하지 않으면서 애플리케이션과 모델 사이에 이 필터를 통합하는 데 있습니다. 이 필터는 일반 요청, 스트리밍, 도구 호출을 처리해야 하며, 메시지 구조를 유지하고 메타데이터를 보존해야 합니다. 같은 데이터 유형의 여러 인스턴스를 처리하기 위해 필터는 매핑 테이블을 사용하며, 각 고유 값에 <PHONE_1>과 같은 고유 플레이스홀더를 할당합니다. 대형 언어 모델은 상태를 유지하지 않기 때문에, 필터는 각 요청마다 전체 대화 기록을 다시 처리해야 합니다. 스트리밍 모드에서는 응답이 청크 단위로 도착하며, 플레이스홀더가 청크에 걸쳐 분할될 수도 있습니다. 필터는 버퍼를 사용해 충분한 데이터를 누적한 후 마스크 해제를 시도합니다. 또한 응답의 콘텐츠, 추론, 도구 호출 인수를 포함한 다양한 필드를 처리하여 모든 필드에서 데이터가 올바르게 복원되도록 보장합니다. 구현 코드 양은 Chat Completions의 스트리밍 기능만으로 약 1,500줄에 달했습니다. 추가적으로, 이벤트 기반 형식을 가진 Messages API를 지원하려면 별도의 구현이 필요했고, 그로 인해 총 테스트 코드 양은 4,000줄을 넘게 되었습니다.
출처: Habr — хаб ИИ —
원문
