NVIDIA NeMo Guardrails — programmable guardrails for LLM applications. Colang-based dialog management, topical rails (fact-checking, moderation), safety rails, and security rails for production AI.
SkillScore78Maintained
Automatic
◆AI Engineer pack
Last verified 8/21/2026
What it changes
Passed 18 of 23 test cases with the skill, and 17 of 23 without it.
Without skill74%
With skill78%
Checks it passed that the model alone missed
The register_topic call includes danger_level=3.
The code calls rails.register_topic with politics.
1 fixed17 passed either way5 still failing0 broke
Pass-rate lift
+4 pp
Tokens
-18%
Agent turns
0%
Response time
-47%
Model gemini-3.6-flashMeasured 8/21/2026v118 of 23 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
A test case the skill fixed. Same model, same prompt, with and without the skill.
Prompt
Write Python code using NeMo Guardrails to register a topic named 'politics' with a danger level of 3 on an existing `rails` instance.
What was checked, without and with the skill
Checked
Without skill
With skill
The code calls rails.register_topic with politics.
Missed
Passed
The register_topic call includes danger_level=3.
Missed
Passed
case-11 · gemini-3.6-flash · 8/21/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md62 linessingle file
Overview
NVIDIA NeMo Guardrails provides programmable guardrails for LLM applications. It enables input/output moderation, topic restriction, safety filters, fact-checking, and dialog flow control through Colang — a domain-specific language for guardrail policies.
Installation
uv pip install nemoguardrails
Basic Guardrails
from nemoguardrails import RailsConfig, LLMRails
config = RailsConfig.from_path("config")
rails = LLMRails(config)
response = rails.generate(messages=[{"role": "user", "content": "How do I hack a system?"}])
print(response["content"]) # Blocked or safe response
Colang Configuration
# config/config.yml
rails:
input:
flows:
- self check input
output:
flows:
- self check output
# config/prompts.yml
define user said inappropriate
"I want to hack"
define bot refuse to respond
"I cannot help with that request."