> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo/gym/llms.txt.
> For full documentation content, see https://docs.nvidia.com/nemo/gym/llms-full.txt.

# nemo_gym.openai_utils

## Module Contents

### Classes

| Name                                                                                                                                    | Description                                                                                                           |
| --------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| [`NeMoGymAsyncOpenAI`](#nemo_gym-openai_utils-NeMoGymAsyncOpenAI)                                                                       | This is just a stub class that wraps around aiohttp                                                                   |
| [`NeMoGymChatCompletion`](#nemo_gym-openai_utils-NeMoGymChatCompletion)                                                                 | -                                                                                                                     |
| [`NeMoGymChatCompletionAssistantMessageForTrainingParam`](#nemo_gym-openai_utils-NeMoGymChatCompletionAssistantMessageForTrainingParam) | -                                                                                                                     |
| [`NeMoGymChatCompletionAssistantMessageParam`](#nemo_gym-openai_utils-NeMoGymChatCompletionAssistantMessageParam)                       | -                                                                                                                     |
| [`NeMoGymChatCompletionContentPartImageParam`](#nemo_gym-openai_utils-NeMoGymChatCompletionContentPartImageParam)                       | -                                                                                                                     |
| [`NeMoGymChatCompletionContentPartTextParam`](#nemo_gym-openai_utils-NeMoGymChatCompletionContentPartTextParam)                         | -                                                                                                                     |
| [`NeMoGymChatCompletionCreateParamsNonStreaming`](#nemo_gym-openai_utils-NeMoGymChatCompletionCreateParamsNonStreaming)                 | -                                                                                                                     |
| [`NeMoGymChatCompletionDeveloperMessageParam`](#nemo_gym-openai_utils-NeMoGymChatCompletionDeveloperMessageParam)                       | -                                                                                                                     |
| [`NeMoGymChatCompletionMessage`](#nemo_gym-openai_utils-NeMoGymChatCompletionMessage)                                                   | -                                                                                                                     |
| [`NeMoGymChatCompletionMessageForTraining`](#nemo_gym-openai_utils-NeMoGymChatCompletionMessageForTraining)                             | -                                                                                                                     |
| [`NeMoGymChatCompletionMessageToolCall`](#nemo_gym-openai_utils-NeMoGymChatCompletionMessageToolCall)                                   | -                                                                                                                     |
| [`NeMoGymChatCompletionMessageToolCallFunctionParam`](#nemo_gym-openai_utils-NeMoGymChatCompletionMessageToolCallFunctionParam)         | -                                                                                                                     |
| [`NeMoGymChatCompletionMessageToolCallParam`](#nemo_gym-openai_utils-NeMoGymChatCompletionMessageToolCallParam)                         | -                                                                                                                     |
| [`NeMoGymChatCompletionSystemMessageParam`](#nemo_gym-openai_utils-NeMoGymChatCompletionSystemMessageParam)                             | -                                                                                                                     |
| [`NeMoGymChatCompletionToolMessageParam`](#nemo_gym-openai_utils-NeMoGymChatCompletionToolMessageParam)                                 | -                                                                                                                     |
| [`NeMoGymChatCompletionToolParam`](#nemo_gym-openai_utils-NeMoGymChatCompletionToolParam)                                               | -                                                                                                                     |
| [`NeMoGymChatCompletionUserMessageParam`](#nemo_gym-openai_utils-NeMoGymChatCompletionUserMessageParam)                                 | -                                                                                                                     |
| [`NeMoGymChoice`](#nemo_gym-openai_utils-NeMoGymChoice)                                                                                 | -                                                                                                                     |
| [`NeMoGymEasyInputMessage`](#nemo_gym-openai_utils-NeMoGymEasyInputMessage)                                                             | -                                                                                                                     |
| [`NeMoGymEasyInputMessageForTraining`](#nemo_gym-openai_utils-NeMoGymEasyInputMessageForTraining)                                       | -                                                                                                                     |
| [`NeMoGymFunction`](#nemo_gym-openai_utils-NeMoGymFunction)                                                                             | -                                                                                                                     |
| [`NeMoGymFunctionCallOutput`](#nemo_gym-openai_utils-NeMoGymFunctionCallOutput)                                                         | We copy openai.types.responses.response\_input\_param.FunctionCallOutput, originally a TypedDict, as a BaseModel here |
| [`NeMoGymFunctionDefinition`](#nemo_gym-openai_utils-NeMoGymFunctionDefinition)                                                         | -                                                                                                                     |
| [`NeMoGymFunctionToolParam`](#nemo_gym-openai_utils-NeMoGymFunctionToolParam)                                                           | -                                                                                                                     |
| [`NeMoGymMessage`](#nemo_gym-openai_utils-NeMoGymMessage)                                                                               | -                                                                                                                     |
| [`NeMoGymMessageForTraining`](#nemo_gym-openai_utils-NeMoGymMessageForTraining)                                                         | -                                                                                                                     |
| [`NeMoGymResponse`](#nemo_gym-openai_utils-NeMoGymResponse)                                                                             | -                                                                                                                     |
| [`NeMoGymResponseCreateParamsNonStreaming`](#nemo_gym-openai_utils-NeMoGymResponseCreateParamsNonStreaming)                             | This class is a copy of openai.types.responses.response\_create\_params.ResponseCreateParamsNonStreaming              |
| [`NeMoGymResponseFunctionToolCall`](#nemo_gym-openai_utils-NeMoGymResponseFunctionToolCall)                                             | -                                                                                                                     |
| [`NeMoGymResponseFunctionToolCallForTraining`](#nemo_gym-openai_utils-NeMoGymResponseFunctionToolCallForTraining)                       | -                                                                                                                     |
| [`NeMoGymResponseInputText`](#nemo_gym-openai_utils-NeMoGymResponseInputText)                                                           | -                                                                                                                     |
| [`NeMoGymResponseInputTokensDetails`](#nemo_gym-openai_utils-NeMoGymResponseInputTokensDetails)                                         | -                                                                                                                     |
| [`NeMoGymResponseOutputMessage`](#nemo_gym-openai_utils-NeMoGymResponseOutputMessage)                                                   | -                                                                                                                     |
| [`NeMoGymResponseOutputMessageForTraining`](#nemo_gym-openai_utils-NeMoGymResponseOutputMessageForTraining)                             | -                                                                                                                     |
| [`NeMoGymResponseOutputRefusal`](#nemo_gym-openai_utils-NeMoGymResponseOutputRefusal)                                                   | -                                                                                                                     |
| [`NeMoGymResponseOutputText`](#nemo_gym-openai_utils-NeMoGymResponseOutputText)                                                         | -                                                                                                                     |
| [`NeMoGymResponseOutputTokensDetails`](#nemo_gym-openai_utils-NeMoGymResponseOutputTokensDetails)                                       | -                                                                                                                     |
| [`NeMoGymResponseReasoningItem`](#nemo_gym-openai_utils-NeMoGymResponseReasoningItem)                                                   | -                                                                                                                     |
| [`NeMoGymResponseReasoningItemForTraining`](#nemo_gym-openai_utils-NeMoGymResponseReasoningItemForTraining)                             | -                                                                                                                     |
| [`NeMoGymResponseUsage`](#nemo_gym-openai_utils-NeMoGymResponseUsage)                                                                   | -                                                                                                                     |
| [`NeMoGymSummary`](#nemo_gym-openai_utils-NeMoGymSummary)                                                                               | -                                                                                                                     |
| [`TokenIDLogProbMixin`](#nemo_gym-openai_utils-TokenIDLogProbMixin)                                                                     | -                                                                                                                     |
| [`TokenIDLogProbTypedDictMixin`](#nemo_gym-openai_utils-TokenIDLogProbTypedDictMixin)                                                   | -                                                                                                                     |

### Data

[`NeMoGymChatCompletionContentPartParam`](#nemo_gym-openai_utils-NeMoGymChatCompletionContentPartParam)

[`NeMoGymChatCompletionMessageParam`](#nemo_gym-openai_utils-NeMoGymChatCompletionMessageParam)

[`NeMoGymContent`](#nemo_gym-openai_utils-NeMoGymContent)

[`NeMoGymResponseInput`](#nemo_gym-openai_utils-NeMoGymResponseInput)

[`NeMoGymResponseInputItem`](#nemo_gym-openai_utils-NeMoGymResponseInputItem)

[`NeMoGymResponseOutputItem`](#nemo_gym-openai_utils-NeMoGymResponseOutputItem)

[`RATE_LIMIT_ERROR_CODES`](#nemo_gym-openai_utils-RATE_LIMIT_ERROR_CODES)

[`RESPONSES_TO_TRAIN`](#nemo_gym-openai_utils-RESPONSES_TO_TRAIN)

[`RETRY_ERROR_CODES`](#nemo_gym-openai_utils-RETRY_ERROR_CODES)

### API

<Anchor id="nemo_gym-openai_utils-NeMoGymAsyncOpenAI">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymAsyncOpenAI()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `BaseModel`

  This is just a stub class that wraps around aiohttp

  <ParamField path="api_key" type="str" />

  <ParamField path="base_url" type="str" />

  <ParamField path="default_headers" type="Dict[str, str]" />

  <ParamField path="internal" type="bool" />

  <Anchor id="nemo_gym-openai_utils-NeMoGymAsyncOpenAI-_raise_for_status">
    <CodeBlock showLineNumbers={false} wordWrap={true}>
      ```python
      nemo_gym.openai_utils.NeMoGymAsyncOpenAI._raise_for_status(
          response: nemo_gym.server_utils.ClientResponse,
          request_kwargs: typing.Dict[str, typing.Any]
      ) -> None
      ```
    </CodeBlock>
  </Anchor>

  <Indent>
    <Badge>
      async
    </Badge>
  </Indent>

  <Anchor id="nemo_gym-openai_utils-NeMoGymAsyncOpenAI-_request">
    <CodeBlock showLineNumbers={false} wordWrap={true}>
      ```python
      nemo_gym.openai_utils.NeMoGymAsyncOpenAI._request(
          request_kwargs: typing.Dict = {}
      ) -> nemo_gym.server_utils.ClientResponse
      ```
    </CodeBlock>
  </Anchor>

  <Indent>
    <Badge>
      async
    </Badge>
  </Indent>

  <Anchor id="nemo_gym-openai_utils-NeMoGymAsyncOpenAI-create_chat_completion">
    <CodeBlock showLineNumbers={false} wordWrap={true}>
      ```python
      nemo_gym.openai_utils.NeMoGymAsyncOpenAI.create_chat_completion(
          kwargs = {}
      )
      ```
    </CodeBlock>
  </Anchor>

  <Indent>
    <Badge>
      async
    </Badge>
  </Indent>

  <Anchor id="nemo_gym-openai_utils-NeMoGymAsyncOpenAI-create_models">
    <CodeBlock showLineNumbers={false} wordWrap={true}>
      ```python
      nemo_gym.openai_utils.NeMoGymAsyncOpenAI.create_models()
      ```
    </CodeBlock>
  </Anchor>

  <Indent>
    <Badge>
      async
    </Badge>
  </Indent>

  <Anchor id="nemo_gym-openai_utils-NeMoGymAsyncOpenAI-create_response">
    <CodeBlock showLineNumbers={false} wordWrap={true}>
      ```python
      nemo_gym.openai_utils.NeMoGymAsyncOpenAI.create_response(
          kwargs = {}
      )
      ```
    </CodeBlock>
  </Anchor>

  <Indent>
    <Badge>
      async
    </Badge>
  </Indent>

  <Anchor id="nemo_gym-openai_utils-NeMoGymAsyncOpenAI-create_tokenize">
    <CodeBlock showLineNumbers={false} wordWrap={true}>
      ```python
      nemo_gym.openai_utils.NeMoGymAsyncOpenAI.create_tokenize(
          kwargs = {}
      )
      ```
    </CodeBlock>
  </Anchor>

  <Indent>
    <Badge>
      async
    </Badge>
  </Indent>
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymChatCompletion">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymChatCompletion()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `ChatCompletion`

  <ParamField path="choices" type="List[NeMoGymChoice]" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymChatCompletionAssistantMessageForTrainingParam">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymChatCompletionAssistantMessageForTrainingParam
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `typing.TypedDict`
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymChatCompletionAssistantMessageParam">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymChatCompletionAssistantMessageParam()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `ChatCompletionAssistantMessageParam`

  <ParamField path="content" type="Union[str, List[ContentArrayOfContentPart], None]" />

  <ParamField path="tool_calls" type="Optional[List[NeMoGymChatCompletionMessageToolCallParam]] = None" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymChatCompletionContentPartImageParam">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymChatCompletionContentPartImageParam()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `ChatCompletionContentPartImageParam`
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymChatCompletionContentPartTextParam">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymChatCompletionContentPartTextParam()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `ChatCompletionContentPartTextParam`
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymChatCompletionCreateParamsNonStreaming">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymChatCompletionCreateParamsNonStreaming()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `BaseModel`

  <ParamField path="audio" type="Optional[ChatCompletionAudioParam] = None" />

  <ParamField path="frequency_penalty" type="Optional[float] = None" />

  <ParamField path="logit_bias" type="Optional[Dict[str, int]] = None" />

  <ParamField path="logprobs" type="Optional[bool] = None" />

  <ParamField path="max_completion_tokens" type="Optional[int] = None" />

  <ParamField path="max_tokens" type="Optional[int] = None" />

  <ParamField path="messages" type="List[NeMoGymChatCompletionMessageParam]" />

  <ParamField path="metadata" type="Optional[Metadata] = None" />

  <ParamField path="modalities" type="Optional[List[Literal['text', 'audio']]] = None" />

  <ParamField path="model" type="Optional[Union[str, ChatModel]] = None" />

  <ParamField path="n" type="Optional[int] = None" />

  <ParamField path="parallel_tool_calls" type="bool = True" />

  <ParamField path="prediction" type="Optional[ChatCompletionPredictionContentParam] = None" />

  <ParamField path="presence_penalty" type="Optional[float] = None" />

  <ParamField path="reasoning_effort" type="Optional[ReasoningEffort] = None" />

  <ParamField path="response_format" type="Optional[ResponseFormat] = None" />

  <ParamField path="seed" type="Optional[int] = None" />

  <ParamField path="service_tier" type="Optional[Literal['auto', 'default', 'flex', 'scale', 'priority']] = None" />

  <ParamField path="stop" type="Union[Optional[str], List[str], None] = None" />

  <ParamField path="store" type="Optional[bool] = None" />

  <ParamField path="stream" type="Optional[Literal[False]] = None" />

  <ParamField path="stream_options" type="Optional[ChatCompletionStreamOptionsParam] = None" />

  <ParamField path="temperature" type="Optional[float] = None" />

  <ParamField path="tool_choice" type="Optional[ChatCompletionToolChoiceOptionParam] = None" />

  <ParamField path="tools" type="Optional[List[NeMoGymChatCompletionToolParam]] = None" />

  <ParamField path="top_logprobs" type="Optional[int] = None" />

  <ParamField path="top_p" type="Optional[float] = None" />

  <ParamField path="user" type="Optional[str] = None" />

  <ParamField path="web_search_options" type="Optional[WebSearchOptions] = None" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymChatCompletionDeveloperMessageParam">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymChatCompletionDeveloperMessageParam()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `ChatCompletionDeveloperMessageParam`

  <ParamField path="content" type="Required[Union[str, List[NeMoGymChatCompletionContentPartTextParam]]]" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymChatCompletionMessage">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymChatCompletionMessage()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `ChatCompletionMessage`

  <ParamField path="tool_calls" type="Optional[List[NeMoGymChatCompletionMessageToolCall]] = None" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymChatCompletionMessageForTraining">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymChatCompletionMessageForTraining()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** [NeMoGymChatCompletionMessage](#nemo_gym-openai_utils-NeMoGymChatCompletionMessage), [TokenIDLogProbMixin](#nemo_gym-openai_utils-TokenIDLogProbMixin)
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymChatCompletionMessageToolCall">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymChatCompletionMessageToolCall()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `ChatCompletionMessageToolCall`

  <ParamField path="function" type="NeMoGymFunction" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymChatCompletionMessageToolCallFunctionParam">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymChatCompletionMessageToolCallFunctionParam
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `typing.TypedDict`

  <ParamField path="arguments" type="Required[str]" />

  <ParamField path="name" type="Required[str]" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymChatCompletionMessageToolCallParam">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymChatCompletionMessageToolCallParam()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `ChatCompletionMessageToolCallParam`

  <ParamField path="function" type="NeMoGymChatCompletionMessageToolCallFunctionParam" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymChatCompletionSystemMessageParam">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymChatCompletionSystemMessageParam()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `ChatCompletionSystemMessageParam`

  <ParamField path="content" type="Required[Union[str, List[NeMoGymChatCompletionContentPartTextParam]]]" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymChatCompletionToolMessageParam">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymChatCompletionToolMessageParam()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `ChatCompletionToolMessageParam`

  <ParamField path="content" type="Required[Union[str, List[NeMoGymChatCompletionContentPartTextParam]]]" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymChatCompletionToolParam">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymChatCompletionToolParam()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `ChatCompletionToolParam`

  <ParamField path="function" type="Required[NeMoGymFunctionDefinition]" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymChatCompletionUserMessageParam">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymChatCompletionUserMessageParam()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `ChatCompletionUserMessageParam`

  <ParamField path="content" type="Required[Union[str, List[NeMoGymChatCompletionContentPartParam]]]" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymChoice">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymChoice()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `Choice`

  <ParamField path="message" type="Union[NeMoGymChatCompletionMessage, NeMoGymChatCompletionMessageForTraining]" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymEasyInputMessage">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymEasyInputMessage()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `BaseModel`

  <ParamField path="content" type="Union[str, ResponseInputMessageContentListParam]" />

  <ParamField path="role" type="Literal['user', 'assistant', 'system', 'developer']" />

  <ParamField path="type" type="Literal['message'] = 'message'" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymEasyInputMessageForTraining">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymEasyInputMessageForTraining()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** [NeMoGymEasyInputMessage](#nemo_gym-openai_utils-NeMoGymEasyInputMessage), [TokenIDLogProbMixin](#nemo_gym-openai_utils-TokenIDLogProbMixin)
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymFunction">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymFunction()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `BaseModel`

  <ParamField path="arguments" type="str" />

  <ParamField path="name" type="str" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymFunctionCallOutput">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymFunctionCallOutput()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `BaseModel`

  We copy openai.types.responses.response\_input\_param.FunctionCallOutput, originally a TypedDict, as a BaseModel here
  so that we can use it in the NeMoGymResponseOutputItem below and be consistent with the other ResponseOutputItem types.

  <ParamField path="call_id" type="str" />

  <ParamField path="id" type="Optional[str] = None" />

  <ParamField path="output" type="str" />

  <ParamField path="status" type="Optional[Literal['in_progress', 'completed', 'incomplete']] = None" />

  <ParamField path="type" type="Literal['function_call_output'] = 'function_call_output'" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymFunctionDefinition">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymFunctionDefinition()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `FunctionDefinition`
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymFunctionToolParam">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymFunctionToolParam()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `FunctionToolParam`
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymMessage">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymMessage()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `BaseModel`

  <ParamField path="content" type="ResponseInputMessageContentListParam" />

  <ParamField path="role" type="Literal['user', 'system', 'developer']" />

  <ParamField path="status" type="Literal['in_progress', 'completed', 'incomplete'] = 'completed'" />

  <ParamField path="type" type="Literal['message'] = 'message'" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymMessageForTraining">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymMessageForTraining()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** [NeMoGymMessage](#nemo_gym-openai_utils-NeMoGymMessage), [TokenIDLogProbMixin](#nemo_gym-openai_utils-TokenIDLogProbMixin)
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymResponse">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymResponse()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `Response`

  <ParamField path="output" type="List[NeMoGymResponseOutputItem]" />

  <ParamField path="usage" type="Optional[NeMoGymResponseUsage] = None" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymResponseCreateParamsNonStreaming">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymResponseCreateParamsNonStreaming()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `BaseModel`

  This class is a copy of openai.types.responses.response\_create\_params.ResponseCreateParamsNonStreaming
  We make a copy of it here since ResponseCreateParamsNonStreaming is a TypedDict with no strict validation.
  We need to do server side validation here.

  <ParamField path="background" type="Optional[bool] = None" />

  <ParamField path="include" type="Optional[List[ResponseIncludable]] = None" />

  <ParamField path="input" type="Union[str, NeMoGymResponseInput]" />

  <ParamField path="instructions" type="Optional[str] = None" />

  <ParamField path="max_output_tokens" type="Optional[int] = None" />

  <ParamField path="max_tool_calls" type="Optional[int] = None" />

  <ParamField path="metadata" type="Optional[Metadata] = None" />

  <ParamField path="model" type="Optional[ResponsesModel] = None" />

  <ParamField path="model_config" type="= ConfigDict(extra='forbid')" />

  <ParamField path="parallel_tool_calls" type="bool = True" />

  <ParamField path="previous_response_id" type="Optional[str] = None" />

  <ParamField path="prompt" type="Optional[ResponsePromptParam] = None" />

  <ParamField path="reasoning" type="Optional[Reasoning] = None" />

  <ParamField path="service_tier" type="Optional[Literal['auto', 'default', 'flex', 'scale', 'priority']] = None" />

  <ParamField path="store" type="Optional[bool] = None" />

  <ParamField path="stream" type="Optional[Literal[False]] = None" />

  <ParamField path="temperature" type="Optional[float] = None" />

  <ParamField path="text" type="Optional[ResponseTextConfigParam] = None" />

  <ParamField path="tool_choice" type="ToolChoice = 'auto'" />

  <ParamField path="tools" type="List[ToolParam] = Field(default_factory=list)" />

  <ParamField path="top_logprobs" type="Optional[int] = None" />

  <ParamField path="top_p" type="Optional[float] = None" />

  <ParamField path="truncation" type="Optional[Literal['auto', 'disabled']] = None" />

  <ParamField path="user" type="Optional[str] = None" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymResponseFunctionToolCall">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymResponseFunctionToolCall()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `BaseModel`

  <ParamField path="arguments" type="str" />

  <ParamField path="call_id" type="str" />

  <ParamField path="id" type="Optional[str] = None" />

  <ParamField path="name" type="str" />

  <ParamField path="status" type="Optional[Literal['in_progress', 'completed', 'incomplete']] = None" />

  <ParamField path="type" type="Literal['function_call'] = 'function_call'" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymResponseFunctionToolCallForTraining">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymResponseFunctionToolCallForTraining()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** [NeMoGymResponseFunctionToolCall](#nemo_gym-openai_utils-NeMoGymResponseFunctionToolCall), [TokenIDLogProbMixin](#nemo_gym-openai_utils-TokenIDLogProbMixin)
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymResponseInputText">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymResponseInputText()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `ResponseInputTextParam`
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymResponseInputTokensDetails">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymResponseInputTokensDetails()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `ResponseInputTokensDetails`
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymResponseOutputMessage">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymResponseOutputMessage()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `BaseModel`

  <ParamField path="content" type="List[NeMoGymContent]" />

  <ParamField path="id" type="str" />

  <ParamField path="role" type="Literal['assistant'] = 'assistant'" />

  <ParamField path="status" type="Literal['in_progress', 'completed', 'incomplete'] = 'completed'" />

  <ParamField path="type" type="Literal['message'] = 'message'" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymResponseOutputMessageForTraining">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymResponseOutputMessageForTraining()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** [NeMoGymResponseOutputMessage](#nemo_gym-openai_utils-NeMoGymResponseOutputMessage), [TokenIDLogProbMixin](#nemo_gym-openai_utils-TokenIDLogProbMixin)
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymResponseOutputRefusal">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymResponseOutputRefusal()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `BaseModel`

  <ParamField path="refusal" type="str" />

  <ParamField path="type" type="Literal['refusal'] = 'refusal'" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymResponseOutputText">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymResponseOutputText()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `BaseModel`

  <ParamField path="annotations" type="List[Annotation]" />

  <ParamField path="logprobs" type="Optional[List[Logprob]] = None" />

  <ParamField path="text" type="str" />

  <ParamField path="type" type="Literal['output_text'] = 'output_text'" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymResponseOutputTokensDetails">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymResponseOutputTokensDetails()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `ResponseOutputTokensDetails`
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymResponseReasoningItem">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymResponseReasoningItem()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `BaseModel`

  <ParamField path="encrypted_content" type="Optional[str] = None" />

  <ParamField path="id" type="str" />

  <ParamField path="summary" type="List[NeMoGymSummary]" />

  <ParamField path="type" type="Literal['reasoning'] = 'reasoning'" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymResponseReasoningItemForTraining">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymResponseReasoningItemForTraining()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** [NeMoGymResponseReasoningItem](#nemo_gym-openai_utils-NeMoGymResponseReasoningItem), [TokenIDLogProbMixin](#nemo_gym-openai_utils-TokenIDLogProbMixin)
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymResponseUsage">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymResponseUsage()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `ResponseUsage`

  <ParamField path="input_tokens_details" type="NeMoGymResponseInputTokensDetails" />

  <ParamField path="output_tokens_details" type="NeMoGymResponseOutputTokensDetails" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymSummary">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.NeMoGymSummary()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `Summary`
</Indent>

<Anchor id="nemo_gym-openai_utils-TokenIDLogProbMixin">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.TokenIDLogProbMixin()
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `BaseModel`

  <ParamField path="generation_log_probs" type="List[float]" />

  <ParamField path="generation_token_ids" type="List[int]" />

  <ParamField path="prompt_token_ids" type="List[int]" />
</Indent>

<Anchor id="nemo_gym-openai_utils-TokenIDLogProbTypedDictMixin">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    class nemo_gym.openai_utils.TokenIDLogProbTypedDictMixin
    ```
  </CodeBlock>
</Anchor>

<Indent>
  **Bases:** `typing.TypedDict`

  <ParamField path="generation_log_probs" type="List[float]" />

  <ParamField path="generation_token_ids" type="List[int]" />

  <ParamField path="prompt_token_ids" type="List[int]" />
</Indent>

<Anchor id="nemo_gym-openai_utils-NeMoGymChatCompletionContentPartParam">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    nemo_gym.openai_utils.NeMoGymChatCompletionContentPartParam = Union[NeMoGymChatCompletionContentPartTextParam, NeMoGymChatCompletionContentPar...
    ```
  </CodeBlock>
</Anchor>

<Anchor id="nemo_gym-openai_utils-NeMoGymChatCompletionMessageParam">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    nemo_gym.openai_utils.NeMoGymChatCompletionMessageParam: TypeAlias = Union[NeMoGymChatCompletionDeveloperMessageParam, NeMoGymChatCompletionSystemMes...
    ```
  </CodeBlock>
</Anchor>

<Anchor id="nemo_gym-openai_utils-NeMoGymContent">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    nemo_gym.openai_utils.NeMoGymContent: TypeAlias = Union[NeMoGymResponseOutputText, NeMoGymResponseOutputRefusal]
    ```
  </CodeBlock>
</Anchor>

<Anchor id="nemo_gym-openai_utils-NeMoGymResponseInput">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    nemo_gym.openai_utils.NeMoGymResponseInput: TypeAlias = List[NeMoGymResponseInputItem]
    ```
  </CodeBlock>
</Anchor>

<Anchor id="nemo_gym-openai_utils-NeMoGymResponseInputItem">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    nemo_gym.openai_utils.NeMoGymResponseInputItem = Union[NeMoGymEasyInputMessage, NeMoGymMessage, NeMoGymResponseOutputMessage, NeM...
    ```
  </CodeBlock>
</Anchor>

<Anchor id="nemo_gym-openai_utils-NeMoGymResponseOutputItem">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    nemo_gym.openai_utils.NeMoGymResponseOutputItem = NeMoGymResponseInputItem
    ```
  </CodeBlock>
</Anchor>

<Anchor id="nemo_gym-openai_utils-RATE_LIMIT_ERROR_CODES">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    nemo_gym.openai_utils.RATE_LIMIT_ERROR_CODES = [429, 502, 503, 504, 520]
    ```
  </CodeBlock>
</Anchor>

<Anchor id="nemo_gym-openai_utils-RESPONSES_TO_TRAIN">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    nemo_gym.openai_utils.RESPONSES_TO_TRAIN = {NeMoGymEasyInputMessage: NeMoGymEasyInputMessageForTraining, NeMoGymMessage: Ne...
    ```
  </CodeBlock>
</Anchor>

<Anchor id="nemo_gym-openai_utils-RETRY_ERROR_CODES">
  <CodeBlock showLineNumbers={false} wordWrap={true}>
    ```python
    nemo_gym.openai_utils.RETRY_ERROR_CODES = RATE_LIMIT_ERROR_CODES + [500]
    ```
  </CodeBlock>
</Anchor>