mirror of
https://github.com/khoj-ai/khoj.git
synced 2025-02-17 08:04:21 +00:00
Fix rendering online with note references post streaming chat response
Previously only the notes references would get rendered post response streaming when when both online and notes references were used to respond to the user's message
This commit is contained in:
parent
1aeea3d854
commit
a1ce12296f
3 changed files with 29 additions and 19 deletions
|
@ -357,15 +357,16 @@
|
|||
|
||||
let numReferences = 0;
|
||||
|
||||
if (Array.isArray(references)) {
|
||||
numReferences = references.length;
|
||||
if (references.hasOwnProperty("notes")) {
|
||||
numReferences += references["notes"].length;
|
||||
|
||||
references.forEach((reference, index) => {
|
||||
references["notes"].forEach((reference, index) => {
|
||||
let polishedReference = generateReference(reference, index);
|
||||
referenceSection.appendChild(polishedReference);
|
||||
});
|
||||
} else {
|
||||
numReferences += processOnlineReferences(referenceSection, references);
|
||||
}
|
||||
if (references.hasOwnProperty("online")){
|
||||
numReferences += processOnlineReferences(referenceSection, references["online"]);
|
||||
}
|
||||
|
||||
let referenceExpandButton = document.createElement('button');
|
||||
|
@ -511,7 +512,7 @@
|
|||
// Handle streamed response of type text/event-stream or text/plain
|
||||
const reader = response.body.getReader();
|
||||
const decoder = new TextDecoder();
|
||||
let references = null;
|
||||
let references = {};
|
||||
|
||||
readStream();
|
||||
|
||||
|
@ -519,8 +520,8 @@
|
|||
reader.read().then(({ done, value }) => {
|
||||
if (done) {
|
||||
// Append any references after all the data has been streamed
|
||||
if (references != null) {
|
||||
newResponseText.appendChild(references);
|
||||
if (references != {}) {
|
||||
newResponseText.appendChild(createReferenceSection(references));
|
||||
}
|
||||
document.getElementById("chat-body").scrollTop = document.getElementById("chat-body").scrollHeight;
|
||||
document.getElementById("chat-input").removeAttribute("disabled");
|
||||
|
@ -538,7 +539,11 @@
|
|||
|
||||
const rawReference = chunk.split("### compiled references:")[1];
|
||||
const rawReferenceAsJson = JSON.parse(rawReference);
|
||||
references = createReferenceSection(rawReferenceAsJson);
|
||||
if (rawReferenceAsJson instanceof Array) {
|
||||
references["notes"] = rawReferenceAsJson;
|
||||
} else if (typeof rawReferenceAsJson === "object" && rawReferenceAsJson !== null) {
|
||||
references["online"] = rawReferenceAsJson;
|
||||
}
|
||||
readStream();
|
||||
} else {
|
||||
// Display response from Khoj
|
||||
|
|
|
@ -368,15 +368,16 @@ To get started, just start typing below. You can also type / to see a list of co
|
|||
|
||||
let numReferences = 0;
|
||||
|
||||
if (Array.isArray(references)) {
|
||||
numReferences = references.length;
|
||||
if (references.hasOwnProperty("notes")) {
|
||||
numReferences += references["notes"].length;
|
||||
|
||||
references.forEach((reference, index) => {
|
||||
references["notes"].forEach((reference, index) => {
|
||||
let polishedReference = generateReference(reference, index);
|
||||
referenceSection.appendChild(polishedReference);
|
||||
});
|
||||
} else {
|
||||
numReferences += processOnlineReferences(referenceSection, references);
|
||||
}
|
||||
if (references.hasOwnProperty("online")) {
|
||||
numReferences += processOnlineReferences(referenceSection, references["online"]);
|
||||
}
|
||||
|
||||
let referenceExpandButton = document.createElement('button');
|
||||
|
@ -518,7 +519,7 @@ To get started, just start typing below. You can also type / to see a list of co
|
|||
// Handle streamed response of type text/event-stream or text/plain
|
||||
const reader = response.body.getReader();
|
||||
const decoder = new TextDecoder();
|
||||
let references = null;
|
||||
let references = {};
|
||||
|
||||
readStream();
|
||||
|
||||
|
@ -526,8 +527,8 @@ To get started, just start typing below. You can also type / to see a list of co
|
|||
reader.read().then(({ done, value }) => {
|
||||
if (done) {
|
||||
// Append any references after all the data has been streamed
|
||||
if (references != null) {
|
||||
newResponseText.appendChild(references);
|
||||
if (references != {}) {
|
||||
newResponseText.appendChild(createReferenceSection(references));
|
||||
}
|
||||
document.getElementById("chat-body").scrollTop = document.getElementById("chat-body").scrollHeight;
|
||||
document.getElementById("chat-input").removeAttribute("disabled");
|
||||
|
@ -545,7 +546,11 @@ To get started, just start typing below. You can also type / to see a list of co
|
|||
|
||||
const rawReference = chunk.split("### compiled references:")[1];
|
||||
const rawReferenceAsJson = JSON.parse(rawReference);
|
||||
references = createReferenceSection(rawReferenceAsJson);
|
||||
if (rawReferenceAsJson instanceof Array) {
|
||||
references["notes"] = rawReferenceAsJson;
|
||||
} else if (typeof rawReferenceAsJson === "object" && rawReferenceAsJson !== null) {
|
||||
references["online"] = rawReferenceAsJson;
|
||||
}
|
||||
readStream();
|
||||
} else {
|
||||
// Display response from Khoj
|
||||
|
|
|
@ -64,7 +64,7 @@ class ThreadedGenerator:
|
|||
def close(self):
|
||||
if self.compiled_references and len(self.compiled_references) > 0:
|
||||
self.queue.put(f"### compiled references:{json.dumps(self.compiled_references)}")
|
||||
elif self.online_results and len(self.online_results) > 0:
|
||||
if self.online_results and len(self.online_results) > 0:
|
||||
self.queue.put(f"### compiled references:{json.dumps(self.online_results)}")
|
||||
self.queue.put(StopIteration)
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue