Releases: NVIDIA/NeMo-Guardrails
v0.15.0
What's Changed
This release introduces performance improvements with parallel rails execution capabilities for both standard and streaming scenarios, enhanced tracing infrastructure using OpenTelemetry API, and several critical bug fixes for streaming functionality. The new parallel rails execution in Colang 1.0 can reduce latency when multiple rails are configured, as they now run concurrently rather than sequentially.
The migration to OpenTelemetry provides standardized observability with better integration into existing monitoring stacks, enabling detailed insights into LLM calls, rail execution times, and token usage across your guardrails. We intend to expand this observability in future release with adapting semantic conventions for Generative AI Systems.
Critical streaming fixes address word spacing issues in output rails (where text was being concatenated without proper delimiters) and restore accurate token counting for streaming LLM calls. These enhancements collectively deliver a more performant and observable guardrails system while maintaining full backward compatibility for existing Colang 1 configurations.
🚀 Features
- (tracing) [breaking] Update tracing to use otel api (#1269)
- (streaming) Implement parallel streaming output rails execution (#1263, #1324)
- (streaming) Support external async token generators (#1286)
- Support parallel rails execution (#1234, #1323)
🐛 Bug Fixes
- (streaming) Resolve word concatenation in streaming output rails (#1259)
- (streaming) Enable token usage tracking for streaming LLM calls (#1264, #1285)
- (tracing) Prevent mutation of user options when tracing is enabled (#1273)
- (rails) Prevent LLM parameter contamination in rails (#1306)
📚 Documentation
- Release notes 0.14.1 (#1272)
- Update guardrails-library.md to include Clavata as a third party API (#1294)
- (streaming) Add section on token usage tracking (#1282)
- Add parallel rail section and split config page (#1295)
- Show complete prompts.yml content in getting started tutorial (#1311)
- (tracing) Update and streamline tracing guide (#1307)
⚙️ Miscellaneous Tasks
New Contributors
Full Changelog: v0.14.1...v0.15.0
v0.14.1
What's Changed
This patch release addresses several important bug fixes and improvements, particularly focusing on jailbreak detection, LLMRails configuration handling, and content safety compatibility issues.
🚀 Features
- (jailbreak) Add direct API key configuration support (#1260)
🐛 Bug Fixes
- (jailbreak) Lazy load jailbreak detection dependencies (#1223)
- (llmrails) Constructor LLM should not skip loading other config models (#1221, #1247, #1250, #1258)
- (content_safety) Replace try-except with iterable unpacking for policy violations (#1207)
- (jailbreak) Pin numpy==1.23.5 for scikit-learn compatibility (#1249)
- (output_parsers) Iterable unpacking compatibility in content safety parsers (#1242)
📚 Documentation
- More heading levels so RNs resolve links (#1228)
- Update docs version (#1219)
- Fix jailbreak detection build instructions (#1248)
- Change ABC bot link at docs (#1261)
🧪 Testing
- Fix async test failures in cache embeddings and buffer strategy tests (#1237)
- (content_safety) Add tests for content safety actions (#1240)
⚙️ Miscellaneous Tasks
- Update pre-commit-hooks to v5.0.0 (#1238)
New Contributors
- @jeffreyscarpenter made their first contribution in #1223
- @gcr made their first contribution in #1207
- @bwook00 made their first contribution in #1261
Full Changelog: v0.14.0...v0.14.1
v0.14.0
What's Changed
This release enhances support for advanced reasoning models, including the NVIDIA Nemotron family such as Llama 3.1 Nemotron Ultra 253B V1 and DeepSeek-r1. We have added new protections against certain code-injection security concerns, with an output guardrail based on YARA, a widely-adopted technology in the cybersecurity space for malware detection.
From the community, a new 3rd-party guardrail connects to Clavata’s customized LLM content moderation.
Among other improvements and bug fixes, this release also now supports Python 3.13.
🚀 Features
- Change topic following prompt to allow chitchat (#1097)
- Validate model name configuration (#1084)
- Add support for langchain partner and community chat models (#1085)
- Add fuzzy find provider capability to cli (#1088)
- Add code injection detection to guardrails library (#1091)
- Add clavata community integration (#1027)
- Implement validation to forbid dialog rails with reasoning traces (#1137)
- Load yara lazily to avoid action dispatcher error (#1162)
- Add support for system messages to RunnableRails (#1106)
- Add api_key_env_var to Model, pass in kwargs to langchain initializer (#1142)
- Add inline YARA rules support (#1164)
- [breaking] Add support for preserving and optionally applying guardrails to reasoning traces (#1145)
- Prevent reasoning traces from contaminating LLM prompt history (#1169)
- Add RailException support to injection detection and improve error handling (#1178)
- Add Nemotron model support with message-based prompts (#1199)
🐛 Bug Fixes
- Correct task name for self_check_facts (#1040)
- Error in LLMRails with tracing enabled (#1103)
- Self check output colang 1 flow (#1126)
- Use ValueError in TaskPrompt to resolve TypeError raised by Pydantic (#1132)
- Correct dialog rails activation logic (#1161)
- Allow reasoning traces when embeddings_only is True (#1170)
- Prevent explain_info overwrite during stream_async (#1194)
- Colang 2 issues in community integrations (#1140)
- Ensure proper asyncio task cleanup in test_streaming_handler.py (#1182)
🚜 Refactor
- Reorganize HuggingFace provider structure (#1083)
- Remove support for deprecated nemollm engine (#1076)
- [breaking] Remove deprecated return_context argument (#1147)
- Rename
remove_thinking_traces
field toremove_reasoning_traces
(#1176) - Update deprecated field handling for remove_thinking_traces (#1196)
- Introduce END_OF_STREAM sentinel and update handling (#1185)
📚 Documentation
- Remove markup from code block (#1081)
- Replace img tag with Markdown images (#1087)
- Remove NeMo Service (nemollm) documentation (#1077)
- Update cleanlab integration description (#1080)
- Add providers fuzzy search cli command (#1089)
- Clarify purpose of model parameters field in configuration guide (#1181)
- Output rails are supported with streaming (#1007)
- Add mention of Nemotron (#1200)
- Fix output rail doc (#1159)
- Revise GS example in getting started doc (#1146)
- Possible update to injection detection (#1144)
⚙️ Miscellaneous Tasks
- Dynamically set version using importlib.metadata (#1072)
- Add link to topic control config and prompts (#1098)
- Reorganize GitHub workflows for better test coverage (#1079)
- Add summary jobs for workflow branch protection (#1120)
- Add Adobe Analytics configuration (#1138)
- Fix and revert poetry lock to its stable state (#1133)
- Add Codecov integration to workflows (#1143)
- Add Python 3.12 and 3.13 test jobs to gitlab workflow (#1171)
- Identify OS packages to install in contribution guide(#1136)
- Remove Got It AI from ToC in 3rd party docs(#1213)
New Contributors
- @thisthat made their first contribution in #1103
- @jwmueller made their first contribution in #1080
- @ilias-t made their first contribution in #1027
- @smruthi33 made their first contribution in #1106
- @andompesta made their first contribution in #1194
Full Changelog: v0.13.0...v0.14.0
v0.13.0
What's Changed
This release adds support for multimodal input and output rails, allowing users to check for the safety of both text and image prompts and vision-language model outputs. We introduce new support for models with reasoning traces, such as Deepseek-R1, and we have added support for the NemoGuard JailbreakDetect NIM.
This release adds a new integration with Fiddler Guardrails, providing access to Fiddler’s low-latency hosted guardrail models for content safety, hallucination detection, and more. We also added support for Python 3.12 .
🚀 Features
- Support models with reasoning traces (#996) by @trebedea
- Add SHA-256 hashing option (#988) by @mdambski
- Add Fiddler Guardrails integration (#964, #1043) by @copperstick6
- Add generation metadata to streaming chunks (#1011) by @Pouyanpi
- Improve alpha to beta bot migration (#878) by @schuellc-nvidia
- Support multimodal input and output rails (#1033) by @Pouyanpi
- Add support for NemoGuard JailbreakDetect NIM. (#1038) by @erickgalinkin
- Set default start and end reasoning tokens (#1050) by @Pouyanpi
- Improve output rails error handling for SSE format (#1058) by @Pouyanpi
🐛 Bug Fixes
- Ensure parse_task_output is called after all llm_call invocations (#1047) by @Pouyanpi
- Handle exceptions in generate_events to propagate errors in streaming (#1012) by @Pouyanpi
- Ensure output rails streaming is enabled explicitly (#1045) by @Pouyanpi
- Improve multimodal prompt length calculation for base64 images (#1053) by @Pouyanpi
🚜 Refactor
- Move startup and shutdown logic to lifespan in server (#999) by @xiaobo8204
📚 Documentation
- Add multimodal rails documentation (#1061) by @mikemckiernan
- Add content safety tutorial (#1042) by @tgasser-nv
- Revise reasoning model info (#1062) by @mikemckiernan
- Consider new GS experience (#1005) by @mikemckiernan
- Restore deleted configuration files (#963) by @Pouyanpi
⚙️ Miscellaneous Tasks
New Contributors
- @mdambski made their first contribution in #988
- @copperstick6 made their first contribution in #964
- @xiaobo8204 made their first contribution in #999
- @tgasser-nv made their first contribution in #1042
Full Changelog: v0.12.0...v0.13.0
v0.12.0
What's Changed
This release adds support for streaming LLM content through output rails for more responsive, real-time interactions . It also includes a new integration with Prompt Security, as well as updates to our integrations with ActiveFence and Private AI.
🚀 Features
- Support Output Rails Streaming (#966, #1003) by @Pouyanpi
- Add unified output mapping for actions (#965) by @Pouyanpi
- Add output rails support to activefence integration (#940) by @noamlevy81
- Add Prompt Security integration (#920) by @lior-ps
- Add pii masking capability to PrivateAI integration (#901) by @letmerecall
- Add embedding_params to BasicEmbeddingsIndex (#898) by @Pouyanpi
- Add score threshold to AnalyzerEngine (#845) by @Pouyanpi
🐛 Bug Fixes
- Fix dependency resolution issues in AlignScore Dockerfile(#1002, #982) by @Pouyanpi
- Fix JailbreakDetect docker files(#981, #1001) by @erickgalinkin
- Fix TypeError from attempting to unpack already-unpacked dictionary (#959) by @erickgalinkin
- Fix token stats usage in LLM call info (#953) by @trebedea
- Handle unescaped quotes in generate_value using safe_eval (#946) by @milk333445
- Handle non-relative file paths (#897) by @Pouyanpi
📚 Documentation
- Output streaming (#976) by @mikemckiernan
- Fix typos with oauthtoken (#957) by @Pouyanpi
- Fix broken link in prompt security (#978) by @lior-ps
- Update advanced user guides per v0.11.1 doc release (#937) by @Pouyanpi
⚙️ Miscellaneous Tasks
- Tolerate prompt in code blocks (#1004) by @mikemckiernan
- Update YAML indent to use two spaces (#1009) by @mikemckiernan
New Contributors
- @milk333445 made their first contribution in #946
- @lior-ps made their first contribution in #920
Full Changelog: v0.11.1...v0.12.0
v0.11.1
This release adds support for three new NVIDIA NemoGuard NIM microservices. These are new safeguard models, developed by NVIDIA, that help AI agents operate at scale while maintaining controlled behavior:
- Content safety NIM microservice that safeguards AI against generating biased or harmful outputs, ensuring responses align with ethical standards.
- Topic control NIM microservice that keeps conversations focused on approved topics, avoiding digression or inappropriate content.
- Jailbreak detection NIM microservice that adds protection against jailbreak attempts, helping maintain AI integrity in adversarial scenarios.
What's Changed
Added
- ContentSafety: Add ContentSafety NIM connector (#930) by @prasoonvarshney
- TopicControl: Add TopicControl NIM connector (#930) by @makeshn
- JailbreakDetect: Add jailbreak detection NIM connector (#930) by @erickgalinkin
Changed
- AutoAlign Integration: Add further enhancements and refactoring to AutoAlign integration (#867) by @KimiJL
Fixed
- PrivateAI Integration: Fix Incomplete URL substring sanitization Error (#883) by @NJ-186
- Content Safety: Fix typo in content safety prompts (#873) by @krishna-sreeraj-tw
Documentation
-
NVIDIA Blueprint: Add Safeguarding AI Virtual Assistant NIM Blueprint NemoGuard NIMs (#932) by @abodhankar
-
ActiveFence Integration: Fix flow definition in community docs (#890) by @noamlevy81
New Contributors
- @krishna-sreeraj-tw made their first contribution in #873
- @KimiJL made their first contribution in #867
- @NJ-186 made their first contribution in #883
- @noamlevy81 made their first contribution in #890
Full Changelog: v0.11.0...v0.11.1
v0.11.0
This release introduces new features and essential bug fixes. Key highlights of this release include support for Observability, Private AI, and Patronus Evaluate API Integrations, along with an upgrade to Langchain 3. Additionally, we have dropped support for Python 3.8 as it has reached its End of Life. You can now exclude specific files from being included in your RailsConfig by using a .railsignore file. Once this file is placed, its rules apply to all files within its directory and all of its subdirectories.
What's Changed
Added
- Observability: Add observability support with support for different backends (#844) by @Pouyanpi
- Private AI Integration: Add Private AI Integration (#815) by @letmerecall
- Patronus Evaluate API Integration: Patronus Evaluate API Integration (#834) by @varjoshi
- railsignore: Add support for .railsignore file (#790) by @ajanitshimanga
- Passthrough Support: Add passthrough support in Colang 2 (#779) by @Pouyanpi
Changed
- Sandboxed Environment in Jinja2: Add sandboxed environment in Jinja2 (#799) by @Pouyanpi
- Langchain 3 support: Upgrade LangChain to Version 0.3 (#784) by @Pouyanpi
- Python 3.8: Drop support for Python 3.8 (#803) by @Pouyanpi
- vllm: Bump vllm from 0.2.7 to 0.5.5 for llama_guard and patronusai(#836)
- Colang 2.0-beta.5: Upgrade Colang 2 version including new attention library besides other features and bugfixes (Colang 2 Changelog)
Fixed
- Colang: Multiline string values in interaction history prompting (#765) by @radinshayanfar
- Guardrails Library documentation": Fix a typo in guardrails library documentation (#793) by @vedantnaik19
- Contributing Guide: Fix incorrect folder name & pre-commit setup in CONTRIBUTING.md (#800) by @SSK-14
- Contributing Guide: Added correct Python command version in documentation(#801) by @ravinder-tw
- retrieve chunk action: Fix presence of new line in retrieve chunk action (#809) by @Pouyanpi
- Standard Library import: Fix guardrails standard library import path in Colang 2.0 (#835) by @Pouyanpi
- AlignScore Dockerfile: Add nltk's punkt_tab in align_score Dockerfile (#841) by @yonromai
- Eval dependencies: Make pandas version constraint explicit for eval optional dependency (#847) by @Pouyanpi
- tests: Mock PromptSession to prevent console error (#851) by @Pouyanpi
- Streaming: Handle multiple output parsers in generation (#854) by @Pouyanpi
- Colang: Nested if else construct parsing (#833) by @radinshayanfar
- User Guide: Update role from bot to assistant (#852) by @Pouyanpi
Documentation
- Installation Guide: Update optional dependencies install (#853) by @Pouyanpi
- Documentation Restructuring: Restructure the docs and several style enhancements (#855) by @Pouyanpi
- Got It AI deprecation: Add deprecation notice for Got It AI integration (#857) by @mlmonk
New Contributors
- @ravinder-tw made their first contribution in #801
- @SSK-14 made their first contribution in #800
- @ajanitshimanga made their first contribution in #790
- @letmerecall made their first contribution in #815
- @emmanuel-ferdman made their first contribution in #751
- @yonromai made their first contribution in #841
Full Changelog: v0.10.1...v0.11.0
v0.10.1
What's Changed
- Fix/colang 2/flow continuation prompt by @schuellc-nvidia in #775
- Remove the user intent from llm library module by @schuellc-nvidia in #777
Full Changelog: v0.10.0...v0.10.1
v0.10.0
This release introduces enhancements to elevate your AI development experience. Key highlights of this release include the introduction of a Content Safety Module, which aids in the integration of different content safety models, a new Migration Tool that facilitates migration from Colang 1.0 or Colang 2-alpha to the latest version of Colang 2 by handling a significant part of the conversion, support for the NeMo Guardrails standard library in Colang 2.x, added support for Rails Exception Handling within both Colang 1.0 and 2.x, and the addition of a Debugging Tool for Colang 2.x.
This update also includes numerous bug fixes and performance improvements contributed by our community.
What's Changed
- bug fix by @saradiazdelser in #392
- Fixed broken links by @buvnswrn in #670
- Feature/colang 2/standard library updates by @schuellc-nvidia in #669
- Fix: hallucination-check by @Pouyanpi in #679
- Add the
relevant_chunks
to the gpt-3.5 general prompt template. by @drazvan in #678 - Feature/colang 2/flow event bugfix by @schuellc-nvidia in #672
- Feat/content safety by @Pouyanpi in #674
- feat(embeddings): add search threshold to BasicEmbeddingsIndex by @Pouyanpi in #620
- Doc/llm per task by @Pouyanpi in #676
- Check that flow names don't start with keywords by @schuellc-nvidia in #637
- Feature/colang 2/deactivate keyword by @schuellc-nvidia in #673
- Fix/nvidia ai endpoints streaming by @Pouyanpi in #654
- Fix/issue 183 non openai hallucination check by @Pouyanpi in #681
- feat(llmrails): Add serialization support for LLMRails by @Pouyanpi in #627
- New Evaluation Tooling by @drazvan in #677
- fix: streamlit import error by @Pouyanpi in #686
- Fix/ issue 589 override prompt self check facts by @Pouyanpi in #621
- Initial work on support for exceptions. by @drazvan in #384
- refactor(api): Update Pydantic validators by @Pouyanpi in #688
- Feat/migration tool by @Pouyanpi in #624
- Refactor/migrate standard library by @Pouyanpi in #625
- Fix/output parser deprecation warning by @Pouyanpi in #691
- Colang 2.0 - Guardrails Library by @drazvan in #689
- Fix/langchain_nvidia_ai_endpoints patch by @Pouyanpi in #697
- Revert back the abc bot Colang v1 and move the v2 version to separate config. by @drazvan in #698
- Fix/colang 2 runtime issues by @schuellc-nvidia in #699
- fix: change 'send event' to 'send' by @Pouyanpi in #701
- Fix a small bug in the generate_flow action for Colang 2. by @drazvan in #710
- Fix/output parser validation by @Pouyanpi in #704
- Feaure/colang 2/expose bot config by @schuellc-nvidia in #703
- Fix: pass config and kwargs to passthrough_fn runnable for issue 665 by @vpr1995 in #695
- [Feature] Add Cleanlab's Trustworthiness Score by @AshishSardana in #572
- Feature/colang 2/llm chat interface by @schuellc-nvidia in #709
- Feat/add relevant chunk support to colang 2 by @Pouyanpi in #708
- Fix/rails exception migration by @Pouyanpi in #705
- fix(migration): replace hyphens and apostrophes by @Pouyanpi in #725
- Fix/llm flow continuation generation by @schuellc-nvidia in #724
- Fix/cli server command by @Pouyanpi in #723
- Fix/cache embeddings filesystem by @Pouyanpi in #722
- feat(library): Migrate cleanlab to colang 2 and add exception handling by @Pouyanpi in #714
- Docs/community cleanlab by @Pouyanpi in #713
- Feature/colang debug library by @schuellc-nvidia in #560
- Feature/extend debug cli by @schuellc-nvidia in #717
- Feature/colang 2/interaction loop priorties by @schuellc-nvidia in #712
- Fix the detection of the triggering flow id by @drazvan in #728
- Add support for tags in the Eval UI. by @drazvan in #731
- feat: Add support for embeddings only with search threshold by @Pouyanpi in #733
- Fix: Process all outgoing events by @sklinglernv in #732
- Fix the scene form and choice flows in the Colang 2 standard library by @sklinglernv in #741
- Feat/embedding only support colang 2 by @Pouyanpi in #737
- docs: Add note for rails exception handling in Colang 2.x by @Pouyanpi in #744
- feat: add relevant chunks prompts by @Pouyanpi in #745
- Fix multiline LLM output syntax error for dynamic flow generation by @radinshayanfar in #748
- Feature/gcp moderation by @kauabh in #727
- Feat/migration tool sample converstaion syntax conversion by @Pouyanpi in #764
- chore: Upgrade langchain-core and jinja by @Pouyanpi in #766
- Update changelog by @Pouyanpi in #769
New Contributors
- @saradiazdelser made their first contribution in #392
- @buvnswrn made their first contribution in #670
- @vpr1995 made their first contribution in #695
- @AshishSardana made their first contribution in #572
- @sklinglernv made their first contribution in #732
- @radinshayanfar made their first contribution in #748
- @kauabh made their first contribution in #727
Full Changelog: v0.9.1.1...v0.10.0