mirror of
https://github.com/open-webui/open-webui
synced 2025-06-26 18:26:48 +00:00
feat: add OpenAI generation stats
This commit is contained in:
@@ -685,6 +685,12 @@
|
||||
{
|
||||
model: model.id,
|
||||
stream: true,
|
||||
stream_options:
|
||||
model.info?.meta?.capabilities?.usage ?? false
|
||||
? {
|
||||
include_usage: true
|
||||
}
|
||||
: undefined,
|
||||
messages: [
|
||||
$settings.system || (responseMessage?.userContext ?? null)
|
||||
? {
|
||||
@@ -753,9 +759,10 @@
|
||||
|
||||
if (res && res.ok && res.body) {
|
||||
const textStream = await createOpenAITextStream(res.body, $settings.splitLargeChunks);
|
||||
let lastUsage = null;
|
||||
|
||||
for await (const update of textStream) {
|
||||
const { value, done, citations, error } = update;
|
||||
const { value, done, citations, error, usage } = update;
|
||||
if (error) {
|
||||
await handleOpenAIError(error, null, model, responseMessage);
|
||||
break;
|
||||
@@ -771,6 +778,10 @@
|
||||
break;
|
||||
}
|
||||
|
||||
if (usage) {
|
||||
lastUsage = usage;
|
||||
}
|
||||
|
||||
if (citations) {
|
||||
responseMessage.citations = citations;
|
||||
continue;
|
||||
@@ -804,6 +815,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
if (lastUsage) {
|
||||
responseMessage.info = { ...lastUsage, openai: true };
|
||||
}
|
||||
|
||||
if ($chatId == _chatId) {
|
||||
if ($settings.saveChatHistory ?? true) {
|
||||
chat = await updateChatById(localStorage.token, _chatId, {
|
||||
|
||||
@@ -106,8 +106,13 @@
|
||||
renderLatex();
|
||||
|
||||
if (message.info) {
|
||||
tooltipInstance = tippy(`#info-${message.id}`, {
|
||||
content: `<span class="text-xs" id="tooltip-${message.id}">response_token/s: ${
|
||||
let tooltipContent = '';
|
||||
if (message.info.openai) {
|
||||
tooltipContent = `prompt_tokens: ${message.info.prompt_tokens ?? 'N/A'}<br/>
|
||||
completion_tokens: ${message.info.completion_tokens ?? 'N/A'}<br/>
|
||||
total_tokens: ${message.info.total_tokens ?? 'N/A'}`;
|
||||
} else {
|
||||
tooltipContent = `response_token/s: ${
|
||||
`${
|
||||
Math.round(
|
||||
((message.info.eval_count ?? 0) / (message.info.eval_duration / 1000000000)) * 100
|
||||
@@ -137,9 +142,10 @@
|
||||
eval_duration: ${
|
||||
Math.round(((message.info.eval_duration ?? 0) / 1000000) * 100) / 100 ?? 'N/A'
|
||||
}ms<br/>
|
||||
approximate_total: ${approximateToHumanReadable(
|
||||
message.info.total_duration
|
||||
)}</span>`,
|
||||
approximate_total: ${approximateToHumanReadable(message.info.total_duration)}`;
|
||||
}
|
||||
tooltipInstance = tippy(`#info-${message.id}`, {
|
||||
content: `<span class="text-xs" id="tooltip-${message.id}">${tooltipContent}</span>`,
|
||||
allowHTML: true
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user