KSCOLD LogoKSCOLD
Blog
Feed
Product
Admin Night
Vault
Guestbook
Info

Vault 목록

Guardrails

연결된 노트와 함께 읽기

Guardrails

2026년 7월 16일
  • Guardrails = 에이전트의 입출력에 안전·규정·정책 필터를 끼우는 방어층. 환각, 유해 콘텐츠, PII 유출, 프롬프트 인젝션, 도구 오·남용을 막는다.
  • 한 줄로: "LLM이 무엇을 보고, 무엇을 말하고, 무엇을 하는지" 를 검문소처럼 통제.

어디에 둘까

Mermaid스크롤로 확대 · 드래그로 이동

입력 가드레일 — 막아야 할 것

  • 프롬프트 인젝션("위 지시는 무시하고...").
  • PII(주민번호, 카드번호) 자동 마스킹.
  • Off-topic — 정해진 도메인 밖 질문 차단.
  • 모욕·공격적 발화 필터.

출력 가드레일

  • 환각 검출 — 컨텍스트에 없는 사실 응답 차단.
  • 코드/명령어 위험성 분류 (rm -rf 등).
  • 금융·의료 조언 면책 문구 자동 첨부.
  • 회사 정보 누출 (시스템 프롬프트 ‟유출 attempt).

도구 가드레일

  • 비용/권한이 큰 도구 호출 전 HITL 승인.
  • 허용 도메인 화이트리스트 (fetch_url이 사내 URL만 허용).
  • 호출 횟수 제한(rate limit) — 무한 루프 방어.

구현 옵션

1. 규칙 기반

Python
  • 빠르고 결정론적. 정규식·키워드 리스트로 처리 가능한 케이스에 강함.

2. 모델 기반

  • 별도 분류 LLM이 "이 출력이 위험한가?"를 채점.
  • OpenAI Moderation API, AWS Bedrock Guardrails, Llama Guard.
Python

3. 정책 라이브러리

  • NVIDIA NeMo Guardrails — YAML로 정책 정의, dialogue flow까지 통제.
  • Guardrails AI — Pydantic-like 스키마로 출력 검증·재시도.
  • Bedrock Guardrails — AWS 매니지드, 주제 차단·민감 정보 필터.

계층형 Guardrail 설계

한 번의 "안전 검사"에 모든 책임을 몰지 않는다. 빠르고 결정적인 규칙을 앞에 두고, 의미 판단·승인은 필요한 곳에만 둔다.

Mermaid스크롤로 확대 · 드래그로 이동
계층대표 규칙결과
입력인증, rate limit, PII, prompt injection 신호차단 또는 마스킹
모델 전후역할 경계, 출력 스키마, 근거 부족재생성 또는 안전한 응답
도구 전schema, allowlist, 권한, 비용 한도거부, 축소, 승인 요청
도구 후민감 결과 마스킹, 성공 여부 확인안전한 ToolMessage 또는 오류
실행 후감사 로그, 이상 패턴, 회귀 데이터 수집관측·평가

규칙이 명확하면 결정론적 검사부터 사용한다. 별도 LLM 또는 분류 모델은 의미 판단에 유용하지만 비용·지연·오판 가능성이 있으므로 단독 최종 방어선으로 두지 않는다.

LangChain Middleware 예

LangChain Agent에서는 middleware로 agent 시작 전·모델 호출 주변·도구 호출 주변·최종 응답 후에 guardrail을 넣을 수 있다.

Python

이 예는 이메일을 모델에 넣기 전·사용자에게 보이기 전에 정제하고, 외부 발송 도구는 승인을 요구한다. 자체 LangGraph workflow에서는 같은 순서를 node 또는 tool wrapper로 명시적으로 구현할 수 있다.

정책 결과를 명확히 한다

  • allow: 조건을 만족해 실행한다.
  • transform: 민감값을 마스킹하거나 안전한 형태로 바꾼다.
  • require approval: 사람에게 action과 인자를 보여 준다.
  • deny: 실행하지 않고 이유를 설명한다.

"경고만 남기고 실행"은 관측 단계에서는 유용하지만, 위험한 작업의 최종 정책이 되어서는 안 된다. 정책마다 fail-open과 fail-closed 중 무엇을 택하는지 정하고 테스트한다.

Bedrock Guardrails 예 (개념)

YAML
  • 빗썸·미래에셋 같은 금융권 사례에서 표준 패턴.

운영 팁

  • 가드레일은 항상 켜져 있다고 신뢰하지 말 것 — fail-open이면 무용지물. fail-closed로 설계.
  • 입력·출력·도구 3층에 모두 두라 — 하나만 뚫리면 끝.
  • 차단된 사례를 로그로 모아 회귀 평가 데이터셋으로 활용.
  • 가드레일 자체도 LLM이면 비용·지연이 든다 → 빠른 규칙 → 느린 모델 순으로 단계화.

관련

  • Evaluation — Safety 평가는 가드레일과 직결.
  • Observability — 차단 이벤트 추적.
  • Human-in-the-loop — 위험 도구는 결국 사람 승인.
  • MCP(Model Context Protocol) — 도구 권한 격리 메커니즘.
  • MCP Security — MCP 서버·도구·결과의 신뢰 경계.
  • Tool Execution Policy
  • Grounded Generation
  • Contract Guardrail Pipeline

공식 문서

  • LangChain Guardrails
  • LangChain Human-in-the-loop

Synapse Map Insight

PII_RE = re.compile(r"\d{6}-\d{7}") def sanitize(text: str) -> str: return PII_RE.sub("[REDACTED]", text)
mod = openai.moderations.create(input=text) if mod.results[0].flagged: return "그 요청에는 응답할 수 없어요."
from langchain.agents import create_agent from langchain.agents.middleware import ( HumanInTheLoopMiddleware, PIIMiddleware, ) agent = create_agent( model="your-model", tools=[search_docs, send_email], middleware=[ PIIMiddleware("email", strategy="redact", apply_to_input=True), PIIMiddleware("email", strategy="redact", apply_to_output=True), HumanInTheLoopMiddleware( interrupt_on={"send_email": True, "search_docs": False} ), ], )
denied_topics: - name: "투자 권유" examples: ["어떤 종목을 사야 해?"] sensitive_information: - type: PHONE action: MASK content_filters: hate: HIGH violence: HIGH