managing broken chunck
This commit is contained in:
parent
a924f946a5
commit
589c8fef5b
1 changed files with 19 additions and 6 deletions
|
|
@ -38,7 +38,7 @@ self.onmessage = async function(event) {
|
||||||
} else if (event.data.type === 'chatMessage') {
|
} else if (event.data.type === 'chatMessage') {
|
||||||
conversationHistory.push({ role: 'user', content: event.data.message });
|
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' });
|
postMessage({ type: 'messageSent' });
|
||||||
|
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
|
|
@ -58,6 +58,7 @@ self.onmessage = async function(event) {
|
||||||
|
|
||||||
const reader = response.body.getReader();
|
const reader = response.body.getReader();
|
||||||
const decoder = new TextDecoder("utf-8");
|
const decoder = new TextDecoder("utf-8");
|
||||||
|
let chunk = '';
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
if (stopStreaming) {
|
if (stopStreaming) {
|
||||||
|
|
@ -76,12 +77,24 @@ self.onmessage = async function(event) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// lots of low-level OpenAI response parsing stuff
|
// 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 lines = chunk.split("\n");
|
||||||
const parsedLines = lines
|
let parsedLines = [];
|
||||||
.map((line) => line.replace(/^data: /, "").trim()) // Remove the "data: " prefix
|
try{
|
||||||
.filter((line) => line !== "" && line !== "[DONE]") // Remove empty lines and "[DONE]"
|
parsedLines = lines
|
||||||
.map((line) => JSON.parse(line)); // Parse the JSON string
|
.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) {
|
for (const parsedLine of parsedLines) {
|
||||||
const { choices } = parsedLine;
|
const { choices } = parsedLine;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue