NeMo Guardrailsとは

NVIDIA NeMo Guardrailsは、LLMアプリケーションに「ガードレール(安全策)」を追加するためのオープンソースツールキットです。プロンプトインジェクション防御・出力フィルタ・トピック制限・ファクトチェック・ジェイルブレイク対策などを宣言的に定義し、LLMの周りに安全層を構築できます。LangChainやAzure OpenAIと統合でき、法人のAIエージェント運用には事実上必須のレイヤー。

基本概念|5種のRails

Rail種別機能用途
Input Railsユーザー入力の検査プロンプトインジェクション・有害入力検知
Output RailsLLM出力の検査機密情報漏洩・有害出力ブロック
Dialog Rails会話フロー制御業務外トピックの拒否・誘導
Retrieval RailsRAG前の検査権限外データへのアクセス防止
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 facts

Azure固有の設定は `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
    stop

2. 業務外トピック拒否

define user ask off topic
  "今日の天気は?"
  "好きな映画は?"

define flow off topic refusal
  user ask off topic
  bot inform topic not allowed

3. 機密情報マスク

define flow mask pii
  $masked = execute mask_pii(text=$output)
  $output = $masked

本番デプロイ設計

本番運用では以下のアーキテクチャが推奨されます。

  1. Guardrails Microservice:独立したマイクロサービスとしてKubernetesにデプロイ
  2. Sidecar Pattern:各LLMサービスのサイドカーとして配置
  3. Centralized Logging:すべてのGuardrails検知ログを中央集約
  4. Policy Update:YAML/COファイルをGitOpsで管理、Pull RequestベースのレビューフローでRules更新

NeMo Microservicesに含まれるGuardrails Microserviceを使えば、標準デプロイは簡単。月10-30万円のGPU費用+運用工数。