nemoguardrails.guardrails.rails_manager

View as Markdown

Rails manager for IORails engine.

Orchestrates input/output safety checks by delegating to RailAction instances. Rails run sequentially by default; the first failing rail short-circuits. When parallel mode is enabled, all rails run concurrently and the first unsafe result cancels remaining rails immediately.

Module Contents

Classes

NameDescription
RailsManagerOrchestrates input and output safety checks for IORails.

Data

_ACTION_CLASSES

log

API

class nemoguardrails.guardrails.rails_manager.RailsManager(
engine_registry: nemoguardrails.guardrails.engine_registry.EngineRegistry,
task_manager: nemoguardrails.llm.taskmanager.LLMTaskManager,
input_flows: list[str],
output_flows: list[str],
input_parallel: bool = False,
output_parallel: bool = False,
tracer: typing.Optional[opentelemetry.trace.Tracer] = None,
content_capture_enabled: bool = False
)

Orchestrates input and output safety checks for IORails.

Reads the rails configuration to determine which checks are enabled, instantiates the corresponding RailAction for each flow, then runs them sequentially or in parallel.

_actions
dict[str, RailAction] = {}
input_flows
list[str] = list(input_flows)
output_flows
list[str] = list(output_flows)
nemoguardrails.guardrails.rails_manager.RailsManager._create_action(
base_name: str
) -> nemoguardrails.guardrails.rail_action.RailAction

Instantiate the RailAction for a given flow base name.

nemoguardrails.guardrails.rails_manager.RailsManager._run_rail(
flow: str,
direction: nemoguardrails.guardrails.guardrails_types.RailDirection,
messages: list[dict],
bot_response: typing.Optional[str] = None
) -> nemoguardrails.guardrails.guardrails_types.RailResult
async

Dispatch a single rail flow to its RailAction instance.

nemoguardrails.guardrails.rails_manager.RailsManager._run_rails_parallel(
rails: collections.abc.Mapping[str, collections.abc.Coroutine[typing.Any, typing.Any, nemoguardrails.guardrails.guardrails_types.RailResult]],
direction: nemoguardrails.guardrails.guardrails_types.RailDirection
) -> nemoguardrails.guardrails.guardrails_types.RailResult
async

Run rail coroutines concurrently, cancelling remaining on first unsafe result.

nemoguardrails.guardrails.rails_manager.RailsManager._run_rails_sequential(
rails: collections.abc.Mapping[str, collections.abc.Coroutine[typing.Any, typing.Any, nemoguardrails.guardrails.guardrails_types.RailResult]],
direction: nemoguardrails.guardrails.guardrails_types.RailDirection
) -> nemoguardrails.guardrails.guardrails_types.RailResult
async

Run rail coroutines sequentially, short-circuiting on first unsafe result.

nemoguardrails.guardrails.rails_manager.RailsManager.is_input_safe(
messages: list[dict]
) -> nemoguardrails.guardrails.guardrails_types.RailResult
async

Run all enabled input rails, short-circuiting on the first failure.

When parallel mode is enabled, all rails run concurrently and the first unsafe result cancels remaining rails.

nemoguardrails.guardrails.rails_manager.RailsManager.is_output_safe(
messages: list[dict],
response: str
) -> nemoguardrails.guardrails.guardrails_types.RailResult
async

Run all enabled output rails, short-circuiting on the first failure.

When parallel mode is enabled, all rails run concurrently and the first unsafe result cancels remaining rails.

nemoguardrails.guardrails.rails_manager._ACTION_CLASSES: dict[str, type[RailAction]] = {(cls.action_name): cls for cls in [ContentSafetyInputAction, ContentSafetyOutpu...
nemoguardrails.guardrails.rails_manager.log = logging.getLogger(__name__)