From 589c8fef5b4973cae269d5a5594f80ec7f9b08fd Mon Sep 17 00:00:00 2001 From: mic Date: Wed, 2 Oct 2024 23:23:57 +0200 Subject: [PATCH] managing broken chunck --- api_webchat/model-worker-openai_comp.js | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/api_webchat/model-worker-openai_comp.js b/api_webchat/model-worker-openai_comp.js index 8d8c971f..b0f62ca1 100644 --- a/api_webchat/model-worker-openai_comp.js +++ b/api_webchat/model-worker-openai_comp.js @@ -38,7 +38,7 @@ self.onmessage = async function(event) { } else if (event.data.type === 'chatMessage') { conversationHistory.push({ role: 'user', content: event.data.message }); - const response = await openai.fetchResponse(conversationHistory); //4096); + const response = await openai_comp.fetchResponse(conversationHistory); //4096); postMessage({ type: 'messageSent' }); if (!response.ok) { @@ -58,6 +58,7 @@ self.onmessage = async function(event) { const reader = response.body.getReader(); const decoder = new TextDecoder("utf-8"); + let chunk = ''; while (true) { if (stopStreaming) { @@ -76,12 +77,24 @@ self.onmessage = async function(event) { break; } // lots of low-level OpenAI response parsing stuff - const chunk = decoder.decode(value); + chunk += decoder.decode(value); + console.log(">>>>>>>>>>>>>> [ThunderAI] chunk: " + JSON.stringify(chunk)); const lines = chunk.split("\n"); - const parsedLines = lines - .map((line) => line.replace(/^data: /, "").trim()) // Remove the "data: " prefix - .filter((line) => line !== "" && line !== "[DONE]") // Remove empty lines and "[DONE]" - .map((line) => JSON.parse(line)); // Parse the JSON string + let parsedLines = []; + try{ + parsedLines = lines + .map((line) => line.replace(/^data: /, "").trim()) // Remove the "data: " prefix + .filter((line) => line !== "" && line !== "[DONE]") // Remove empty lines and "[DONE]" + // .map((line) => JSON.parse(line)); // Parse the JSON string + .map((line) => { + console.log(">>>>>>>>>>>>> [ThunderAI] line: " + JSON.stringify(line)); + return JSON.parse(line); + }); + chunk = chunk.substring(chunk.lastIndexOf('\n') + 1); + console.log(">>>>>>>>>>>>>> [ThunderAI] last chunk: " + JSON.stringify(chunk)); + }catch(e){ + console.error(">>>>>>>>>>>>> [ThunderAI] error: " + JSON.stringify(e)); + } for (const parsedLine of parsedLines) { const { choices } = parsedLine;