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

# 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

```python
class nemo_gym.openai_utils.NeMoGymAsyncOpenAI()
```

**Bases:** `BaseModel`

This is just a stub class that wraps around aiohttp

```python
nemo_gym.openai_utils.NeMoGymAsyncOpenAI._raise_for_status(
    response: nemo_gym.server_utils.ClientResponse,
    request_kwargs: typing.Dict[str, typing.Any]
) -> None
```

async

```python
nemo_gym.openai_utils.NeMoGymAsyncOpenAI._request(
    request_kwargs: typing.Dict = {}
) -> nemo_gym.server_utils.ClientResponse
```

async

```python
nemo_gym.openai_utils.NeMoGymAsyncOpenAI._request_with_retry(
    request_kwargs: typing.Dict = {}
) -> nemo_gym.server_utils.ClientResponse
```

async

```python
nemo_gym.openai_utils.NeMoGymAsyncOpenAI.create_chat_completion(
    kwargs = {}
)
```

async

```python
nemo_gym.openai_utils.NeMoGymAsyncOpenAI.create_models()
```

async

```python
nemo_gym.openai_utils.NeMoGymAsyncOpenAI.create_response(
    kwargs = {}
)
```

async

```python
nemo_gym.openai_utils.NeMoGymAsyncOpenAI.create_tokenize(
    kwargs = {}
)
```

async

```python
class nemo_gym.openai_utils.NeMoGymChatCompletion()
```

**Bases:** `ChatCompletion`

```python
class nemo_gym.openai_utils.NeMoGymChatCompletionAssistantMessageForTrainingParam
```

**Bases:** `typing.TypedDict`

```python
class nemo_gym.openai_utils.NeMoGymChatCompletionAssistantMessageParam()
```

**Bases:** `ChatCompletionAssistantMessageParam`

```python
class nemo_gym.openai_utils.NeMoGymChatCompletionContentPartImageParam()
```

**Bases:** `ChatCompletionContentPartImageParam`

```python
class nemo_gym.openai_utils.NeMoGymChatCompletionContentPartTextParam()
```

**Bases:** `ChatCompletionContentPartTextParam`

```python
class nemo_gym.openai_utils.NeMoGymChatCompletionCreateParamsNonStreaming()
```

**Bases:** `BaseModel`

```python
class nemo_gym.openai_utils.NeMoGymChatCompletionDeveloperMessageParam()
```

**Bases:** `ChatCompletionDeveloperMessageParam`

```python
class nemo_gym.openai_utils.NeMoGymChatCompletionMessage()
```

**Bases:** `ChatCompletionMessage`

```python
class nemo_gym.openai_utils.NeMoGymChatCompletionMessageForTraining()
```

**Bases:** [NeMoGymChatCompletionMessage](#nemo_gym-openai_utils-NeMoGymChatCompletionMessage), [TokenIDLogProbMixin](#nemo_gym-openai_utils-TokenIDLogProbMixin)

```python
class nemo_gym.openai_utils.NeMoGymChatCompletionMessageToolCall()
```

**Bases:** `ChatCompletionMessageToolCall`

```python
class nemo_gym.openai_utils.NeMoGymChatCompletionMessageToolCallFunctionParam
```

**Bases:** `typing.TypedDict`

```python
class nemo_gym.openai_utils.NeMoGymChatCompletionMessageToolCallParam()
```

**Bases:** `ChatCompletionMessageToolCallParam`

```python
class nemo_gym.openai_utils.NeMoGymChatCompletionSystemMessageParam()
```

**Bases:** `ChatCompletionSystemMessageParam`

```python
class nemo_gym.openai_utils.NeMoGymChatCompletionToolMessageParam()
```

**Bases:** `ChatCompletionToolMessageParam`

```python
class nemo_gym.openai_utils.NeMoGymChatCompletionToolParam()
```

**Bases:** `ChatCompletionToolParam`

```python
class nemo_gym.openai_utils.NeMoGymChatCompletionUserMessageParam()
```

**Bases:** `ChatCompletionUserMessageParam`

```python
class nemo_gym.openai_utils.NeMoGymChoice()
```

**Bases:** `Choice`

```python
class nemo_gym.openai_utils.NeMoGymEasyInputMessage()
```

**Bases:** `BaseModel`

```python
class nemo_gym.openai_utils.NeMoGymEasyInputMessageForTraining()
```

**Bases:** [NeMoGymEasyInputMessage](#nemo_gym-openai_utils-NeMoGymEasyInputMessage), [TokenIDLogProbMixin](#nemo_gym-openai_utils-TokenIDLogProbMixin)

```python
class nemo_gym.openai_utils.NeMoGymFunction()
```

**Bases:** `BaseModel`

```python
class nemo_gym.openai_utils.NeMoGymFunctionCallOutput()
```

**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.

```python
class nemo_gym.openai_utils.NeMoGymFunctionDefinition()
```

**Bases:** `FunctionDefinition`

```python
class nemo_gym.openai_utils.NeMoGymFunctionToolParam()
```

**Bases:** `FunctionToolParam`

```python
class nemo_gym.openai_utils.NeMoGymMessage()
```

**Bases:** `BaseModel`

```python
class nemo_gym.openai_utils.NeMoGymMessageForTraining()
```

**Bases:** [NeMoGymMessage](#nemo_gym-openai_utils-NeMoGymMessage), [TokenIDLogProbMixin](#nemo_gym-openai_utils-TokenIDLogProbMixin)

```python
class nemo_gym.openai_utils.NeMoGymResponse()
```

**Bases:** `Response`

```python
class nemo_gym.openai_utils.NeMoGymResponseCreateParamsNonStreaming()
```

**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.

```python
class nemo_gym.openai_utils.NeMoGymResponseFunctionToolCall()
```

**Bases:** `BaseModel`

```python
class nemo_gym.openai_utils.NeMoGymResponseFunctionToolCallForTraining()
```

**Bases:** [NeMoGymResponseFunctionToolCall](#nemo_gym-openai_utils-NeMoGymResponseFunctionToolCall), [TokenIDLogProbMixin](#nemo_gym-openai_utils-TokenIDLogProbMixin)

```python
class nemo_gym.openai_utils.NeMoGymResponseInputText()
```

**Bases:** `ResponseInputTextParam`

```python
class nemo_gym.openai_utils.NeMoGymResponseInputTokensDetails()
```

**Bases:** `ResponseInputTokensDetails`

```python
class nemo_gym.openai_utils.NeMoGymResponseOutputMessage()
```

**Bases:** `BaseModel`

```python
class nemo_gym.openai_utils.NeMoGymResponseOutputMessageForTraining()
```

**Bases:** [NeMoGymResponseOutputMessage](#nemo_gym-openai_utils-NeMoGymResponseOutputMessage), [TokenIDLogProbMixin](#nemo_gym-openai_utils-TokenIDLogProbMixin)

```python
class nemo_gym.openai_utils.NeMoGymResponseOutputRefusal()
```

**Bases:** `BaseModel`

```python
class nemo_gym.openai_utils.NeMoGymResponseOutputText()
```

**Bases:** `BaseModel`

```python
class nemo_gym.openai_utils.NeMoGymResponseOutputTokensDetails()
```

**Bases:** `ResponseOutputTokensDetails`

```python
class nemo_gym.openai_utils.NeMoGymResponseReasoningItem()
```

**Bases:** `BaseModel`

```python
class nemo_gym.openai_utils.NeMoGymResponseReasoningItemForTraining()
```

**Bases:** [NeMoGymResponseReasoningItem](#nemo_gym-openai_utils-NeMoGymResponseReasoningItem), [TokenIDLogProbMixin](#nemo_gym-openai_utils-TokenIDLogProbMixin)

```python
class nemo_gym.openai_utils.NeMoGymResponseUsage()
```

**Bases:** `ResponseUsage`

```python
class nemo_gym.openai_utils.NeMoGymSummary()
```

**Bases:** `Summary`

```python
class nemo_gym.openai_utils.TokenIDLogProbMixin()
```

**Bases:** `BaseModel`

```python
class nemo_gym.openai_utils.TokenIDLogProbTypedDictMixin
```

**Bases:** `typing.TypedDict`

```python
nemo_gym.openai_utils.NeMoGymChatCompletionContentPartParam = Union[NeMoGymChatCompletionContentPartTextParam, NeMoGymChatCompletionContentPar...
```

```python
nemo_gym.openai_utils.NeMoGymChatCompletionMessageParam: TypeAlias = Union[NeMoGymChatCompletionDeveloperMessageParam, NeMoGymChatCompletionSystemMes...
```

```python
nemo_gym.openai_utils.NeMoGymContent: TypeAlias = Union[NeMoGymResponseOutputText, NeMoGymResponseOutputRefusal]
```

```python
nemo_gym.openai_utils.NeMoGymResponseInput: TypeAlias = List[NeMoGymResponseInputItem]
```

```python
nemo_gym.openai_utils.NeMoGymResponseInputItem = Union[NeMoGymEasyInputMessage, NeMoGymMessage, NeMoGymResponseOutputMessage, NeM...
```

```python
nemo_gym.openai_utils.NeMoGymResponseOutputItem = NeMoGymResponseInputItem
```

```python
nemo_gym.openai_utils.RATE_LIMIT_ERROR_CODES = [429, 502, 503, 504, 520]
```

```python
nemo_gym.openai_utils.RESPONSES_TO_TRAIN = {NeMoGymEasyInputMessage: NeMoGymEasyInputMessageForTraining, NeMoGymMessage: Ne...
```

```python
nemo_gym.openai_utils.RETRY_ERROR_CODES = RATE_LIMIT_ERROR_CODES + [500]
```