From 4f33e1e616e2a59112a6265073124abd7f0e81ed Mon Sep 17 00:00:00 2001 From: wujingjing <gersonwu@qq.com> Date: 星期二, 25 二月 2025 16:00:27 +0800 Subject: [PATCH] 修改地图 --- src/components/chat/Chat.vue | 34 ++++++++++++++++++++++++++++------ 1 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/components/chat/Chat.vue b/src/components/chat/Chat.vue index a1a2058..66e1ebb 100644 --- a/src/components/chat/Chat.vue +++ b/src/components/chat/Chat.vue @@ -114,6 +114,8 @@ isTalking.value = !isTalking.value; }); }; + +let streamOutputIsStart = false; let position: Position = null; const questionAi = async (text) => { let judgeParams = null; @@ -179,7 +181,6 @@ params, (chunkRes) => { Logger.info('chunk response锛歕n\n' + JSON.stringify(chunkRes)); - if (chunkRes.mode === 'result') { lastIsResult = true; const res = chunkRes.value; @@ -310,26 +311,47 @@ const lastGroup = computedMessageList.value.at(-1).stepGroup[0]; const stepList = lastGroup?.value ?? []; const currentTimeStamp = new Date().getTime(); - const ms = toMyFixed(currentTimeStamp - lastTimestamp, 2) + ' ms'; if (chunkRes.mode === 'finish') { + const ms = toMyFixed(currentTimeStamp - lastTimestamp, 2) + ' ms'; stepList.at(-1).ms = ms; isTalking.value = false; + streamOutputIsStart = false; return; } - if (stepList?.length >= 1) { + if (stepList?.length >= 1 && !streamOutputIsStart) { + const ms = toMyFixed(currentTimeStamp - lastTimestamp, 2) + ' ms'; + stepList.at(-1).ms = ms; } else { const stepGroup = computedMessageList.value.at(-1).stepGroup; if (stepGroup.length > 1) { const lastStepList = stepGroup.at(-2).value; + const ms = toMyFixed(currentTimeStamp - lastTimestamp, 2) + ' ms'; + lastStepList.at(-1).ms = ms; } } - lastTimestamp = currentTimeStamp; - const stepItem = convertProcessItem(chunkRes); - stepList.push(stepItem); + if (!streamOutputIsStart) { + lastTimestamp = currentTimeStamp; + } + if (!streamOutputIsStart) { + const stepItem = convertProcessItem(chunkRes); + stepList.push(stepItem); + } else { + const lastItem = stepList.at(-1); + lastItem.title += chunkRes.value ?? ''; + } + + if (chunkRes.mode === 'begin_stream') { + streamOutputIsStart = true; + lastTimestamp = currentTimeStamp; + } + if (chunkRes.mode === 'end_stream') { + streamOutputIsStart = false; + } + // 寮哄埗瑙﹀彂鏇存柊 scrollToBottom(); -- Gitblit v1.9.3