
最新リリース / 開発バージョン: develop ブランチは最新のトップオブツリー開発を追跡しています。最新のリリースバージョンは 0.23.0 です。
✨✨✨
📌 NeMo Guardrails ライブラリの公式ドキュメントは docs.nvidia.com/nemo/guardrails から確認できます。
✨✨✨
NVIDIA NeMo Guardrails ライブラリは、LLMベースの対話アプリケーションにプログラム可能なガードレールを簡単に追加するためのオープンソースツールキットです。ガードレール(略して「レール」)は、政治について話さない、特定のユーザーリクエストに対して特定の方法で応答する、事前定義されたダイアログパスに従う、特定の言語スタイルを使用する、構造化データを抽出するなど、大規模言語モデルの出力を制御する特定の方法です。
この論文では、NeMo Guardrails ライブラリを紹介し、システムの技術概要と現在の評価について説明しています。
Python 3.10、3.11、3.12、または 3.13。
pip を使用してインストールするには:```bash
pip install nemoguardrails
より詳細な説明については、[インストールガイド](https://docs.nvidia.com/nemo/guardrails/get-started/installation-guide)を参照してください。
## 概要
<!-- start-documentation-reuse -->
NeMo Guardrails ライブラリを使用すると、LLMベースのアプリケーションを構築する開発者は、アプリケーションコードとLLMの間に**プログラム可能なガードレール**を追加できます。
<div align="center">
<img src="https://raw.githubusercontent.com/NVIDIA-NeMo/Guardrails/develop/docs/_static/images/programmable_guardrails.png" width="75%" alt="プログラム可能なガードレール">
</div>
*プログラム可能なガードレール*を追加する主な利点は次のとおりです。
- **信頼性が高く、安全でセキュアなLLMベースのアプリケーションの構築:** レールを定義して会話を導き、保護することができます。特定のトピックに関するLLMベースのアプリケーションの動作を定義し、望ましくないトピックに関する議論に参加しないようにすることができます。
- **モデル、チェーン、その他のサービスへの安全な接続:** LLMを他のサービス(別名ツール)にシームレスかつ安全に接続できます。
- **制御可能なダイアログ**: LLMを事前定義された会話パスに沿って誘導でき、会話デザインのベストプラクティスに従ってインタラクションを設計し、標準的な運用手順(例: 認証、サポート)を適用できます。
<!-- end-documentation-reuse -->
### LLMの脆弱性に対する保護
NeMo Guardrails ライブラリは、LLMを搭載したチャットアプリケーションを、ジェイルブレイクやプロンプトインジェクションなどの一般的なLLMの脆弱性から保護するためのいくつかのメカニズムを提供します。以下は、このリポジトリに含まれるサンプル [ABC Bot](https://github.com/nvidia-nemo/guardrails/blob/develop/examples/bots/abc) に対するさまざまなガードレール構成によって提供される保護の概要です。詳細については、[LLM脆弱性スキャン](https://docs.nvidia.com/nemo/guardrails/evaluation/llm-vulnerability-scanning.html)ページを参照してください。
<div align="center">
<img src="https://raw.githubusercontent.com/NVIDIA-NeMo/Guardrails/develop/docs/_static/images/abc-llm-vulnerability-scan-results.png" width="500">
</div>
### ユースケース
プログラム可能なガードレールは、さまざまなタイプのユースケースで使用できます。
1. 一連のドキュメントに対する**質問応答**(別名: Retrieval Augmented Generation): ファクトチェックと出力モデレーションを実施します。
2. **ドメイン固有アシスタント**(別名: チャットボット): アシスタントがトピックから外れず、設計された会話フローに従うようにします。
3. **LLMエンドポイント**: カスタムLLMにガードレールを追加して、より安全な顧客インタラクションを実現します。
4. **LangChainチェーン**(オプション): 任意のユースケースでLangChainを使用する場合、チェーンの周囲にガードレールレイヤーを追加できます。この統合を有効にするには、環境変数 `NEMOGUARDRAILS_LLM_FRAMEWORK=langchain` を設定するか、`set_default_framework("langchain")` を呼び出します。
### 使用方法
アプリケーションにプログラム可能なガードレールを追加するには、Python APIまたはガードレールサーバーを使用できます(詳細は[サーバーガイド](https://docs.nvidia.com/nemo/guardrails/get-started/integrate-into-application)を参照)。Python APIの使用は、LLMを直接使用するのと似ています。LLMの代わりにガードレールレイヤーを呼び出す場合、コードベースへの変更は最小限で済み、次の2つの簡単なステップが必要です。
1. ガードレール構成をロードし、`LLMRails` インスタンスを作成します。
2. `generate`/`generate_async` メソッドを使用してLLMを呼び出します。```python
from nemoguardrails import LLMRails, RailsConfig
# Load a guardrails configuration from the specified path.
config = RailsConfig.from_path("PATH/TO/CONFIG")
rails = LLMRails(config)
completion = rails.generate(
messages=[{"role": "user", "content": "Hello world!"}]
)
サンプル出力:```json {"role": "assistant", "content": "Hi! How can I help you?"}
`generate` メソッドの入出力形式は、OpenAI の [Chat Completions API](https://platform.openai.com/docs/guides/gpt/chat-completions-api) と似ています。
#### 非同期 API
NeMo Guardrails ライブラリは、コアメカニズムが Python の async モデルを使用して実装されているため、async ファーストのツールキットです。公開メソッドには同期版と非同期版の両方があります。例: `LLMRails.generate` と `LLMRails.generate_async`。
### サポートされている LLM
NeMo Guardrails は、OpenAI GPT-3.5、GPT-4、LLaMa-2、Falcon、Vicuna、Mosaic などの複数の LLM とともに使用できます。詳細については、設定ガイドの [サポートされている LLM モデル](https://docs.nvidia.com/nemo/guardrails/about-nemo-guardrails-library/supported-llms) セクションを参照してください。
### ガードレールの種類
NeMo Guardrails ライブラリは、次の5つの主要なタイプのガードレールをサポートしています。
<div align="center">
<img src="https://raw.githubusercontent.com/NVIDIA-NeMo/Guardrails/develop/docs/_static/images/programmable_guardrails_flow.png" width="75%" alt="Programmable Guardrails Flow">
</div>
1. **入力レール**: ユーザーからの入力に適用されます。入力レールは、入力を拒否して追加の処理を停止したり、入力を変更したりできます(例: 機密データの可能性があるデータをマスクする、言い換える)。
2. **ダイアログレール**: LLM へのプロンプト方法に影響を与えます。ダイアログレールは正準形式メッセージに対して作用します。詳細は [Colang Guide](https://docs.nvidia.com/nemo/guardrails/configure-guardrails/colang)) を参照してください。また、アクションを実行すべきか、LLM を呼び出して次のステップまたは応答を生成すべきか、代わりに定義済みの応答を使用すべきかなどを決定します。
3. **検索レール**: RAG(Retrieval Augmented Generation)シナリオにおいて、取得されたチャンクに適用されます。検索レールはチャンクを拒否して LLM へのプロンプトに使用されるのを防いだり、関連するチャンクを変更したりできます(例: 機密データの可能性があるデータをマスクする)。
4. **実行レール**: LLM が呼び出す必要があるカスタムアクション(別名ツール)の入出力に適用されます。
5. **出力レール**: LLM が生成した出力に適用されます。出力レールは、出力を拒否してユーザーに返されるのを防いだり、出力を変更したりできます(例: 機密データの削除)。
### ガードレールの設定
ガードレール設定は、使用する **LLM(複数可)** と **1つ以上のガードレール** を定義します。ガードレール設定には、入力/ダイアログ/出力/検索/実行レールを任意の数だけ含めることができます。レールが設定されていない設定は、基本的にリクエストを LLM に転送します。
ガードレール設定フォルダの標準的な構造は次のとおりです。```
.
├── config
│ ├── actions.py
│ ├── config.py
│ ├── config.yml
│ ├── rails.co
│ ├── ...
config.yml には、LLMモデル、アクティブなレール、カスタム設定データなど、すべての一般的な設定オプションが含まれています"。config.py ファイルにはカスタム初期化コードが含まれ、actions.py にはカスタムPythonアクションが含まれます。完全な概要については、設定ガイド を参照してください。
以下は config.yml の例です:```yaml
models:
rails:
input: flows: - check jailbreak - mask sensitive data on input
output: flows: - self check facts - self check hallucination - activefence moderation on input
config: # Configure the types of entities that should be masked on user input. sensitive_data_detection: input: entities: - PERSON - EMAIL_ADDRESS
ガードレール構成に含まれる `.co` ファイルには、さまざまな種類のレールを定義する Colang 定義が含まれています(Colang が何かについての簡単な概要は次のセクションを参照してください)。以下は、ユーザーへの挨拶のダイアログレールを定義する `greeting.co` ファイルの例です。```colang
define user express greeting
"Hello!"
"Good afternoon!"
define flow
user express greeting
bot express greeting
bot offer to help
define bot express greeting
"Hello there!"
define bot offer to help
"How can I help you today?"
以下は、侮辱に対するダイアログレール用のColang定義の追加例です:```colang define user express insult "You are stupid"
define flow user express insult bot express calmly willingness to help
### Colang
さまざまなタイプのガードレールを設定・実装するために、このツールキットは**Colang**を導入しています。**Colang**は、柔軟でありながら制御可能な対話フローを設計するために特別に作られたモデリング言語です。ColangはPythonに似た構文を持ち、特に開発者にとってシンプルで直感的になるように設計されています。```{note}
Two versions of Colang, 1.0 and 2.0, are supported and Colang 1.0 is the default.
Colang 1.0 構文の簡単な紹介については、Colang 1.0 Language Syntax Guide を参照してください。
Colang 2.0 を始めるには、Colang 2.0 Documentation を参照してください。
NeMo Guardrails には、組み込みガードレールのセットが付属しています。```{note} The built-in guardrails may or may not be suitable for a given production use case. As always, developers should work with their internal application team to ensure guardrails meets requirements for the relevant industry and use case and address unforeseen product misuse.
このライブラリには、LLMの自己チェック用ガードレール(入出力モデレーション、ファクトチェック、幻覚検出)、NVIDIAのセーフティモデル(コンテンツセーフティ、トピックセーフティ)、ジェイルブレイクおよびインジェクション検出、コミュニティモデルやサードパーティAPIとの統合が含まれています。完全なリストについては、[Guardrails Libraryドキュメント](https://docs.nvidia.com/nemo/guardrails/user-guides/guardrails-library.html)を参照してください。
## CLI
NeMo Guardrailsライブラリには、組み込みのCLIも付属しています。```bash
$ nemoguardrails --help
Usage: nemoguardrails [OPTIONS] COMMAND [ARGS]...
actions-server Start a NeMo Guardrails actions server.
chat Start an interactive chat session.
evaluate Run an evaluation task.
server Start a NeMo Guardrails server.
NeMo Guardrails ライブラリの CLI を使用して、guardrails サーバーを起動できます。サーバーは、指定されたフォルダーから 1 つ以上の設定を読み込み、それらを使用するための HTTP API を公開できます。``` nemoguardrails server [--config PATH/TO/CONFIGS] [--port PORT]
例えば、`sample` 設定のチャット補完を取得するには、`/v1/chat/completions` エンドポイントを使用できます:```
POST /v1/chat/completions
Please provide the Markdown content to translate.```json { "config_id": "sample", "messages": [{ "role":"user", "content":"Hello! What can you do for me?" }] }
サンプル出力:```json
{"role": "assistant", "content": "Hi! How can I help you?"}
ガードレールサーバーを起動するには、Dockerコンテナを使用することもできます。NeMo Guardrailsライブラリには、nemoguardrailsイメージをビルドするために使用できるDockerfileが用意されています。詳細については、Dockerの使用セクションを参照してください。
LangChain統合はオプトインです。有効にするには、NEMOGUARDRAILS_LLM_FRAMEWORK=langchain環境変数を設定するか、set_default_framework("langchain")を呼び出します。次に、設定で必要となるLangChainパッケージをインストールします。統合を有効にすると、ガードレール設定をLangChainチェーン(または任意のRunnable)にラップでき、ガードレール設定内からLangChainチェーンを呼び出すこともできます。詳細については、LangChain統合ドキュメントを参照してください。
LLMベースの対話アプリケーションの安全性を評価することは複雑なタスクであり、まだ未解決の研究課題です。適切な評価をサポートするために、NeMo Guardrailsライブラリは以下を提供しています。
nemoguardrails evaluate。LLMベースの対話アプリケーションにガードレールを追加する方法は多数あります。例:明示的なモデレーションエンドポイント(例:OpenAI、ActiveFence、PolicyAI)、批評チェーン(例:constitutional chain)、出力の解析(例:guardrails.ai)、個別のガードレール(例:LLM-Guard)、RAGアプリケーション向けの幻覚検出(例:Got It AI、Patronus Lynx)。
NeMo Guardrailsライブラリは、これらの補完的なアプローチをすべて統一されたLLMガードレール層に統合できる柔軟なツールキットを提供することを目的としています。例えば、このツールキットはActiveFence、PolicyAI、AlignScore、LangChainチェーンとのすぐに使える統合を提供します。
私たちの知る限り、NeMo Guardrailsライブラリは、ユーザーとLLMの間の対話をモデル化するソリューションも提供する唯一のガードレールツールキットです。これにより、一方では対話を正確に導く能力が可能になります。もう一方では、特定のガードレールをいつ使用すべきかを細かく制御できます。例えば、特定の種類の質問に対してのみファクトチェックを使用するなどです。
NVIDIA NeMo Guardrailsライブラリは、どのデプロイパターンと安全機能が最も使用されているかをNVIDIAが理解できるように、匿名テレメトリを収集します。ライブラリは、LLMRails、IORails、またはGuardrailsをインスタンス化すると1つの使用イベントを送信し、その後プロセスごとに1つのデーモンスレッドから定期的にハートビートを送信します。このテレメトリは、リクエストごとのトレーシングとは別のものです。トレーシングはガードレール設定で構成し、独自の可観測性バックエンドに送信します。テレメトリはNVIDIAへの最小限の匿名pingです。
正確な0.22.0および0.23.0リリースビルド全体における匿名利用の集計(2026年5月22日〜8月18日):



最終更新日:2026年8月18日
テレメトリには以下が含まれます:
openai、nim、nvidia_ai_endpoints)。モデル名や資格情報が含まれることはありません。jailbreak_detection、content_safety、topic_safety)library、api、またはcliサーバー)LLMRailsまたはIORails)イベントペイロードにはユーザーコンテンツは収集されません。ペイロードには、モデル名、APIキー、エンドポイント、プロンプト、完了結果、トークン数、リクエストごとのメトリクス、ファイルパス、ユーザー名、IPアドレスは含まれません。NVIDIAはこのデータを集約してエンジニアリング作業の優先順位付けに使用し、導入傾向をコミュニティと共有します。
ライブラリはまた、各イベントペイロードを~/.config/nemoguardrails/usage_stats.jsonのローカル監査ファイルに書き込もうとします。監査ファイルにはイベントJSONLが保存され、完全なNVIDIAテレメトリエンベロープは保存されません。監査への書き込みはベストエフォートであり、ローカル監査の書き込みが失敗した場合でもテレメトリの送信は続行されます。
次のいずれかのオプションを設定すると、テレメトリを無効にできます。```bash export NEMO_GUARDRAILS_NO_USAGE_STATS=1
export DO_NOT_TRACK=1
mkdir -p ~/.config/nemoguardrails && touch ~/.config/nemoguardrails/do_not_track
NVIDIA NeMo Guardrails ライブラリの起動前にオプトアウトを設定してください。テレメトリが開始された後に環境変数を変更したり `do_not_track` を作成したりしても、すでに実行中のハートビートスレッドは停止しません。
スキーマ全体とフィールドごとの説明については、[docs/telemetry.md](https://docs.nvidia.com/nemo/guardrails/latest/telemetry.html) を参照してください。
テレメトリ収集はいつでもオプトアウトできます。オプトアウトは NVIDIA NeMo Guardrails ライブラリ自体によるデータ収集にのみ適用されます。
サードパーティのエンドポイントには、別個の利用規約とプライバシーポリシーがあります。NVIDIA NeMo Guardrails ライブラリは、NVIDIA Build(`build.nvidia.com`)などの推論エンドポイントを使用できます。NVIDIA Build または他のサードパーティのエンドポイントを使用する場合、そのエンドポイントの利用規約とプライバシーポリシーはライブラリとは独立して適用されます。NVIDIA NeMo Guardrails ライブラリのテレメトリのオプトアウトは、選択したエンドポイントには適用されません。NVIDIA Build は評価およびテスト専用であり、本番環境で使用してはなりません。NVIDIA Build を使用する際は、機密情報や個人データを送信しないでください。
## コミュニティの貢献のお誘い
リポジトリ内のサンプルレールは優れた出発点です。信頼性が高く、安全で、セキュアな LLM の力を誰もが利用できるようにする取り組みへのコミュニティの貢献を、私たちは心から歓迎します。開発環境のセットアップ方法と NeMo Guardrails ライブラリへの貢献方法については、[貢献ガイドライン](https://github.com/nvidia-nemo/guardrails/blob/develop/CONTRIBUTING.md) を参照してください。
## ライセンス
NeMo Guardrails ライブラリは、[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) の下でライセンスされています。
## 引用方法
NeMo Guardrails ライブラリを使用する場合は、それを紹介した [EMNLP 2023 論文](https://aclanthology.org/2023.emnlp-demo.40) を引用してください。```bibtex
@inproceedings{rebedea-etal-2023-nemo,
title = "{N}e{M}o Guardrails: A Toolkit for Controllable and Safe {LLM} Applications with Programmable Rails",
author = "Rebedea, Traian and
Dinu, Razvan and
Sreedhar, Makesh Narsimhan and
Parisien, Christopher and
Cohen, Jonathan",
editor = "Feng, Yansong and
Lefever, Els",
booktitle = "Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing: System Demonstrations",
month = dec,
year = "2023",
address = "Singapore",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2023.emnlp-demo.40",
doi = "10.18653/v1/2023.emnlp-demo.40",
pages = "431--445",
}