diff --git a/src/lib/components/chat/Messages/ResponseMessage.svelte b/src/lib/components/chat/Messages/ResponseMessage.svelte index 2d339c6f36..dac8c50c2e 100644 --- a/src/lib/components/chat/Messages/ResponseMessage.svelte +++ b/src/lib/components/chat/Messages/ResponseMessage.svelte @@ -189,6 +189,24 @@ let showRateComment = false; + const formatUsage = (usage) => + JSON.stringify(usage, null, 2) + .replace(/"([^(")"]+)":/g, '$1:') + .slice(1, -1) + .split('\n') + .map((line) => line.slice(2)) + .map((line) => (line.endsWith(',') ? line.slice(0, -1) : line)) + .join('\n'); + + const copyUsageToClipboard = async (usage) => { + const res = await _copyToClipboard(formatUsage(usage)); + if (res) { + toast.success($i18n.t('Copied to clipboard')); + } else { + toast.error($i18n.t('Failed to copy')); + } + }; + const copyToClipboard = async (text) => { text = removeAllDetails(text); @@ -1103,25 +1121,17 @@ {#if message.usage} ${sanitizeResponseContent( - JSON.stringify(message.usage, null, 2) - .replace(/"([^(")"]+)":/g, '$1:') - .slice(1, -1) - .split('\n') - .map((line) => line.slice(2)) - .map((line) => (line.endsWith(',') ? line.slice(0, -1) : line)) - .join('\n') - )}` + ? `
${sanitizeResponseContent(formatUsage(message.usage))}
` : ''} placement="bottom" >