feat(chat): add configurable streaming output
This commit is contained in:
@@ -107,12 +107,12 @@ export async function streamChat(
|
||||
const { done, value } = await reader.read();
|
||||
if (done) break;
|
||||
buffer += decoder.decode(value, { stream: true });
|
||||
const parts = buffer.split("\n\n");
|
||||
const parts = buffer.split(/\r?\n\r?\n/);
|
||||
buffer = parts.pop() ?? "";
|
||||
for (const part of parts) {
|
||||
const line = part.trim();
|
||||
if (!line.startsWith("data:")) continue;
|
||||
const payload = line.slice(5).trim();
|
||||
const dataLines = part.split(/\r?\n/).filter((line) => line.startsWith("data:"));
|
||||
if (!dataLines.length) continue;
|
||||
const payload = dataLines.map((line) => line.slice(5).trimStart()).join("\n").trim();
|
||||
if (payload === "[DONE]") return;
|
||||
const parsed = JSON.parse(payload) as { type?: string; content?: string; message?: string };
|
||||
if (parsed.type === "queued" || parsed.type === "generating") {
|
||||
|
||||
Reference in New Issue
Block a user