Selaa lähdekoodia

feat: human readable Generation Info total

Add new function to convert nanoseconds into `approximate_total:` for *Generation Info* tooltip.
Self Denial 1 vuosi sitten
vanhempi
commit
23b674ddda

+ 5 - 1
src/lib/components/chat/Messages/ResponseMessage.svelte

@@ -18,6 +18,7 @@
 	import { synthesizeOpenAISpeech } from '$lib/apis/openai';
 	import { imageGenerations } from '$lib/apis/images';
 	import {
+		approximateToHumanReadable,
 		extractSentences,
 		revertSanitizedResponseContent,
 		sanitizeResponseContent
@@ -122,7 +123,10 @@
                     eval_count: ${message.info.eval_count ?? 'N/A'}<br/>
                     eval_duration: ${
 											Math.round(((message.info.eval_duration ?? 0) / 1000000) * 100) / 100 ?? 'N/A'
-										}ms</span>`,
+										}ms<br/>
+                    approximate_total: ${
+											approximateToHumanReadable(message.info.total_duration)
+										}</span>`,
 				allowHTML: true
 			});
 		}

+ 22 - 0
src/lib/utils/index.ts

@@ -467,3 +467,25 @@ export const blobToFile = (blob, fileName) => {
 	const file = new File([blob], fileName, { type: blob.type });
 	return file;
 };
+
+export const approximateToHumanReadable = (nanoseconds: number) => {
+	const seconds = Math.floor((nanoseconds / 1e+9) % 60);
+	const minutes = Math.floor((nanoseconds / 6e+10) % 60);
+	const hours = Math.floor((nanoseconds / 3.6e+12) % 24);
+
+	const results: string[] = [];
+
+	if (seconds >= 0) {
+		results.push(`${seconds}s`);
+	}
+
+	if (minutes > 0) {
+		results.push(`${minutes}m`);
+	}
+
+	if (hours > 0) {
+		results.push(`${hours}h`);
+	}
+
+	return results.reverse().join(' ');
+};