NeMo Guardrails, LLM 앱에 가드레일을 더하는 오픈소스 라이브러리
NeMo Guardrails, LLM 앱에 가드레일을 더하는 오픈소스 라이브러리
LLM 기반 애플리케이션을 만들다 보면 '안전한 출력만 내보내게 하려면 어떻게 해야 하지?'라는 고민이 꼭 생겨요. NVIDIA NeMo Guardrails는 그 고민을 풀기 위한 오픈소스 파이썬 라이브러리로, 사용자 입력과 모델 응답에 프로그래밍 가능한 가드레일을 더해 주는 역할을 해요. 위험하거나 주제에서 벗어난 입력, 악의적인 프롬프트, 정책에 어긋나는 출력을 차단·수정·검증할 수 있답니다. 핵심은 애플리케이션 코드나 LLM 백엔드를 다시 만들 필요 없이, 설정 파일과 흐름 로직만으로 안전과 통제 로직을 얹을 수 있다는 점이에요.
NeMo 소프트웨어 스택에서의 위치
NeMo Guardrails 라이브러리는 개발자용 파이썬 패키지로, 가드레일을 만들고 테스트하는 데 초점을 맞춰요. 같은 구성 모델 위에 올라가는 NeMo Guardrails 마이크로서비스는 프로덕션용 컨테이너 이미지를 제공하죠.
| 구분 | 라이브러리 | 마이크로서비스 |
|---|---|---|
| 배포 형태 | PyPI 패키지 | 이 라이브러리를 기반으로 한 컨테이너 이미지 |
| 배포 방식 | 자체 관리 파이썬 환경 | Kubernetes + Helm |
| 설정 형식 | YAML과 Colang | 동일한 YAML과 Colang |
둘 다 같은 설정 형식을 쓰니까 개발은 라이브러리로 로컬에서, 배포는 마이크로서비스로 프로덕션에서 처리할 수 있어요. 설정이 서로 이식 가능하다는 게 큰 장점이죠.
핵심 구성 요소
- Rails: 입력·검색·대화·실행·출력 레일이 LLM 상호작용의 각 단계에서 동작해요.
- Configuration: YAML 파일이 모델, 프롬프트, 레일, 트레이싱 등 런타임 설정을 정의해요.
- Colang flows: Colang이 대화 흐름, 가드레일 로직, 이벤트 기반 동작을 정의해요.
- Custom actions: 파이썬 함수·도구·외부 API로 앱 특화 검사를 추가할 수 있어요.
- Runtime interfaces: 파이썬 SDK와 가드레일 서버가 메시지를 가드레일 인터페이스로 주고받게 해 줘요.
어떤 이점이 있나요
- LLM 호출 앞뒤에 가드레일을 추가하되, 앱이 쓰는 LLM 자체는 바꾸지 않아요.
- 같은 YAML·Colang 설정을 로컬 개발과 마이크로서비스 배포 양쪽에서 재사용해요.
- 내장 가드레일, NVIDIA 안전 모델, 커뮤니티 모델, 타사 API, 커스텀 파이썬 액션을 조합할 수 있어요.
주요 사용 사례
🛡️ 콘텐츠 안전 추가하기
- LLM 자체 점검: LLM 스스로 입력·출력에서 유해 콘텐츠를 검사하게 해요.
- NVIDIA 안전 모델: Llama 3.1 NemoGuard 8B Content Safety를 연동해 콘텐츠 모더레이션을 강화할 수 있어요.
- 커뮤니티 모델: LlamaGuard, Fiddler Guardrails 같은 커뮤니티 솔루션을 쓸 수 있어요.
- 타사 API: ActiveFence, Cisco AI Defense 같은 모더레이션 서비스와 연동해요.
🔒 젤브레이크 보호 추가하기
젤브레이크(jaibrake)는 안전 조치를 우회하려는 적대적 시도를 말해요. NeMo Guardrails는 이런 공격을 막기 위한 다층 보호를 제공해요. NVIDIA NemoGuard의 Jailbreak Detection NIM으로 고급 위협 탐지를, Prompt Security·Pangea AI Guard 같은 타사 서비스와도 연동할 수 있어요.
🎯 대화 주제 통제하기
토픽 컨트롤 가드레일은 대화가 정해진 주제 경계 안에 머물게 해요. Colang 언어로 대화 흐름을 미리 정의하는 다이얼로그 레일, 봇이 다룰 주제를 정하는 토픽 레일, 의미 기반 탐지를 하는 NemoGuard Topic Control NIM을 조합해서 구현해요.
🔐 PII 탐지와 마스킹
개인식별정보(PII) 탐지는 사용자 입력·LLM 출력·검색 콘텐츠에서 이름·이메일·전화번호·주민등록번호 같은 민감 데이터를 찾아 마스킹해요. NVIDIA GLiNER-PII, Microsoft Presidio, Private AI, Polygraf, AutoAlign, GuardrailsAI 같은 여러 연동을 지원해요. 탐지 시 차단할지, 처리 전에 마스킹할지는 설정을 통해 고를 수 있어요.
🤖 에이전트 보안 추가하기
도구를 쓰고 외부 시스템과 상호작용하는 LLM 에이전트를 위한 전용 가드레일이에요. 도구 호출 검증, LangGraph 기반 다중 에이전트 워크플로 보호(이 경우 NEMOGUARDRAILS_LLM_FRAMEWORK=langchain 옵트인이 필요해요), 안전한 도구 연동 가이드라인, 액션 로깅·트레이싱 모니터링을 포함해요. 에이전트 보안의 핵심은 ① LLM과 인증 정보 분리, ② 모든 도구 입력 검증·살균, ③ 도구 호출에 실행 레일 적용, ④ 예상 밖 동작 모니터링이에요.
🔧 직접 만들거나 타사 솔루션 쓰기
커스텀 가드레일을 만드는 방법은 여러 가지예요. 복잡한 로직·외부 연동에는 파이썬 액션을, LangChain 도구를 커스텀 액션으로 등록하려면 LangChain 프레임워크를, 외부 모더레이션·검증 서비스는 타사 API 연동을 쓰면 돼요.
🔌 애플리케이션에 통합하기
파이썬 SDK를 쓰면 바로 앱에 가드레일을 붙일 수 있어요.
from nemoguardrails import LLMRails, RailsConfig
config = RailsConfig.from_path("./config")
rails = LLMRails(config)
response = rails.generate(
messages=[{"role": "user", "content": "Hello!"}]
)
generate 메서드는 OpenAI Chat Completions API와 같은 메시지 형식을 받아요. 서버 방식도 가능한데, SDK로 가드레일을 만든 뒤 다음 명령으로 로컬 서버를 띄우고 /v1/chat/completions 같은 엔드포인트로 가드레일된 채팅 완성 기능을 노출할 수 있어요.
nemoguardrails server --config ./config --port 8000
더 알아보기
- About Configuring Guardrails — YAML 파일, Colang 흐름, 커스텀 액션 등 설정 방법.
- Get Started — 라이브러리 설치와 첫 예제 실행.