@ai-sdk/groq
Version:
The **[Groq provider](https://ai-sdk.dev/providers/ai-sdk-providers/groq)** for the [AI SDK](https://ai-sdk.dev/docs) contains language model support for the Groq chat and completion APIs, transcription support, and browser search tool.
56 lines (52 loc) • 1.51 kB
text/typescript
import type { LanguageModelV4Usage } from '@ai-sdk/provider';
import { createNullLanguageModelUsage } from '@ai-sdk/provider-utils';
export function convertGroqUsage(
usage:
| {
prompt_tokens?: number | null | undefined;
completion_tokens?: number | null | undefined;
prompt_tokens_details?:
| {
cached_tokens?: number | null | undefined;
}
| null
| undefined;
completion_tokens_details?:
| {
reasoning_tokens?: number | null | undefined;
}
| null
| undefined;
}
| undefined
| null,
): LanguageModelV4Usage {
if (usage == null) {
return createNullLanguageModelUsage();
}
const promptTokens = usage.prompt_tokens ?? 0;
const cacheReadTokens =
usage.prompt_tokens_details?.cached_tokens ?? undefined;
const completionTokens = usage.completion_tokens ?? 0;
const reasoningTokens =
usage.completion_tokens_details?.reasoning_tokens ?? undefined;
const textTokens =
reasoningTokens != null
? completionTokens - reasoningTokens
: completionTokens;
return {
inputTokens: {
total: promptTokens,
noCache:
cacheReadTokens != null ? promptTokens - cacheReadTokens : promptTokens,
cacheRead: cacheReadTokens,
cacheWrite: undefined,
},
outputTokens: {
total: completionTokens,
text: textTokens,
reasoning: reasoningTokens,
},
raw: usage,
};
}