Skip to content

Latest commit

 

History

History
1130 lines (854 loc) · 87.6 KB

File metadata and controls

1130 lines (854 loc) · 87.6 KB

Changelog

All notable changes to this project will be documented in this file.

This project adheres to Semantic Versioning.

[0.23.0] - 2026-07-01

🚀 Features

  • (library) Add lightweight Hugging Face classifier rails for input, output, and retrieval, with local Transformers, vLLM, KServe, and FMS backends (#1853)
  • (embeddings) Replace Annoy with exact NumPy search and add migration benchmarks (#1957, #1958)
  • (iorails) Add opt-in OpenTelemetry content capture and LLM request, response, and usage attributes (#1972, #2009)
  • (iorails) Add streaming and non-streaming tool calling and local rails for validating tool calls and results (#2016, #2024, #2030, #2058)
  • (library) Add context bloat detection rail (#1941)
  • (server) Add /v1/checks endpoint for standalone input and output rail validation (#2013)
  • (server) Add tool calling support (#1942)
  • (examples) Introduce NIM-based example notebooks, retire superseded ones (#1906)
  • (library) Add Polygraf PII detection and masking integration (#1693)

🐛 Bug Fixes

  • (library) Fix regex detection during output streaming so matches block correctly without raising TypeError (#1932, #1937)
  • (actions) Avoid empty-string crash in create_event (#1701)
  • (iorails) Make OTEL recording best-effort (#1997)
  • (docs) Skip Fern bash-script tests on Windows (#2017)
  • (iorails) Apply inference-time llm_params on top of Model.parameters in ModelEngine (#2020)
  • (llm) Handle multi-line bot say responses in flow continuation(#1650)
  • (generation) Use correct task enum for stop tokens in generate_value (#1699)
  • (colang) Guard ' or' line continuation at end of file (#1947)
  • (iorails) Add no-op events_history_cache when IORails is used (#2072)
  • (llmrails) Load library files deterministically (#1975)
  • (embeddings) EmbeddingsCache.from_dict drops store_config on round-trip (#1951)
  • (eval) Use safe dumper and yaml load (#2082)
  • (streaming) Pass user content to output rails (#2081)
  • (streaming) Avoid duplicate usage metadata chunk (#2079)
  • (streaming) Don't reuse resolved action parameters across output-rail chunks or requests (#1935, #1943)
  • (ci) Update README version during releases (#2104)
  • (llmrails) Preserve tool calls for LLMRails tool rails (#2073)
  • (langchain) OpenAI Responses API and Harmony response format support (#2102)

💼 Other

  • Stop bundling examples and repo files in the wheel (10x smaller) (#2069)
  • Exclude repository agent instruction files from source and wheel packages (#2111)

🚜 Refactor

  • Refine the Guardrails public API and deprecate direct access to internal LLMRails attributes (#1933)
  • [breaking] Require Pydantic >=2.5,<3.0 and migrate validators and model APIs to Pydantic 2 (#967)

📚 Documentation

  • Clarify NGC_API_KEY handling for local GLiNER/PII NIM deployment (#1945)
  • Migrate documentation to Fern, document the publishing workflow, and complete link and template cleanup (#1973, #2015, #2018, #2019)
  • (readme) Fix broken links to the Guardrails website (#2046)
  • (skills) Add skills (#2025)
  • (iorails) Telemetry - Span Reference Docs (#2098)
  • (iorails) Tool calling docs (#2099)
  • (iorails) Telemetry - Content Capture docs (#2083)

🧪 Testing

  • Make xdist the default Makefile test path (#1970)
  • Isolate flaky wall-clock perf tests behind a perf marker (#2070)
  • (recorded) Add a replay harness, client cassette coverage, public API coverage, and rails library coverage (#1974, #1976, #1977, #1978)
  • (langchain) Make provider compat tests version-tolerant, add drift canary (#2071)
  • Support aiohttp 3.14 in aioresponses mocks (#2091)
  • Remove flaky streaming timing diagnostic (#2097)

[0.22.0] - 2026-05-22

🚀 Features

  • (iorails) IORails support for streaming output rails (#1765, #1766)
  • (iorails) IORails OpenTelemetry tracing support (#1793, #1794, #1798)
  • (iorails) IORails OpenTelemetry token-level metrics support (#1812, #1846)
  • (iorails) IORails reasoning model support (#1842, #1843)
  • (llm) Add LangChain adapter and framework registry (#1759)
  • (llm) Add streaming tool call accumulation and LLMResponse parity (#1789)
  • (llm) Add default framework with OpenAI-compatible client (#1797)
  • (llm/frameworks) Validate framework on registration (#1863)
  • (types) Add framework-agnostic LLM type system (#1745)
  • (compat) Transitional compat layer to migrate from 0.21 to 0.22+ (#1841)
  • (testing) Add public testing surface under nemoguardrails.testing (#1860)
  • (api) Canonical top-level imports for LLM types and registry functions (#1882)
  • (config) Forbade extra fields in GLiNER rails configs (#1898)
  • (framework) Support Azure as a first-class default framework preset (#1896)

🐛 Bug Fixes

  • [breaking] Reject Colang 2.0 public runtime state (#1885)
  • (server) Prioritize env var API key over forwarded client header (#1688)
  • (utils) Removing extra space from UtteranceBotActionScriptUpdated (#1708)
  • (actions) Remove redundant embedding search in generate_user_intent (#1754)
  • (llmrails) Backfill embedding model params into search provider config (fixes stale KB cache) (#1753)
  • (embeddings) Persist in-memory embedding cache instance across calls (#1755)
  • (ci) Pin baseline x86-64 compiler target to prevent SIGILL on cached venvs (#1785)
  • (tests) Use asyncio.run instead of get_event_loop in middleware tests (#1804)
  • (actions) Guard bot message extraction against composite specs (#1810)
  • (llm) Drop stop param for OpenAI reasoning models (#1811)
  • (llmrails) Scope no main LLM warning to generation path (#1813)
  • (chat-ui) Replace Chatbot UI with Chainlit (#1734)
  • (library) Unblock reasoning models in self-check and content-safety actions (#1816)
  • (llm) Drop temperature/stop and rename max_tokens for OpenAI reasoning models (#1837)
  • (build) Remove chat-ui references from wheel build script (#1835)
  • (ci) Override annoy's -march=native to actually enforce baseline x86-64 (#1839)
  • (llm/clients) Retry on stale event loop binding (#1840)
  • (llm/frameworks) Point users to LangChain when DefaultFramework has no base_url (#1865)
  • (taskmanager) Preserve multimodal list content in vision safety prompts (#1815)
  • (actions) Extract text from multimodal events in colang history (#1636)
  • (iorails) Route to LLMRails if Guardrails inits with provided LLM (#1844)
  • (iorails) Strip trailing /v1 from base_url to avoid doubled path (#1862)
  • (iorails) Add all LLMRails methods, llm and runtime getters to Guardrails facade (#1886, #1889)
  • (iorails) Annotate cancelled OTEL spans with error (#1897)

🚜 Refactor

  • (llm) [breaking] Atomic switch to LLMModel protocol (#1760)
  • (iorails) [breaking] Move AsyncWorkQueue from Guardrails to IORails (#1817)
  • (deps) [breaking] Demote LangChain and LangChain-providers from core to dev (#1806)
  • (iorails) Return LLMResponse(Chunk) from ModelEngine (#1827)
  • (iorails) Refactor ModelManager (#1778)
  • (iorails) Refactor Guardrails and IORails for top-level import and clean separation (#1893)
  • (iorails) Refactor RailsManager and Nemoguard Actions (#1762)
  • (llm) Rename generate/stream to generate_async/stream_async (#1769)
  • (llm) Remove LangChain imports from core modules (#1770)
  • (llm) Move LangChain implementations into integrations/langchain/ (#1772)
  • (llm) Framework-owned provider registry (#1773)
  • (llm) Share OpenAI reasoning-model classifier across adapters (#1836)
  • (llm) Reorganize llm package into clients/models/frameworks (#1801)
  • (llm/clients) Return HTTPResponse(body, headers, status_code) from_apost (#1830)
  • (llm/default_framework) Split reset() into aclose() + clear_providers() (#1829)
  • (tests) Framework-agnostic test infrastructure (#1790)
  • (deps) Make server-only dependencies optional (#1689)
  • (jailbreak) Use onnx instead of pickle to load model (#1715)
  • (logging) Remove LangChain LoggingCallbackHandler dependency (#1616)

📚 Documentation

  • Document release notes for 0.21 and additional details (#1726)
  • (middleware) Fix incorrect example query and expected output in agent-middleware guide (#1784)
  • (iorails) OTEL Logging page (#1807)
  • Fix jira 407 (#1809)
  • Update README (#1820)
  • Mark LangChain integration as opt-in in 0.22 entry-point docs (#1856)
  • Documentation for langchain decoupling (#1854)
  • (configure-rails) Align with 0.22 DefaultFramework / LangChain split (#1855)
  • (custom-initialization) Add customLLM and customFramework guides (#1857)
  • (examples) Align example configs and deployment docs with 0.22 DefaultFramework / LangChain split (#1858)
  • (iorails) IORails OTEL Metrics (#1864)
  • (iorails) Speculative Generation (#1876)
  • (migration) Explain the "No default base_url" config-load error (#1881)
  • (iorails) Use Guardrails entry-point not IORails (#1892)
  • Prometheus client install instructions (#1894)
  • (guardrails) Document max_tokens fallback and reasoning model guidance (#1833)
  • (colang-1) Fix Hello World tutorial issues (NGUARD-666) (#1834)
  • (telemetry) Document anonymous usage reporting (#1891)
  • Add prompts.yml to code snippets (#1904)
  • Update Benchmark README with updated configs (#1905)

🧪 Testing

  • (llm) Probe OpenAI API to validate _is_openai_reasoning_model (#1814)
  • (llm) Expand reasoning-model param probe + regenerate baseline (#1838)
  • (telemetry) Add smoke driver and fixtures (#1879)

⚙️ Miscellaneous Tasks

  • Restore original 2023-2026 copyright dates on moved files (#1831)
  • Include scripts in docker image (#1902)

[0.21.0] - 2026-03-12

🚀 Features

  • (library) Update Trend Micro Vision One AI Guard official endpoint (#1546)
  • (llmrails) Add check_async method for input/output rails validation (#1605)
  • (server) Make guardrails server OpenAI compatible (#1340)
  • New top-level scaffold (#1613)
  • Add Async work queue (#1620)
  • (integration) Add GuardrailsMiddleware for LangChain agent (#1606)
  • (library) Update Fiddler Guardrails API to match new specification (#1619)
  • (library) Add CrowdStrike AIDR community integration (#1601)
  • (iorails) Introduce IORails optimized Input/Output rail engine. Supports non-streaming parallel nemoguard input/output rails (content-safety, topic-safety, jailbreak detection) (#1638, #1649, #1654, #1656, #1658, #1660, #1661, #1674)
  • (server) Add OpenAI compatible v1/models endpoint (#1637)
  • (benchmark) Add Locust stress-test (#1629)
  • (jailbreak) Validate Jailbreak Detection config at create-time (#1675)
  • (library) Add PolicyAI Integration for Content Moderation (#1576)

🐛 Bug Fixes

  • (server) Make openai an optional server-only dependency (#1623)
  • (actions) Rename generate_next_step to generate_next_steps for task-specific LLM support (#1603)
  • (library) Add valid alias to action results in GuardrailsAI integration (#1578) (#1611)
  • (llm) Filter stop parameter for OpenAI reasoning models (#1653)
  • (logging) Show cache hits in Stats log and fix duplicate metadata restore (#1666)
  • (cache) Make cache stats log visible in verbose mode (#1667)
  • (library) Use bot refuse to respond in gliner PII detection flows (#1671)
  • (streaming) Handle None stop tokens in streaming handler (#1685)
  • (streaming) Handle dict chunks in RollingBuffer.format_chunks (#1687)
  • (middleware) Handle MODIFIED status in GuardrailsMiddleware instead of silently dropping it (#1714)

🚜 Refactor

  • (streaming) Remove LangChain callback dependencies from StreamingHandler (#1547)
  • (streaming) Remove ChatNVIDIA streaming patch (#1607)
  • (streaming) [breaking] Remove stream_usage and fix streaming metadata capture (#1624)

⚡ Performance

  • (actions) Lazy initialization of embedding indexes (#1572)

⚙️ Miscellaneous Tasks

  • Update Pangea User-Agent repo URL (#1595) (#1610)
  • (jailbreak) Update dependencies for jailbreak detection docker container. (#1596)
  • Remove multi_kb example (#1673)
  • (iorails) Increase work queue concurrency and depth (#1674)
  • (docs) Remove AI Virtual Assistant Blueprint notebook (#1682)
  • Update dependencies ahead of v0.21 release (#1617)

[0.20.0] - 2026-01-22

🚀 Features

  • (llm) Propagate model and base URL in LLMCallException; improve error handling (#1502)
  • (content_safety) Add support to auto select multilingual refusal bot messages (#1530)
  • (library) Adding GLiNER for PII detection (open alternative to PrivateAI) (#1545)
  • (benchmark) Implement Mock LLM streaming (#1564)
  • (library) Add reasoning guardrail connector (#1565)

🐛 Bug Fixes

  • (models) Surface relevant exception when initializing langchain model (#1516)
  • (llm) Filter temperature parameter for OpenAI reasoning models (#1526)
  • (bot-thinking) Tackle bug with reasoning trace leak across llm calls (#1582)
  • (providers) Handle langchain 1.2.1 dict type for _SUPPORTED_PROVIDERS (#1589)

🚜 Refactor

  • (streaming) [breaking] Drop streaming field from config (#1538)

⚙️ Miscellaneous Tasks

[0.19.0] - 2025-12-03

🚀 Features

  • Support langchain v1 (#1472)
  • (llm) Add LangChain 1.x content blocks support for reasoning and tool calls (#1496)
  • (benchmark) Add Procfile to run Guardrails and mock LLMs (#1490)
  • (benchmark): Add AIPerf run script ((#1501))

🐛 Bug Fixes

  • (llm) Add async streaming support to ChatNVIDIA provider patch (#1504)
  • ensure stream_async background task completes before exit (#1508)
  • (cli) Fix TypeError in v2.x chat due to incorrect State/dict conversion (#1509)
  • (llmrails): skip output rails when dialog disabled and no bot_message provided (#1518)
  • (llm): ensure that stop token is not ignored if llm_params is None (#1529)

⚙️ Miscellaneous Tasks

  • (llm) Remove deprecated llm_params module (#1475)

◀️ Revert

  • (llm) Remove custom HTTP headers patch now in langchain-nvidia-ai-endpoints v0.3.19 (#1503)

[0.18.0] - 2025-11-06

🚀 Features

  • (bot-thinking) Implement BotThinking events to process reasoning traces in Guardrails (#1431), (#1432), (#1434).
  • (embeddings) Add Azure OpenAI embedding provider (#702).
  • (embeddings) Add Cohere embedding integration (#1305).
  • (embeddings) Add Google embedding integration (#1304).
  • (library) Add Cisco AI Defense integration (#1433).
  • (cache) Add in-memory LFU caches for content-safety, topic-control, and jailbreak detection models (#1436), (#1456), (#1457), (#1458).
  • (llm) Add automatic provider inference for LangChain LLMs (#1460).
  • (llm) Add custom HTTP headers support to ChatNVIDIA provider (#1461).

🐛 Bug Fixes

  • (config) Validate content safety and topic control configs at creation time (#1450).
  • (jailbreak) Capitalization of Snowflake in use of snowflake-arctic-embed-m-long name. (#1464).
  • (runtime) Ensure stop flag is set for policy violations in parallel rails (#1467).
  • (llm) [breaking] Extract reasoning traces to separate field instead of prepending (#1468).
  • (streaming) [breaking] Raise error when stream_async used with disabled output rails streaming (#1470).
  • (llm) Add fallback extraction for reasoning traces from tags (#1474).
  • (runtime) Set stop flag for exception-based rails in parallel mode (#1487).

🚜 Refactor

  • [breaking] Replace reasoning trace extraction with LangChain additional_kwargs (#1427)

📚 Documentation

  • (examples) Add Nemoguard in-memory cache configuration example (#1459), (#1480).
  • Add guide for bot reasoning guardrails (#1479).
  • Update LLM reasoning traces configuration (#1483).

🧪 Testing

  • Add mock embedding provider tests (#1446)
  • (cli) Add comprehensive CLI test suite and reorganize files (#1339)
  • Skip FastEmbed tests when not in live mode (#1462)
  • Fix flaky stats logging interval timing test (#1463)
  • Restore test that was skipped due to Colang 2.0 serialization issue (#1449)

⚙️ Miscellaneous Tasks

  • Resolve PyPI publish workflow trigger and reliability issues (#1443)
  • Fix sparse checkout for publish pypi workflow (#1444)
  • Drop Python 3.9 support ahead of October 2025 EOL (#1426)
  • (types) Add type-annotations and pre-commit checks for tracing (#1388), logging (#1395), kb (#1385), cli (#1380), embeddings (#1383), server (#1397), and llm (#1394) code.
  • Update insert licenser pe-commit-hooks to use current year (#1452).
  • (library) Remove unused vllm requirements.txt files (#1466).

[0.17.0] - 2025-10-09

🚀 Features

  • (tool-calling) Add tool call passthrough support in LLMRails (#1364)
  • (runnable-rails) Complete rewrite of RunnableRails with full LangChain Runnable protocol support (#1366, #1369, #1370, #1405)
  • (tool-rails) Add support for tool output rails and validation (#1382)
  • (tool-rails) Implement tool input rails for tool message validation and processing (#1386)
  • (library) Add Trend Micro Vision One AI Application Security community integration (#1355)
  • (llm) Pass llm params directly (#1387)

🐛 Bug Fixes

  • (jailbreak) Handle URL joining with/without trailing slashes (#1346)
  • (logging) Handle missing id and task in verbose logs (#1343)
  • (library) Fix import package declaration to new cleanlab-tlm name (#1401)
  • (logging) Add "Tool" type to message sender labeling (#1412)
  • (logging) Correct message type formatting in logs (#1416)

🚜 Refactor

  • (llm) Remove LLMs isolation for actions (#1408)

📚 Documentation

  • (examples) Add NeMoGuard safety rails config example for Colang 1.0 (#1365)
  • Add hardware reqs (#1411)
  • Add tools integration guide (#1414)
  • (langgraph) Add integration guide for LangGraph (#1422)
  • (langchain) Update with full support and add tool calling guide … (#1419)
  • (langgraph) Clarify tool examples and replace calculate_math with multiply (#1439)

⚙️ Miscellaneous Tasks

  • (docs) Update v0.16.0 release date in changelog (#1377)
  • (docs) Add link to demo.py script in Getting-Started section (#1399)
  • (types) Type-clean rails (86 errors) (#1396)
  • (jailbreak-detection) Update transformers and torch (#1417)
  • (types) Type-clean /actions (189 errors) (#1361)
  • (docs) Update repository owner (#1425)

[0.16.0] - 2025-09-05

🚀 Features

  • (llmrails) Support method chaining by returning self from LLMRails.register_* methods (#1296)
  • Add Pangea AI Guard community integration (#1300)
  • (llmrails) Isolate LLMs only for configured actions (#1342)
  • Enhance tracing system with OpenTelemetry semantic conventions (#1331)
  • Add GuardrailsAI community integration (#1298)

🐛 Bug Fixes

  • (models) Suppress langchain_nvidia_ai_endpoints warnings (#1371)
  • (tracing) Respect the user-provided log options regardless of tracing configuration
  • (config) Ensure adding RailsConfig objects handles None values (#1328)
  • (config) Add handling for config directory with .yml/.yaml extension (#1293)
  • (colang) Apply guardrails transformations to LLM inputs and bot outputs. (#1297)
  • (topic_safety) Handle InternalEvent objects in topic safety actions for Colang 2.0 (#1335)
  • (prompts) Prevent IndexError when LLM provided via constructor with empty models config (#1334)
  • (llmrails) Handle LLM models without model_kwargs field in isolation (#1336)
  • (llmrails) Move LLM isolation setup to after KB initialization (#1348)

🚜 Refactor

  • (llm) Move get_action_details_from_flow_id from llmrails.py to utils.py (#1341)

📚 Documentation

  • Integrate with multilingual NIM (#1354)
  • (tracing) Update tracing notebooks with VDR feedback (#1376)
  • Add kv cache reuse documentation (#1330)
  • (examples) Add Colang 2.0 example for sensitive data detection (#1301)
  • Add extra slash to jailbreak detect nim_base_url(#1345)
  • Add tracing notebook (#1337)
  • Jaeger tracing notebook (#1353)
  • (examples) Add NeMoGuard rails config for colang 2 (#1289)
  • (tracing) Add OpenTelemetry span format guide (#1350)
  • Add GuardrailsAI integration user guide and example (#1357)

🧪 Testing

  • (jailbreak) Add missing pytest.mark.asyncio decorators (#1352)

⚙️ Miscellaneous Tasks

  • (docs) Rename test_csl.py to csl.py (#1347)

[0.15.0] - 2025-08-08

🚀 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

  • (dependabot) Remove dependabot configuration (#1281)
  • (CI) Add release workflow (#1309, #1318)

[0.14.1] - 2025-07-02

🚀 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)

[0.14.0] - 2025-05-28

🚀 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 to remove_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)

[0.13.0] - 2025-03-25

🚀 Features

  • Support models with reasoning traces (#996)
  • Add SHA-256 hashing option (#988)
  • Add Fiddler Guardrails integration (#964, #1043)
  • Add generation metadata to streaming chunks (#1011)
  • Improve alpha to beta bot migration (#878)
  • Support multimodal input and output rails (#1033)
  • Add support for NemoGuard JailbreakDetect NIM. (#1038)
  • Set default start and end reasoning tokens (#1050)
  • Improve output rails error handling for SSE format (#1058)

🐛 Bug Fixes

  • Ensure parse_task_output is called after all llm_call invocations (#1047)
  • Handle exceptions in generate_events to propagate errors in streaming (#1012)
  • Ensure output rails streaming is enabled explicitly (#1045)
  • Improve multimodal prompt length calculation for base64 images (#1053)

🚜 Refactor

  • Move startup and shutdown logic to lifespan in server (#999)

📚 Documentation

  • Add multimodal rails documentation (#1061)
  • Add content safety tutorial (#1042)
  • Revise reasoning model info (#1062)
  • Consider new GS experience (#1005)
  • Restore deleted configuration files (#963)

⚙️ Miscellaneous Tasks

  • Add Python 3.12 support (#984)

[0.12.0] - 2025-02-26

🚀 Features

  • Support Output Rails Streaming (#966, #1003)
  • Add unified output mapping for actions (#965)
  • Add output rails support to activefence integration (#940)
  • Add Prompt Security integration (#920)
  • Add pii masking capability to PrivateAI integration (#901)
  • Add embedding_params to BasicEmbeddingsIndex (#898)
  • Add score threshold to AnalyzerEngine (#845)

🐛 Bug Fixes

  • Fix dependency resolution issues in AlignScore Dockerfile(#1002, #982)
  • Fix JailbreakDetect docker files(#981, #1001)
  • Fix TypeError from attempting to unpack already-unpacked dictionary. (#959)
  • Fix token stats usage in LLM call info. (#953)
  • Handle unescaped quotes in generate_value using safe_eval (#946)
  • Handle non-relative file paths (#897)
  • Set workdir to models and specify entrypoint explicitly (#1001).

📚 Documentation

  • Output streaming (#976)
  • Fix typos with oauthtoken (#957)
  • Fix broken link in prompt security (#978)
  • Update advanced user guides per v0.11.1 doc release (#937)

⚙️ Miscellaneous Tasks

  • Tolerate prompt in code blocks (#1004)
  • Update YAML indent to use two spaces (#1009)

[0.11.1] - 2025-01-16

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

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

[0.11.0] - 2024-11-19

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

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)

Fixed

  • 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)
  • 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

Documentation

  • User Guide: Update role from bot to assistant (#852) by @Pouyanpi
  • 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

[0.10.1] - 2024-10-02

  • Colang 2.0-beta.4 patch

[0.10.0] - 2024-09-27

Added

  • content safety: Implement content safety module (#674) by @Pouyanpi
  • migration tool: Enhance migration tool capabilities (#624) by @Pouyanpi
  • Cleanlab Integration: Add Cleanlab's Trustworthiness Score (#572) by @AshishSardana
  • Colang 2: LLM chat interface development (#709) by @schuellc-nvidia
  • embeddings: Add relevant chunk support to Colang 2 (#708) by @Pouyanpi
  • library: Migrate Cleanlab to Colang 2 and add exception handling (#714) by @Pouyanpi
  • Colang debug library: Develop debugging tools for Colang (#560) by @schuellc-nvidia
  • debug CLI: Extend debugging command-line interface (#717) by @schuellc-nvidia
  • embeddings: Add support for embeddings only with search threshold (#733) by @Pouyanpi
  • embeddings: Add embedding-only support to Colang 2 (#737) by @Pouyanpi
  • embeddings: Add relevant chunks prompts (#745) by @Pouyanpi
  • gcp moderation: Implement GCP-based moderation tools (#727) by @kauabh
  • migration tool: Sample conversation syntax conversion (#764) by @Pouyanpi
  • llmrails: Add serialization support for LLMRails (#627) by @Pouyanpi
  • exceptions: Initial support for exception handling (#384) by @drazvan
  • evaluation tooling: Develop new evaluation tools (#677) by @drazvan
  • Eval UI: Add support for tags in the Evaluation UI (#731) by @drazvan
  • guardrails library: Launch Colang 2.0 Guardrails Library (#689) by @drazvan
  • configuration: Revert abc bot to Colang v1 and separate v2 configuration (#698) by @drazvan

Changed

  • api: Update Pydantic validators (#688) by @Pouyanpi

  • standard library: Refactor and migrate standard library components (#625) by @Pouyanpi

  • Upgrade langchain-core and jinja2 dependencies (#766) by @Pouyanpi

Fixed

  • documentation: Fix broken links (#670) by @buvnswrn
  • hallucination-check: Correct hallucination-check functionality (#679) by @Pouyanpi
  • streaming: Fix NVIDIA AI endpoints streaming issues (#654) by @Pouyanpi
  • hallucination-check: Resolve non-OpenAI hallucination check issue (#681) by @Pouyanpi
  • import error: Fix Streamlit import error (#686) by @Pouyanpi
  • prompt override: Fix override prompt self-check facts (#621) by @Pouyanpi
  • output parser: Resolve deprecation warning in output parser (#691) by @Pouyanpi
  • patch: Fix langchain_nvidia_ai_endpoints patch (#697) by @Pouyanpi
  • runtime issues: Address Colang 2 runtime issues (#699) by @schuellc-nvidia
  • send event: Change 'send event' to 'send' (#701) by @Pouyanpi
  • output parser: Fix output parser validation (#704) by @Pouyanpi
  • passthrough_fn: Pass config and kwargs to passthrough_fn runnable (#695) by @vpr1995
  • rails exception: Fix rails exception migration (#705) by @Pouyanpi
  • migration: Replace hyphens and apostrophes in migration (#725) by @Pouyanpi
  • flow generation: Fix LLM flow continuation generation (#724) by @schuellc-nvidia
  • server command: Fix CLI server command (#723) by @Pouyanpi
  • embeddings filesystem: Fix cache embeddings filesystem (#722) by @Pouyanpi
  • outgoing events: Process all outgoing events (#732) by @sklinglernv
  • generate_flow: Fix a small bug in the generate_flow action for Colang 2 (#710) by @drazvan
  • triggering flow id: Fix the detection of the triggering flow id (#728) by @drazvan
  • LLM output: Fix multiline LLM output syntax error for dynamic flow generation (#748) by @radinshayanfar
  • scene form: Fix the scene form and choice flows in the Colang 2 standard library (#741) by @sklinglernv

Documentation

  • Cleanlab: Update community documentation for Cleanlab integration (#713) by @Pouyanpi
  • rails exception handling: Add notes for Rails exception handling in Colang 2.x (#744) by @Pouyanpi
  • LLM per task: Document LLM per task functionality (#676) by @Pouyanpi

Others

  • relevant_chunks: Add the relevant_chunks to the GPT-3.5 general prompt template (#678) by @drazvan
  • flow names: Ensure flow names don't start with keywords (#637) by @schuellc-nvidia

[0.9.1.1] - 2024-07-26

Fixed

  • #650 Fix gpt-3.5-turbo-instruct prompts #651.

[0.9.1] - 2024-07-25

Added

  • Colang version 2.0-beta.2
  • #370 Add Got It AI's Truthchecking service for RAG applications by @mlmonk.
  • #543 Integrating AutoAlign's guardrail library with NeMo Guardrails by @abhijitpal1247.
  • #566 Autoalign factcheck examples by @abhijitpal1247.
  • #518 Docs: add example config for using models with ollama by @vedantnaik19.
  • #538 Support for --default-config-id in the server.
  • #539 Support for LLMCallException.
  • #548 Support for custom embedding models.
  • #617 NVIDIA AI Endpoints embeddings.
  • #462 Support for calling embedding models from langchain-nvidia-ai-endpoints.
  • #622 Patronus Lynx Integration.

Changed

  • #597 Make UUID generation predictable in debug-mode.
  • #603 Improve chat cli logging.
  • #551 Upgrade to Langchain 0.2.x by @nicoloboschi.
  • #611 Change default templates.
  • #545 NVIDIA API Catalog and NIM documentation update.
  • #463 Do not store pip cache during docker build by @don-attilio.
  • #629 Move community docs to separate folder.
  • #647 Documentation updates.
  • #648 Prompt improvements for Llama-3 models.

Fixed

  • #482 Update README.md by @curefatih.
  • #530 Improve the test serialization test to make it more robust.
  • #570 Add support for FacialGestureBotAction by @elisam0.
  • #550 Fix issue #335 - make import errors visible.
  • #547 Fix LLMParams bug and add unit tests (fixes #158).
  • #537 Fix directory traversal bug.
  • #536 Fix issue #304 NeMo Guardrails packaging.
  • #539 Fix bug related to the flow abort logic in Colang 1.0 runtime.
  • #612 Follow-up fixes for the default prompt change.
  • #585 Fix Colang 2.0 state serialization issue.
  • #486 Fix select model type and custom prompts task.py by @cyun9601.
  • #487 Fix custom prompts configuration manual.md.
  • #479 Fix static method and classmethod action decorators by @piotrm0.
  • #544 Fix issue #216 bot utterance.
  • #616 Various fixes.
  • #623 Fix path traversal check.

[0.9.0] - 2024-05-08

Added

Fixed

  • #461 Feature/ccl cleanup.
  • #483 Fix dictionary expression evaluation bug.
  • #467 Feature/colang doc related cleanups.
  • #484 Enable parsing of ..."<NLD>" expressions.
  • #478 Fix #420 - evaluate not working with chat models.

[0.8.3] - 2024-04-18

Changed

  • #453 Update documentation for NVIDIA API Catalog example.

Fixed

  • #382 Fix issue with lowest_temperature in self-check and hallucination rails.
  • #454 Redo fix for #385.
  • #442 Fix README type by @dileepbapat.

[0.8.2] - 2024-04-01

Added

  • #402 Integrate Vertex AI Models into Guardrails by @aishwaryap.
  • #403 Add support for NVIDIA AI Endpoints by @patriciapampanelli
  • #396 Docs/examples nv ai foundation models.
  • #438 Add research roadmap documentation.

Changed

  • #389 Expose the verbose parameter through RunnableRails by @d-mariano.
  • #415 Enable print(...) and log(...).
  • #389 Expose verbose arg in RunnableRails by @d-mariano.
  • #414 Feature/colang march release.
  • #416 Refactor and improve the verbose/debug mode.
  • #418 Feature/colang flow context sharing.
  • #425 Feature/colang meta decorator.
  • #427 Feature/colang single flow activation.
  • #426 Feature/colang 2.0 tutorial.
  • #428 Feature/Standard library and examples.
  • #431 Feature/colang various improvements.
  • #433 Feature/Colang 2.0 improvements: generate_async support, stateful API.

Fixed

  • #412 Fix #411 - explain rails not working for chat models.
  • #413 Typo fix: Comment in llm_flows.co by @habanoz.
  • #420 Fix typo for hallucination message.

[0.8.1] - 2024-03-15

Added

  • #377 Add example for streaming from custom action.

Changed

  • #380 Update installation guide for OpenAI usage.
  • #401 Replace YAML import with new import statement in multi-modal example.

Fixed

  • #398 Colang parser fixes and improvements.
  • #394 Fixes and improvements for Colang 2.0 runtime.
  • #381 Fix typo by @serhatgktp.
  • #379 Fix missing prompt in verbose mode for chat models.
  • #400 Fix Authorization header showing up in logs for NeMo LLM.

[0.8.0] - 2024-02-28

Added

  • #292 Jailbreak heuristics by @erickgalinkin.
  • #256 Support generation options.
  • #307 Added support for multi-config api calls by @makeshn.
  • #293 Adds configurable stop tokens by @zmackie.
  • #334 Colang 2.0 - Preview by @schuellc.
  • #208 Implement cache embeddings (resolves #200) by @Pouyanpi.
  • #331 Huggingface pipeline streaming by @trebedea.

Documentation:

Changed

  • #309 Change the paper citation from ArXiV to EMNLP 2023 by @manuelciosici
  • #319 Enable embeddings model caching.
  • #267 Make embeddings computing async and add support for batching.
  • #281 Follow symlinks when building knowledge base by @piotrm0.
  • #280 Add more information to results of retrieve_relevant_chunks by @piotrm0.
  • #332 Update docs for batch embedding computations.
  • #244 Docs/edit getting started by @DougAtNvidia.
  • #333 Follow-up to PR 244.
  • #341 Updated 'fastembed' version to 0.2.2 by @NirantK.

Fixed

  • #286 Fixed #285 - using the same evaluation set given a random seed for topical rails by @trebedea.
  • #336 Fix #320. Reuse the asyncio loop between sync calls.
  • #337 Fix stats gathering in a parallel async setup.
  • #342 Fixes OpenAI embeddings support.
  • #346 Fix issues with KB embeddings cache, bot intent detection and config ids validator logic.
  • #349 Fix multi-config bug, asyncio loop issue and cache folder for embeddings.
  • #350 Fix the incorrect logging of an extra dialog rail.
  • #358 Fix Openai embeddings async support.
  • #362 Fix the issue with the server being pointed to a folder with a single config.
  • #352 Fix a few issues related to jailbreak detection heuristics.
  • #356 Redo followlinks PR in new code by @piotrm0.

[0.7.1] - 2024-02-01

Changed

  • #288 Replace SentenceTransformers with FastEmbed.

[0.7.0] - 2024-01-31

Added

Changed

  • #240 Switch to pyproject.
  • #276 Upgraded Typer to 0.9.

Fixed

  • #286 Fixed not having the same evaluation set given a random seed for topical rails.
  • #239 Fixed logging issue where verbose=true flag did not trigger expected log output.
  • #228 Fix docstrings for various functions.
  • #242 Fix Azure LLM support.
  • #225 Fix annoy import, to allow using without.
  • #209 Fix user messages missing from prompt.
  • #261 Fix small bug in print_llm_calls_summary.
  • #252 Fixed duplicate loading for the default config.
  • Fixed the dependencies pinning, allowing a wider range of dependencies versions.
  • Fixed sever security issues related to uncontrolled data used in path expression and information exposure through an exception.

[0.6.1] - 2023-12-20

Added

  • Support for --version flag in the CLI.

Changed

  • Upgraded langchain to 0.0.352.
  • Upgraded httpx to 0.24.1.
  • Replaced deprecated text-davinci-003 model with gpt-3.5-turbo-instruct.

Fixed

  • #191: Fix chat generation chunk issue.

[0.6.0] - 2023-12-13

Added

Changed

  • Allow context data directly in the /v1/chat/completion using messages with the type "role".
  • Allow calling a subflow whose name is in a variable, e.g. do $some_name.
  • Allow using actions which are not async functions.
  • Disabled pretty exceptions in CLI.
  • Upgraded dependencies.
  • Updated the Getting Started Guide.
  • Main README now provides more details.
  • Merged original examples into a single ABC Bot and removed the original ones.
  • Documentation improvements.

Fixed

  • Fix going over the maximum prompt length using the max_length attribute in Prompt Templates.
  • Fixed problem with nest_asyncio initialization.
  • #144 Fixed TypeError in logging call.
  • #121 Detect chat model using openai engine.
  • #109 Fixed minor logging issue.
  • Parallel flow support.
  • Fix HuggingFacePipeline bug related to LangChain version upgrade.

[0.5.0] - 2023-09-04

Added

Changed

  • Moved to using nest_asyncio for implementing the blocking API. Fixes #3 and #32.
  • Improved event property validation in new_event_dict.
  • Refactored imports to allow installing from source without Annoy/SentenceTransformers (would need a custom embedding search provider to work).

Fixed

  • Fixed when the init function from config.py is called to allow custom LLM providers to be registered inside.
  • #93: Removed redundant hasattr check in nemoguardrails/llm/params.py.
  • #91: Fixed how default context variables are initialized.

[0.4.0] - 2023-08-03

Added

Changed

  • Changed the naming of the internal events to align to the upcoming UMIM spec (Unified Multimodal Interaction Management).
  • If there are no user message examples, the bot messages examples lookup is disabled as well.

Fixed

  • #58: Fix install on Mac OS 13.
  • #55: Fix bug in example causing config.py to crash on computers with no CUDA-enabled GPUs.
  • Fixed the model name initialization for LLMs that use the model kwarg.
  • Fixed the Cohere prompt templates.
  • #55: Fix bug related to LangChain callbacks initialization.
  • Fixed generation of "..." on value generation.
  • Fixed the parameters type conversion when invoking actions from Colang (previously everything was string).
  • Fixed model_kwargs property for the WrapperLLM.
  • Fixed bug when stop was used inside flows.
  • Fixed Chat UI bug when an invalid guardrails configuration was used.

[0.3.0] - 2023-06-30

Added

  • Support for defining subflows.
  • Improved support for customizing LLM prompts
    • Support for using filters to change how variables are included in a prompt template.
    • Output parsers for prompt templates.
    • The verbose_v1 formatter and output parser to be used for smaller models that don't understand Colang very well in a few-shot manner.
    • Support for including context variables in prompt templates.
    • Support for chat models i.e. prompting with a sequence of messages.
  • Experimental support for allowing the LLM to generate multi-step flows.
  • Example of using Llama Index from a guardrails configuration (#40).
  • Example for using HuggingFace Endpoint LLMs with a guardrails configuration.
  • Example for using HuggingFace Pipeline LLMs with a guardrails configuration.
  • Support to alter LLM parameters passed as model_kwargs in LangChain.
  • CLI tool for running evaluations on the different steps (e.g., canonical form generation, next steps, bot message) and on existing rails implementation (e.g., moderation, jailbreak, fact-checking, and hallucination).
  • Initial evaluation results for text-davinci-003 and gpt-3.5-turbo.
  • The lowest_temperature can be set through the guardrails config (to be used for deterministic tasks).

Changed

  • The core templates now use Jinja2 as the rendering engines.
  • Improved the internal prompting architecture, now using an LLM Task Manager.

Fixed

  • Fixed bug related to invoking a chain with multiple output keys.
  • Fixed bug related to tracking the output stats.
  • #51: Bug fix - avoid str concat with None when logging user_intent.
  • #54: Fix UTF-8 encoding issue and add embedding model configuration.

[0.2.0] - 2023-05-31

Added

Changed

  • Improved the logging output for Chat CLI (clear events stream, prompts, completion, timing information).
  • Updated system actions to use temperature 0 where it makes sense, e.g., canonical form generation, next step generation, fact checking, etc.
  • Excluded the default system flows from the "next step generation" prompt.
  • Updated langchain to 0.0.167.

Fixed

  • Fixed initialization of LangChain tools.
  • Fixed the overriding of general instructions #7.
  • Fixed action parameters inspection bug #2.
  • Fixed bug related to multi-turn flows #13.
  • Fixed Wolfram Alpha error reporting in the sample execution rail.

[0.1.0] - 2023-04-25

Added

  • First alpha release.