본문으로 건너뛰기
r/LangChain조회 1

piighost 개인정보 비식별화 라이브러리

piighost가 LLM에는 placeholder를, tool에는 실제 개인정보를 전달합니다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

piighost는 LLM 프롬프트에 들어가는 이름과 이메일 같은 개인정보를 placeholder로 치환하는 Python library입니다. LangChain의 PIIAnonymizationMiddleware가 agent pipeline 앞단에서 값을 바꾸고, tool 호출 시에만 원래 값을 복원하며 모델에는 placeholder를 계속 전달합니다. thread와 tool 호출 사이에서 동일한 값에 동일한 placeholder를 유지하고, regex·GLiNER2·spaCy·Transformers·Presidio·LLM 기반 detector를 선택할 수 있습니다. Pydantic AI와 LlamaIndex connector, Docker 기반 OpenAI-compatible proxy도 제공되며 MIT license를 적용했습니다.

실용적 조언

  • LangChain agent에서 개인정보를 모델 입력 전에 치환하려면 detector를 만들고 `ThreadAnonymizationPipeline`에 연결한 뒤 `PIIAnonymizationMiddleware`를 `create_agent`의 middleware 목록에 넣으면 됩니다. 모델의 system prompt에는 placeholder를 실제 값처럼 취급하고 형식을 바꾸지 않은 채 tool에 전달하라는 규칙을 추가해야 합니다. 예제는 `ExactMatchDetector`에 사람 이름과 이메일을 직접 등록하는 방식이므로, 탐지 범위를 넓힐 때는 제공된 다른 detector 구현으로 교체하면 됩니다.
  • 대화와 tool 호출 전체에서 같은 개인정보를 같은 placeholder로 유지하려면 `thread_id`를 포함한 configurable 설정을 agent 호출에 전달해야 합니다. 예제에서는 `{"configurable": {"thread_id": "demo-thread"}}`를 사용해 `ainvoke`를 실행합니다. tool에는 실제 값이 전달되지만 모델이 받는 메시지에는 placeholder가 남는 분리 구조를 확인할 수 있습니다.

섹션별 상세

01
작성자는 piighost를 사용하면 사용자가 입력한 개인정보가 LLM 프롬프트에 그대로 들어가지 않는다고 설명합니다. PIIAnonymizationMiddleware가 pipeline을 감싸 이름과 이메일을 `>` 같은 placeholder로 바꾸며, 같은 값에는 thread와 tool 호출 전반에서 동일한 placeholder를 유지합니다. 예시에서는 John, 이메일 주소, Patrick이 모두 placeholder로 치환되어 모델이 실제 식별 정보를 보지 못합니다.
02
이 구현은 tool을 사용하는 agent에서도 개인정보와 실행에 필요한 실제 값을 분리합니다. 모델은 placeholder를 인자로 send_mail 호출을 만들지만, piighost가 tool 실행 직전에 내부 매핑을 이용해 원래 수신자 주소를 전달하고 모델에는 placeholder만 남깁니다. 따라서 개인정보를 모델 컨텍스트에서 감추면서 실제 작업 흐름은 유지하는 구조입니다.
03
detector를 하나로 고정하지 않고 regex, GLiNER2, spaCy, Transformers, Presidio, LLM 기반 구현을 연결할 수 있도록 구성했습니다. LangChain 외에도 Pydantic AI와 LlamaIndex connector, `base_url`만 바꾸는 Docker 기반 OpenAI-compatible proxy가 제공됩니다. 프로젝트는 MIT license를 적용했고, LangChain 예제에는 `create_agent`, `send_mail`, `thread_id` 설정과 비동기 `ainvoke` 호출이 포함되어 있습니다.

용어 해설

개인 식별 정보(PII)
이름·이메일 주소처럼 특정 개인을 알아볼 수 있게 하는 데이터입니다. piighost는 이런 값을 LLM 프롬프트에서 placeholder로 바꾸고, 실제 값이 필요한 tool 호출 시에만 원래 값을 전달합니다.
미들웨어(Middleware)
애플리케이션의 입력과 출력 사이에서 공통 처리를 끼워 넣는 소프트웨어 계층입니다. PIIAnonymizationMiddleware는 agent가 모델에 요청을 보내기 전 개인정보를 치환하고 응답과 tool 호출을 연결합니다.
자리표시자(Placeholder)
실제 값을 대신해 사용하는 임시 문자열입니다. 이 구현에서는 모델이 개인정보 대신 동일한 placeholder를 계속 보며, tool에는 내부 매핑을 통해 원래 값이 전달됩니다.
도구 호출(Tool Calling)
LLM이 외부 함수나 API를 호출하도록 요청을 생성하는 방식입니다. piighost는 모델이 placeholder를 인자로 만든 상태에서 실제 개인정보를 복원해 tool을 실행하고, 모델에는 치환된 값만 유지합니다.
GLiNER2 개체 탐지기(GLiNER2)
텍스트에서 사람 이름이나 이메일처럼 미리 정한 유형의 개체를 찾는 탐지 모델입니다. piighost는 정규식과 함께 GLiNER2, spaCy, Transformers, Presidio, LLM 기반 detector를 선택적으로 연결할 수 있습니다.

코드 예제

python
from piighost.components.detector import ExactMatchDetector
from piighost.integrations.langchain import PIIAnonymizationMiddleware
from piighost.pipeline import ThreadAnonymizationPipeline

labels = {"Patrick Dupont": "PERSON", "[email protected]": "EMAIL"}
detector = ExactMatchDetector(labels)
pipeline = ThreadAnonymizationPipeline(detector)
middleware = PIIAnonymizationMiddleware(pipeline)

LangChain agent에 ExactMatchDetector와 PIIAnonymizationMiddleware를 연결해 입력에 포함된 이름과 이메일을 thread 단위로 치환하는 핵심 설정입니다.

python
agent = create_agent(
    model=model,
    system_prompt=SYSTEM_PROMPT,
    tools=[send_mail],
    middleware=[middleware],
)

create_agent에 tool과 개인정보 비식별화 middleware를 함께 등록해 모델 호출과 tool 실행 사이에 piighost 처리를 삽입합니다.

언급된 도구

piighost추천링크

LLM 프롬프트와 agent tool 호출 사이에서 개인정보를 치환하고 필요한 시점에 원래 값을 전달하는 Python library입니다.

LangChain중립

`create_agent`와 middleware를 이용해 piighost의 개인정보 비식별화 처리를 agent pipeline에 연결합니다.

Presidio중립

piighost에 연결할 수 있는 개인정보 탐지 detector 구현 중 하나입니다.

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 08. 24.수집 2026. 08. 24.출처 타입 REDDIT

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.