Fix message stats for combined messages
This commit is contained in:
parent
1bbf328caf
commit
ca11511dd4
|
|
@ -8,6 +8,7 @@
|
|||
import type {
|
||||
ApiChatCompletionToolCall,
|
||||
ChatMessageSiblingInfo,
|
||||
ChatMessageTimings,
|
||||
DatabaseMessage
|
||||
} from '$lib/types';
|
||||
|
||||
|
|
@ -104,6 +105,51 @@
|
|||
};
|
||||
};
|
||||
|
||||
const sumTimings = (assistantIds: string[]): ChatMessageTimings | undefined => {
|
||||
if (assistantIds.length <= 1) return undefined;
|
||||
|
||||
let predicted_n_sum = 0;
|
||||
let predicted_ms_sum = 0;
|
||||
let prompt_n_sum = 0;
|
||||
let prompt_ms_sum = 0;
|
||||
let cache_n_sum = 0;
|
||||
|
||||
let hasPredicted = false;
|
||||
let hasPrompt = false;
|
||||
let hasCache = false;
|
||||
|
||||
for (const id of assistantIds) {
|
||||
const m = filteredMessages.find((x) => x.id === id);
|
||||
const t = m?.timings;
|
||||
if (!t) continue;
|
||||
|
||||
if (typeof t.predicted_n === 'number' && typeof t.predicted_ms === 'number') {
|
||||
predicted_n_sum += t.predicted_n;
|
||||
predicted_ms_sum += t.predicted_ms;
|
||||
hasPredicted = true;
|
||||
}
|
||||
|
||||
if (typeof t.prompt_n === 'number' && typeof t.prompt_ms === 'number') {
|
||||
prompt_n_sum += t.prompt_n;
|
||||
prompt_ms_sum += t.prompt_ms;
|
||||
hasPrompt = true;
|
||||
}
|
||||
|
||||
if (typeof t.cache_n === 'number') {
|
||||
cache_n_sum += t.cache_n;
|
||||
hasCache = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!hasPredicted && !hasPrompt && !hasCache) return undefined;
|
||||
|
||||
return {
|
||||
...(hasPredicted ? { predicted_n: predicted_n_sum, predicted_ms: predicted_ms_sum } : {}),
|
||||
...(hasPrompt ? { prompt_n: prompt_n_sum, prompt_ms: prompt_ms_sum } : {}),
|
||||
...(hasCache ? { cache_n: cache_n_sum } : {})
|
||||
};
|
||||
};
|
||||
|
||||
for (const msg of filteredMessages) {
|
||||
if (visited.has(msg.id)) continue;
|
||||
// Don't render tools directly, but keep them for collection; skip marking visited here
|
||||
|
|
@ -198,11 +244,14 @@
|
|||
totalSiblings: 1
|
||||
};
|
||||
|
||||
const aggregatedTimings = sumTimings(toolParentIds);
|
||||
|
||||
const mergedAssistant: AssistantDisplayMessage = {
|
||||
...(currentAssistant ?? msg),
|
||||
content: currentAssistant?.content ?? '',
|
||||
thinking: thinkingParts.filter(Boolean).join('\n\n'),
|
||||
toolCalls: toolCallsCombined.length ? JSON.stringify(toolCallsCombined) : '',
|
||||
...(aggregatedTimings ? { timings: aggregatedTimings } : {}),
|
||||
_toolParentIds: toolParentIds,
|
||||
_segments: segments,
|
||||
_actionTargetId: msg.id,
|
||||
|
|
|
|||
Loading…
Reference in New Issue