NeMo Guardrailsとは
NVIDIA NeMo Guardrailsは、LLMアプリケーションに「ガードレール(安全策)」を追加するためのオープンソースツールキットです。プロンプトインジェクション防御・出力フィルタ・トピック制限・ファクトチェック・ジェイルブレイク対策などを宣言的に定義し、LLMの周りに安全層を構築できます。LangChainやAzure OpenAIと統合でき、法人のAIエージェント運用には事実上必須のレイヤー。
基本概念|5種のRails
| Rail種別 | 機能 | 用途 |
|---|---|---|
| Input Rails | ユーザー入力の検査 | プロンプトインジェクション・有害入力検知 |
| Output Rails | LLM出力の検査 | 機密情報漏洩・有害出力ブロック |
| Dialog Rails | 会話フロー制御 | 業務外トピックの拒否・誘導 |
| Retrieval Rails | RAG前の検査 | 権限外データへのアクセス防止 |
| Execution Rails | ツール実行前の検査 | 不正なAPI呼び出し防止 |
GitHubリポジトリと公式ドキュメント
- 公式GitHub:github.com/NVIDIA/NeMo-Guardrails
- 公式ドキュメント:docs.nvidia.com/nemo/guardrails/
- サンプル集:NeMo-Guardrails/examples(HelloWorld / Topical Rails / Safety Rails 等)
- config構造:config.yml + rails/*.co + actions/*.py の3層構成
- ライセンス:Apache 2.0(商用利用可)
LangChain連携の実装パターン
NeMo Guardrailsは LangChain の Runnable インターフェースに準拠した RunnableRails ラッパーを提供。既存のLangChainチェーンに最小コードで挿入できます。
from nemoguardrails import RailsConfig
from nemoguardrails.integrations.langchain.runnable_rails import RunnableRails
config = RailsConfig.from_path("./config")
guardrails = RunnableRails(config)
# 既存のLangChain Chain を包む
chain = guardrails | llm | output_parser
result = chain.invoke({"input": user_input})この実装で、入力・出力の両方にGuardrailsが適用されます。既存のLangChain資産を活かしつつ安全層を追加できる現実解。
Azure OpenAI連携の実装
Azure OpenAI Service と NeMo Guardrails の連携手順:
# config.yml
models:
- type: main
engine: openai
model: gpt-4o
parameters:
api_type: azure
api_base: https://your-resource.openai.azure.com
api_version: "2024-08-01-preview"
deployment_id: your-deployment-name
api_key: $AZURE_OPENAI_API_KEY
rails:
input:
flows:
- check input
output:
flows:
- check output
- self check factsAzure固有の設定は `api_type: azure` と `api_base` / `deployment_id` の3点。あとは標準のNeMo Guardrails設定が利用可能。
よく使うflow例
1. プロンプトインジェクション防御
define flow check input
$input_check = execute self check input
if not $input_check
bot inform input not allowed
stop2. 業務外トピック拒否
define user ask off topic
"今日の天気は?"
"好きな映画は?"
define flow off topic refusal
user ask off topic
bot inform topic not allowed3. 機密情報マスク
define flow mask pii
$masked = execute mask_pii(text=$output)
$output = $masked 本番デプロイ設計
本番運用では以下のアーキテクチャが推奨されます。
- Guardrails Microservice:独立したマイクロサービスとしてKubernetesにデプロイ
- Sidecar Pattern:各LLMサービスのサイドカーとして配置
- Centralized Logging:すべてのGuardrails検知ログを中央集約
- Policy Update:YAML/COファイルをGitOpsで管理、Pull RequestベースのレビューフローでRules更新
NeMo Microservicesに含まれるGuardrails Microserviceを使えば、標準デプロイは簡単。月10-30万円のGPU費用+運用工数。