9router/open-sse/translator/helpers/usageHelper.js

15 lines
844 B
JavaScript
Raw Normal View History

// Build OpenAI usage object. Caller computes prompt/completion/total (provider math).
// Optional details added only when > 0 (matches existing claude/gemini/codex behavior).
export function buildUsage({ promptTokens, completionTokens, totalTokens, cachedTokens = 0, cacheCreationTokens = 0, reasoningTokens = 0 }) {
const usage = { prompt_tokens: promptTokens, completion_tokens: completionTokens, total_tokens: totalTokens };
if (cachedTokens > 0 || cacheCreationTokens > 0) {
usage.prompt_tokens_details = {};
if (cachedTokens > 0) usage.prompt_tokens_details.cached_tokens = cachedTokens;
if (cacheCreationTokens > 0) usage.prompt_tokens_details.cache_creation_tokens = cacheCreationTokens;
}
if (reasoningTokens > 0) {
usage.completion_tokens_details = { reasoning_tokens: reasoningTokens };
}
return usage;
}