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

# nemo_curator.models.omni.base

NVIDIA Inference API client for reasoning VLMs.

Reasoning models on NVIDIA Inference (e.g. Nemotron-Nano-Omni-Reasoning) split
their output into `delta.reasoning_content` (chain-of-thought) and
`delta.content` (the final answer), and their non-stream response shape is not
deserialized cleanly by the OpenAI SDK. This client therefore streams and
reassembles only `delta.content`.

## Module Contents

### Classes

| Name                                                                    | Description                                                         |
| ----------------------------------------------------------------------- | ------------------------------------------------------------------- |
| [`NVInferenceClient`](#nemo_curator-models-omni-base-NVInferenceClient) | Async OpenAI-compatible client that streams reasoning-model output. |

### Data

[`_PRIORITY_HEADER`](#nemo_curator-models-omni-base-_PRIORITY_HEADER)

### API

```python
class nemo_curator.models.omni.base.NVInferenceClient(
    base_url: str = 'https://integrate.api.nvid...,
    api_key_env_var: str = 'NVINFERENCE_API_KEY',
    priority_mode: bool = False,
    max_concurrent_requests: int = 10,
    timeout: int = 120
)
```

**Bases:** [AsyncOpenAIClient](/nemo-curator/nemo_curator/models/client/openai_client#nemo_curator-models-client-openai_client-AsyncOpenAIClient)

Async OpenAI-compatible client that streams reasoning-model output.

Resolves the API key from `api_key_env_var` at `setup()` time (so the
key is read on the worker, not serialized from the driver), then reassembles
`delta.content` from a streaming completion.

```python
nemo_curator.models.omni.base.NVInferenceClient._query_model_impl(
    messages: collections.abc.Iterable,
    model: str,
    conversation_formatter: nemo_curator.models.client.llm_client.ConversationFormatter | None = None,
    generation_config: nemo_curator.models.client.llm_client.GenerationConfig | dict | None = None
) -> list[str]
```

async

```python
nemo_curator.models.omni.base.NVInferenceClient.setup() -> None
```

```python
nemo_curator.models.omni.base._PRIORITY_HEADER = {'X-Vertex-AI-LLM-Shared-Request-Type': 'priority'}
```