> 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 full documentation content, see https://docs.nvidia.com/nemo/curator/llms-full.txt.

# nemo_curator.models.prompt_formatter

## Module Contents

### Classes

| Name                                                                       | Description                                                              |
| -------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| [`PromptFormatter`](#nemo_curator-models-prompt_formatter-PromptFormatter) | Unified prompt formatter for VLM models using HuggingFace AutoProcessor. |

### Data

[`VARIANT_MAPPING`](#nemo_curator-models-prompt_formatter-VARIANT_MAPPING)

### API

<Anchor id="nemo_curator-models-prompt_formatter-PromptFormatter">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_curator.models.prompt_formatter.PromptFormatter(
        prompt_variant: str
    )
    ```
  </CodeBlock>
</Anchor>

<Indent>
  Unified prompt formatter for VLM models using HuggingFace AutoProcessor.

  Supports both Qwen and Nemotron model variants. Uses AutoProcessor.from\_pretrained()
  to load the appropriate tokenizer and chat template from HuggingFace Hub or a local path.

  <ParamField path="processor" />

  <Anchor id="nemo_curator-models-prompt_formatter-PromptFormatter-_convert_to_numpy">
    <CodeBlock showLineNumbers={false} wordWrap={true}>
      ```python
      nemo_curator.models.prompt_formatter.PromptFormatter._convert_to_numpy(
          video_inputs: torch.Tensor | numpy.ndarray
      ) -> numpy.ndarray
      ```
    </CodeBlock>
  </Anchor>

  <Indent>
    Convert video inputs to numpy array in (T, H, W, C) format.
  </Indent>

  <Anchor id="nemo_curator-models-prompt_formatter-PromptFormatter-_create_qwen_message">
    <CodeBlock showLineNumbers={false} wordWrap={true}>
      ```python
      nemo_curator.models.prompt_formatter.PromptFormatter._create_qwen_message(
          prompt: str
      ) -> list[dict[str, typing.Any]]
      ```
    </CodeBlock>
  </Anchor>

  <Indent>
    Create a message for Qwen models.
  </Indent>

  <Anchor id="nemo_curator-models-prompt_formatter-PromptFormatter-_generate_nemotron_inputs">
    <CodeBlock showLineNumbers={false} wordWrap={true}>
      ```python
      nemo_curator.models.prompt_formatter.PromptFormatter._generate_nemotron_inputs(
          prompt: str,
          video_inputs: torch.Tensor | numpy.ndarray | None,
          fps: float
      ) -> dict[str, typing.Any]
      ```
    </CodeBlock>
  </Anchor>

  <Indent>
    Generate inputs for Nemotron models.

    Nemotron requires video metadata (fps, frames\_indices) for vLLM processing.
  </Indent>

  <Anchor id="nemo_curator-models-prompt_formatter-PromptFormatter-_generate_qwen_inputs">
    <CodeBlock showLineNumbers={false} wordWrap={true}>
      ```python
      nemo_curator.models.prompt_formatter.PromptFormatter._generate_qwen_inputs(
          prompt: str,
          video_inputs: torch.Tensor | None,
          override_text_prompt: bool,
          fps: float = 2.0
      ) -> dict[str, typing.Any]
      ```
    </CodeBlock>
  </Anchor>

  <Indent>
    Generate inputs for Qwen models.
  </Indent>

  <Anchor id="nemo_curator-models-prompt_formatter-PromptFormatter-generate_inputs">
    <CodeBlock showLineNumbers={false} wordWrap={true}>
      ```python
      nemo_curator.models.prompt_formatter.PromptFormatter.generate_inputs(
          prompt: str,
          video_inputs: torch.Tensor | numpy.ndarray | None = None,
          override_text_prompt: bool = False,
          fps: float = 2.0
      ) -> dict[str, typing.Any]
      ```
    </CodeBlock>
  </Anchor>

  <Indent>
    Generate inputs for video and text data based on prompt\_variant.

    **Parameters:**

    <ParamField path="prompt" type="str">
      Text prompt to be included with the input.
    </ParamField>

    <ParamField path="video_inputs" type="torch.Tensor | np.ndarray | None" default="None">
      Pre-processed video inputs (tensor or numpy array).
    </ParamField>

    <ParamField path="override_text_prompt" type="bool" default="False">
      Whether to regenerate the text prompt even if cached.
    </ParamField>

    <ParamField path="fps" type="float" default="2.0">
      Frames per second of the input video (used for Nemotron metadata).
    </ParamField>

    **Returns:** `dict[str, Any]`

    dict containing:

    * "prompt": The processed text prompt with chat template applied
    * "multi\_modal\_data": Dictionary containing processed "video" inputs
  </Indent>
</Indent>

<Anchor id="nemo_curator-models-prompt_formatter-VARIANT_MAPPING">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    nemo_curator.models.prompt_formatter.VARIANT_MAPPING: dict[str, str] = {'qwen2.5': 'Qwen/Qwen2.5-VL-7B-Instruct', 'qwen3': 'Qwen/Qwen3-VL-8B-Instruct',...
    ```
  </CodeBlock>
</Anchor>