13 lines
669 B
TypeScript
13 lines
669 B
TypeScript
import type {ResponseMetadata} from "./conversation-types";
|
|
|
|
export function responseMetadata(providerId: string, model: string, startedAt: number, outputTokens: number | undefined | null): ResponseMetadata {
|
|
const durationMs = Math.max(1, Math.round(performance.now() - startedAt));
|
|
const normalizedTokens = typeof outputTokens === "number" && Number.isFinite(outputTokens) && outputTokens >= 0
|
|
? Math.round(outputTokens)
|
|
: null;
|
|
const tokensPerSecond = normalizedTokens === null
|
|
? null
|
|
: Math.round((normalizedTokens / (durationMs / 1000)) * 10) / 10;
|
|
return {providerId, model, durationMs, outputTokens: normalizedTokens, tokensPerSecond};
|
|
}
|