SimpleChat: Move multi part server response handling in
This commit is contained in:
parent
8f97c23895
commit
aecf0e23fd
1 changed files with 40 additions and 38 deletions
|
@ -315,6 +315,46 @@ class SimpleChat {
|
||||||
return sysPrompt;
|
return sysPrompt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the multipart response from server/ai-model
|
||||||
|
* @param {Response} resp
|
||||||
|
* @param {string} apiEP
|
||||||
|
*/
|
||||||
|
async handle_response_multipart(resp, apiEP) {
|
||||||
|
if (!resp.body) {
|
||||||
|
throw Error("ERRR:SimpleChat:SC:ReadJsonEarly:No body...");
|
||||||
|
}
|
||||||
|
let tdUtf8 = new TextDecoder("utf-8");
|
||||||
|
let rr = resp.body.getReader();
|
||||||
|
let gotBody = "";
|
||||||
|
while(true) {
|
||||||
|
let { value: cur, done: done } = await rr.read();
|
||||||
|
let curBody = tdUtf8.decode(cur);
|
||||||
|
console.debug("DBUG:SC:PART:Str:", curBody);
|
||||||
|
if (curBody.length > 0) {
|
||||||
|
let curArrays = curBody.split("\n");
|
||||||
|
for(let curArray of curArrays) {
|
||||||
|
console.debug("DBUG:SC:PART:StrPart:", curArray);
|
||||||
|
if (curArray.length <= 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (curArray.startsWith("data:")) {
|
||||||
|
curArray = curArray.substring(5);
|
||||||
|
}
|
||||||
|
let curJson = JSON.parse(curArray);
|
||||||
|
console.debug("DBUG:SC:PART:Json:", curJson);
|
||||||
|
gotBody += chat.response_extract_stream(curJson, gMe.apiEP);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (done) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.debug("DBUG:SC:PART:Full:", gotBody);
|
||||||
|
return gotBody;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle the oneshot response from server/ai-model
|
* Handle the oneshot response from server/ai-model
|
||||||
* @param {Response} resp
|
* @param {Response} resp
|
||||||
|
@ -451,44 +491,6 @@ class MultiChatUI {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Try read json response early, if available.
|
|
||||||
* @param {SimpleChat} chat
|
|
||||||
* @param {Response} resp
|
|
||||||
*/
|
|
||||||
async read_json_early(chat, resp) {
|
|
||||||
if (!resp.body) {
|
|
||||||
throw Error("ERRR:SimpleChat:MCUI:ReadJsonEarly:No body...");
|
|
||||||
}
|
|
||||||
let tdUtf8 = new TextDecoder("utf-8");
|
|
||||||
let rr = resp.body.getReader();
|
|
||||||
let gotBody = "";
|
|
||||||
while(true) {
|
|
||||||
let { value: cur, done: done } = await rr.read();
|
|
||||||
let curBody = tdUtf8.decode(cur);
|
|
||||||
console.debug("DBUG:SC:PART:Str:", curBody);
|
|
||||||
if (curBody.length > 0) {
|
|
||||||
let curArrays = curBody.split("\n");
|
|
||||||
for(let curArray of curArrays) {
|
|
||||||
console.debug("DBUG:SC:PART:StrPart:", curArray);
|
|
||||||
if (curArray.length <= 0) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (curArray.startsWith("data:")) {
|
|
||||||
curArray = curArray.substring(5);
|
|
||||||
}
|
|
||||||
let curJson = JSON.parse(curArray);
|
|
||||||
console.debug("DBUG:SC:PART:Json:", curJson);
|
|
||||||
gotBody += chat.response_extract_stream(curJson, gMe.apiEP);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (done) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
console.debug("DBUG:SC:PART:Full:", gotBody);
|
|
||||||
return gotBody;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle user query submit request, wrt specified chat session.
|
* Handle user query submit request, wrt specified chat session.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue