이 노트북은 대화형입니다. 로컬에서 실행하거나 아래 링크를 사용할 수 있습니다:
PII 데이터와 함께 Weave를 사용하는 방법
- PII 데이터를 식별하고 마스킹하기 위한 정규식(regular expressions).
- 파이썬 기반 데이터 보호 SDK인 Microsoft의 Presidio. 이 도구는 마스킹 및 대체(replacement) 기능을 제공합니다.
- PII 데이터를 익명화하기 위해 Presidio와 함께 사용하는, 가짜 데이터를 생성하는 Python 라이브러리 Faker.
weave.op 입력/출력 로깅 커스터마이징 및 _autopatch_settings_을 사용하여 PII 마스킹 및 익명화를 워크플로에 통합하는 방법을 설명합니다. 자세한 내용은 로그되는 입력과 출력 커스터마이즈를 참고하세요.
시작하려면 다음 단계를 따르세요:
- 개요 섹션을 확인합니다.
- 사전 준비 사항을 완료합니다.
- PII 데이터를 식별, 마스킹 및 익명화하기 위한 사용 가능한 방법을 검토합니다.
- 이 방법들을 Weave 호출에 적용합니다.
개요
weave.op을 사용한 입력 및 출력 로깅 방식과, Weave에서 PII 데이터를 처리할 때의 모범 사례를 살펴봅니다.
weave.op을 사용해 입력 및 출력 로깅 사용자 정의하기
weave.op()의 인자로 전달합니다.
PII 데이터와 함께 Weave 사용 시 모범 사례
테스트 시
- PII 탐지를 확인하기 위해 익명화된 데이터를 로그로 남기세요
- Weave Traces로 PII 처리 프로세스를 추적하세요
- 실제 PII를 노출하지 않고 익명화 성능을 측정하세요
프로덕션 환경에서
- PII 원본 데이터는 절대 로그에 남기지 마세요
- 민감한 필드는 로깅 전에 암호화하세요
암호화 팁
- 나중에 복호화해야 하는 데이터에는 복호화 가능한 암호화를 사용하세요
- 역으로 복원할 필요가 없는 고유 ID에는 단방향 해시를 적용하세요
- 암호화된 상태로 분석해야 하는 데이터에는 특수 암호화 기법 사용을 고려하세요
사전 준비 사항
- 먼저 필요한 패키지를 설치합니다.
- 다음에서 API key를 생성합니다:
- Weave 프로젝트를 초기화합니다.
- 10개의 텍스트 블록이 포함된 데모용 PII 데이터셋을 로드합니다.
비식별화 방법 개요
- 정규식(regular expressions) 으로 PII 데이터를 식별하고 비식별화합니다.
- Microsoft Presidio: 비식별화 및 치환 기능을 제공하는 Python 기반 데이터 보호 SDK입니다.
- Faker: 가짜 데이터를 생성하는 Python 라이브러리입니다.
방법 1: 정규 표현식을 사용해 필터링하기
방법 2: Microsoft Presidio를 사용한 비식별화
"My name is Alex"에서 Alex를 <PERSON>으로 대체합니다.
Presidio에는 일반적인 엔티티에 대한 기본 지원이 포함되어 있습니다. 아래 예제에서는 PHONE_NUMBER, PERSON, LOCATION, EMAIL_ADDRESS, US_SSN인 모든 엔티티를 마스킹합니다. Presidio 처리 과정은 하나의 함수로 캡슐화되어 있습니다.
방법 3: Faker와 Presidio를 사용한 치환 기반 익명화
"My name is Raphael and I like to fish. My phone number is 212-555-5555"
이 데이터를 Presidio와 Faker로 처리하면 다음과 같이 변환될 수 있습니다:
"My name is Katherine Dixon and I like to fish. My phone number is 667.431.7379"
Presidio와 Faker를 효과적으로 함께 사용하려면, 사용자 정의 연산자에 대한 참조를 제공해야 합니다. 이 연산자들은 Presidio가 PII를 가짜 데이터로 치환하는 데 사용할 Faker 함수들을 호출하도록 지정합니다.
방법 4: autopatch_settings 사용
autopatch_settings를 사용하면 지원되는 하나 이상의 LLM 통합에 대해 초기화 시점에 PII 처리를 직접 구성할 수 있습니다. 이 방법의 장점은 다음과 같습니다.
- PII 처리 로직이 초기화 시점에 중앙집중식으로 정의되므로, 여기저기 흩어진 커스텀 로직을 둘 필요가 줄어듭니다.
- 특정 통합에 대해서는 PII 처리 워크플로를 커스터마이즈하거나 완전히 비활성화할 수 있습니다.
autopatch_settings를 사용해 PII 처리를 구성하려면, 지원되는 LLM 통합 중 하나의 op_settings에서 postprocess_inputs 및/또는 postprocess_output을 정의하십시오.
Weave 호출에 메서드 적용하기
predict 함수를 포함합니다. Anthropic의 Claude Sonnet은 Traces를 사용해 LLM 호출을 추적하면서 감성 분석을 수행하는 데 사용됩니다. Claude Sonnet은 텍스트 블록을 입력으로 받아 다음 감성 분류 중 하나를 출력합니다: positive, negative, 또는 neutral. 추가로, PII 데이터가 LLM으로 전송되기 전에 마스킹되거나 익명화되도록 후처리(postprocessing) 함수도 포함합니다.
이 코드를 실행하면 Weave 프로젝트 페이지와, 실행한 특정 trace(LLM 호출)에 대한 링크들을 받게 됩니다.
Regex 메서드
Presidio 마스킹(redaction) 방법

Faker 및 Presidio를 사용한 치환 방법

autopatch_settings 메서드
anthropic에 대한 postprocess_inputs를 postprocess_inputs_regex() 함수로 설정합니다. postprocess_inputs_regex 함수는 Method 1: Regular Expression Filtering에서 정의한 redact_with_regex 메서드를 적용합니다. 이제 redact_with_regex가 모든 anthropic 모델의 모든 입력에 자동으로 적용됩니다.
(선택) 데이터 암호화

cryptography 라이브러리의 Fernet 대칭키 암호화를 사용해 데이터에 추가적인 보안 계층을 더할 수 있습니다. 이 방식은 익명화된 데이터가 가로채이더라도 암호화 키 없이는 내용을 해독할 수 없도록 보장합니다.