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;