diff --git a/server/utils/AiProviders/openAi/index.js b/server/utils/AiProviders/openAi/index.js index 001c27ea65f..5ea984fe38c 100644 --- a/server/utils/AiProviders/openAi/index.js +++ b/server/utils/AiProviders/openAi/index.js @@ -168,11 +168,11 @@ class OpenAiLLM { return { textResponse: result.output.output_text, metrics: { - prompt_tokens: usage.prompt_tokens || 0, - completion_tokens: usage.completion_tokens || 0, + prompt_tokens: usage.input_tokens || 0, + completion_tokens: usage.output_tokens || 0, total_tokens: usage.total_tokens || 0, - outputTps: usage.completion_tokens - ? usage.completion_tokens / result.duration + outputTps: usage.output_tokens + ? usage.output_tokens / result.duration : 0, duration: result.duration, }, @@ -224,6 +224,7 @@ class OpenAiLLM { if (token) { fullText += token; if (!hasUsageMetrics) usage.completion_tokens++; + writeResponseChunk(response, { uuid, sources: [], @@ -237,7 +238,12 @@ class OpenAiLLM { const { response: res } = chunk; if (res.hasOwnProperty("usage") && !!res.usage) { hasUsageMetrics = true; - usage = { ...usage, ...res.usage }; + usage = { + ...usage, + prompt_tokens: res.usage?.input_tokens || 0, + completion_tokens: res.usage?.output_tokens || 0, + total_tokens: res.usage?.total_tokens || 0, + }; } writeResponseChunk(response, {