> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/guardrails/llms.txt.
> For full documentation content, see https://docs.nvidia.com/nemo/guardrails/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/guardrails/_mcp/server.

# nemoguardrails.llm.frameworks.registry

## Module Contents

### Functions

| Name                                                                                     | Description                                       |
| ---------------------------------------------------------------------------------------- | ------------------------------------------------- |
| [`_areset_frameworks`](#nemoguardrails-llm-frameworks-registry-_areset_frameworks)       | -                                                 |
| [`_reset_frameworks`](#nemoguardrails-llm-frameworks-registry-_reset_frameworks)         | -                                                 |
| [`get_default_framework`](#nemoguardrails-llm-frameworks-registry-get_default_framework) | -                                                 |
| [`get_framework`](#nemoguardrails-llm-frameworks-registry-get_framework)                 | -                                                 |
| [`register_framework`](#nemoguardrails-llm-frameworks-registry-register_framework)       | Register an `LLMFramework` instance under `name`. |
| [`set_default_framework`](#nemoguardrails-llm-frameworks-registry-set_default_framework) | -                                                 |

### Data

[`_LAZY_FRAMEWORKS`](#nemoguardrails-llm-frameworks-registry-_LAZY_FRAMEWORKS)

[`_default_framework`](#nemoguardrails-llm-frameworks-registry-_default_framework)

[`_frameworks`](#nemoguardrails-llm-frameworks-registry-_frameworks)

[`log`](#nemoguardrails-llm-frameworks-registry-log)

### API

```python
nemoguardrails.llm.frameworks.registry._areset_frameworks() -> None
```

async

```python
nemoguardrails.llm.frameworks.registry._reset_frameworks() -> None
```

```python
nemoguardrails.llm.frameworks.registry.get_default_framework() -> str
```

```python
nemoguardrails.llm.frameworks.registry.get_framework(
    name: str
) -> nemoguardrails.types.LLMFramework
```

```python
nemoguardrails.llm.frameworks.registry.register_framework(
    name: str,
    framework: nemoguardrails.types.LLMFramework
) -> None
```

Register an `LLMFramework` instance under `name`.

Validates two invariants before storing the instance:

1. The object structurally matches the `LLMFramework` Protocol
   (`create_model`, `register_provider`, `get_provider_names`, `reset`).
2. Its `reset` attribute is an `async` coroutine function. The registry
   awaits it directly during shutdown / test teardown.

**Raises:**

* `ValueError`: a framework is already registered under `name`.
* `TypeError`: `framework` does not implement the `LLMFramework`
  Protocol, or its `reset` is not an async coroutine function.

```python
nemoguardrails.llm.frameworks.registry.set_default_framework(
    name: str
) -> None
```

```python
nemoguardrails.llm.frameworks.registry._LAZY_FRAMEWORKS = {'langchain', 'default'}
```

```python
nemoguardrails.llm.frameworks.registry._default_framework: str = os.environ.get('NEMOGUARDRAILS_LLM_FRAMEWORK', 'default')
```

```python
nemoguardrails.llm.frameworks.registry._frameworks: Dict[str, LLMFramework] = {}
```

```python
nemoguardrails.llm.frameworks.registry.log = logging.getLogger(__name__)
```