> 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 AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo/guardrails/_mcp/server.

# nemoguardrails.llm.clients._errors

## Module Contents

### Classes

| Name                                                               | Description |
| ------------------------------------------------------------------ | ----------- |
| [`ErrorContext`](#nemoguardrails-llm-clients-_errors-ErrorContext) | -           |

### Functions

| Name                                                                                                 | Description |
| ---------------------------------------------------------------------------------------------------- | ----------- |
| [`_build_error_fields`](#nemoguardrails-llm-clients-_errors-_build_error_fields)                     | -           |
| [`_classify_bad_request`](#nemoguardrails-llm-clients-_errors-_classify_bad_request)                 | -           |
| [`_extract_from_parsed_body`](#nemoguardrails-llm-clients-_errors-_extract_from_parsed_body)         | -           |
| [`_looks_like_unknown_param_400`](#nemoguardrails-llm-clients-_errors-_looks_like_unknown_param_400) | -           |
| [`_maybe_append_migration_hint`](#nemoguardrails-llm-clients-_errors-_maybe_append_migration_hint)   | -           |
| [`_parse_retry_after`](#nemoguardrails-llm-clients-_errors-_parse_retry_after)                       | -           |
| [`_parse_retry_after_value`](#nemoguardrails-llm-clients-_errors-_parse_retry_after_value)           | -           |
| [`_redact_secrets`](#nemoguardrails-llm-clients-_errors-_redact_secrets)                             | -           |
| [`raise_for_sse_error`](#nemoguardrails-llm-clients-_errors-raise_for_sse_error)                     | -           |
| [`raise_for_status`](#nemoguardrails-llm-clients-_errors-raise_for_status)                           | -           |

### Data

[`_CONTEXT_WINDOW_KEYWORDS`](#nemoguardrails-llm-clients-_errors-_CONTEXT_WINDOW_KEYWORDS)

[`_EMPTY_CONTEXT`](#nemoguardrails-llm-clients-_errors-_EMPTY_CONTEXT)

[`_MIGRATION_HINT_021`](#nemoguardrails-llm-clients-_errors-_MIGRATION_HINT_021)

[`_SECRET_PATTERN`](#nemoguardrails-llm-clients-_errors-_SECRET_PATTERN)

[`_SSE_ERROR_TYPE_TO_STATUS`](#nemoguardrails-llm-clients-_errors-_SSE_ERROR_TYPE_TO_STATUS)

[`_UNKNOWN_PARAM_HINT_TOKENS`](#nemoguardrails-llm-clients-_errors-_UNKNOWN_PARAM_HINT_TOKENS)

[`_UNSUPPORTED_PARAMS_KEYWORDS`](#nemoguardrails-llm-clients-_errors-_UNSUPPORTED_PARAMS_KEYWORDS)

### API

```python
class nemoguardrails.llm.clients._errors.ErrorContext(
    model_name: typing.Optional[str] = None,
    provider_name: typing.Optional[str] = None,
    base_url: typing.Optional[str] = None
)
```

Dataclass

**`base_url`** `Optional[str] = None`

---

**`model_name`** `Optional[str] = None`

---

**`provider_name`** `Optional[str] = None`

---

```python
nemoguardrails.llm.clients._errors.ErrorContext.as_kwargs() -> typing.Dict[str, typing.Any]
```

```python
nemoguardrails.llm.clients._errors._build_error_fields(
    parsed_body: typing.Any,
    raw_body: str,
    headers: typing.Any,
    ctx: nemoguardrails.llm.clients._errors.ErrorContext
) -> typing.Tuple[str, typing.Dict[str, typing.Any]]
```

```python
nemoguardrails.llm.clients._errors._classify_bad_request(
    status_code: int,
    error_message: str,
    kwargs: typing.Dict[str, typing.Any]
) -> nemoguardrails.exceptions.LLMClientError
```

```python
nemoguardrails.llm.clients._errors._extract_from_parsed_body(
    parsed_body: typing.Any
) -> typing.Tuple[str, typing.Optional[str], typing.Optional[str], typing.Optional[str]]
```

```python
nemoguardrails.llm.clients._errors._looks_like_unknown_param_400(
    error_message: str
) -> bool
```

```python
nemoguardrails.llm.clients._errors._maybe_append_migration_hint(
    error_message: str
) -> str
```

```python
nemoguardrails.llm.clients._errors._parse_retry_after(
    headers: typing.Any
) -> typing.Optional[float]
```

```python
nemoguardrails.llm.clients._errors._parse_retry_after_value(
    value: typing.Any
) -> typing.Optional[float]
```

```python
nemoguardrails.llm.clients._errors._redact_secrets(
    text: str
) -> str
```

```python
nemoguardrails.llm.clients._errors.raise_for_sse_error(
    parsed_payload: typing.Dict[str, typing.Any],
    headers: typing.Any,
    ctx: typing.Optional[nemoguardrails.llm.clients._errors.ErrorContext] = None
) -> None
```

```python
nemoguardrails.llm.clients._errors.raise_for_status(
    status_code: int,
    body: str,
    headers: typing.Any,
    ctx: typing.Optional[nemoguardrails.llm.clients._errors.ErrorContext] = None
) -> None
```

```python
nemoguardrails.llm.clients._errors._CONTEXT_WINDOW_KEYWORDS = ['context length', 'context_length', 'context window', 'maximum token', 'max_tok...
```

```python
nemoguardrails.llm.clients._errors._EMPTY_CONTEXT = ErrorContext()
```

```python
nemoguardrails.llm.clients._errors._MIGRATION_HINT_021 = '(If you upgraded from 0.21: the default framework forwards `parameters` verbati...
```

```python
nemoguardrails.llm.clients._errors._SECRET_PATTERN = re.compile('(sk-|nvapi-|AIza|bearer\\s+)\\S+', re.IGNORECASE)
```

```python
nemoguardrails.llm.clients._errors._SSE_ERROR_TYPE_TO_STATUS: Dict[str, int] = {'invalid_request_error': 400, 'authentication_error': 401, 'permission_error': ...
```

```python
nemoguardrails.llm.clients._errors._UNKNOWN_PARAM_HINT_TOKENS = ('unrecognized request argument', 'unsupported parameter', "' is unsupported", '...
```

```python
nemoguardrails.llm.clients._errors._UNSUPPORTED_PARAMS_KEYWORDS = ['unsupported parameter', 'parameter not allowed', 'unknown parameter', 'unrecog...
```