|
32 | 32 | } from "$lib/shared/Utils"; |
33 | 33 | import { fetchTextStream } from "$lib/network/chat/Network"; |
34 | 34 | import LoadingAnimation from "$lib/shared/components/loading/Loading.svelte"; |
35 | | - import { browser } from "$app/environment"; |
36 | 35 | import "driver.js/dist/driver.css"; |
37 | 36 | import "$lib/assets/layout/css/driver.css"; |
38 | 37 | import UploadFile from "$lib/shared/components/upload/uploadFile.svelte"; |
39 | 38 | import PaperAirplane from "$lib/assets/chat/svelte/PaperAirplane.svelte"; |
40 | | - import Gallery from "$lib/shared/components/chat/gallery.svelte"; |
41 | 39 | import Scrollbar from "$lib/shared/components/scrollbar/Scrollbar.svelte"; |
42 | 40 | import ChatMessage from "$lib/modules/chat/ChatMessage.svelte"; |
43 | 41 |
|
|
90 | 88 | const eventSource = await fetchTextStream(query, knowledge_1); |
91 | 89 |
|
92 | 90 | eventSource.addEventListener("message", (e: any) => { |
93 | | - let Msg = e.data; |
94 | | - if (Msg.startsWith("b")) { |
95 | | - let currentMsg = Msg.slice(2, -1); |
96 | | - const containsNewLine = /\\n/.test(currentMsg); |
97 | | - let requiresDecoding = false; |
| 91 | + let msg = e.data; |
| 92 | + console.log("msg", msg); |
98 | 93 |
|
99 | | - currentMsg = currentMsg.replace(/\\n/g, "\n"); |
| 94 | + const handleDecodedMessage = (decodedMsg: string) => { |
| 95 | + if (decodedMsg !== "</s>") { |
| 96 | + decodedMsg = decodedMsg.replace(/\\n/g, "\n"); |
| 97 | + } |
| 98 | +
|
| 99 | + if (chatMessages[chatMessages.length - 1].role === MessageRole.User) { |
| 100 | + chatMessages.push({ |
| 101 | + role: MessageRole.Assistant, |
| 102 | + type: MessageType.Text, |
| 103 | + content: decodedMsg, |
| 104 | + time: startSendTime, |
| 105 | + }); |
| 106 | + } else { |
| 107 | + chatMessages[chatMessages.length - 1].content += decodedMsg; |
| 108 | + } |
| 109 | +
|
| 110 | + scrollToBottom(scrollToDiv); |
| 111 | + }; |
| 112 | +
|
| 113 | + if (msg.startsWith("b")) { |
| 114 | + let currentMsg = msg.slice(2, -1); |
100 | 115 |
|
101 | 116 | if (/\\x[\dA-Fa-f]{2}/.test(currentMsg)) { |
102 | 117 | currentMsg = decodeEscapedBytes(currentMsg); |
103 | | - requiresDecoding = true; |
104 | 118 | } else if (/\\u[\dA-Fa-f]{4}/.test(currentMsg)) { |
105 | 119 | currentMsg = decodeUnicode(currentMsg); |
106 | | - requiresDecoding = true; |
107 | 120 | } |
108 | 121 |
|
109 | | - if (containsNewLine && requiresDecoding) { |
110 | | - currentMsg += "\n"; |
111 | | - } |
112 | | - if (chatMessages[chatMessages.length - 1].role == MessageRole.User) { |
113 | | - chatMessages = [ |
114 | | - ...chatMessages, |
115 | | - { |
116 | | - role: MessageRole.Assistant, |
117 | | - type: MessageType.Text, |
118 | | - content: currentMsg, |
119 | | - time: startSendTime, |
120 | | - }, |
121 | | - ]; |
122 | | - } else { |
123 | | - let content = chatMessages[chatMessages.length - 1].content as string; |
124 | | - chatMessages[chatMessages.length - 1].content = content + currentMsg; |
125 | | - } |
126 | | - scrollToBottom(scrollToDiv); |
127 | | - } else if (Msg === "[DONE]") { |
128 | | - let startTime = chatMessages[chatMessages.length - 1].time; |
| 122 | + handleDecodedMessage(currentMsg); |
| 123 | + } else if (msg === "[DONE]") { |
| 124 | + console.log("Done"); |
129 | 125 |
|
| 126 | + let startTime = chatMessages[chatMessages.length - 1].time; |
130 | 127 | loading = false; |
131 | 128 | let totalTime = parseFloat( |
132 | 129 | ((getCurrentTimeStamp() - startTime) / 1000).toFixed(2) |
|
137 | 134 | } |
138 | 135 |
|
139 | 136 | storeMessages(); |
| 137 | + } else { |
| 138 | + if (/\\x[\dA-Fa-f]{2}/.test(msg)) { |
| 139 | + msg = decodeEscapedBytes(msg); |
| 140 | + } else if (/\\u[\dA-Fa-f]{4}/.test(msg)) { |
| 141 | + msg = decodeUnicode(msg); |
| 142 | + } |
| 143 | +
|
| 144 | + let currentMsg = msg.replace(/"/g, "").replace(/\\n/g, "\n"); |
| 145 | +
|
| 146 | + handleDecodedMessage(currentMsg); |
140 | 147 | } |
141 | 148 | }); |
| 149 | +
|
142 | 150 | eventSource.stream(); |
143 | 151 | }; |
144 | 152 |
|
|
0 commit comments