NaN token counts when using streamText with OpenAI models

Issue

I am using streamText with the OpenAI provider for the AI SDK and OpenAI models. I use createOpenAI to create the provider instance. When I try to get the token counts, I get NaN values.

Background

OpenAI introduced streamOptions parameters to enable token counts in the stream. However, this was a breaking change for OpenAI-compatible providers, and we therefore made it opt-in.

Solution

When you use createOpenAI, you can enable a strict compatibility model:

import { createOpenAI } from '@ai-sdk/openai';
const openai = createOpenAI({
compatibility: 'strict',
});

This will enable the token counts in the stream. When you use the default openai provider instance, the setting is enabled by default.