ChatUIPro / app /api /utils /stream.ts
dorkai's picture
Add app files
a9df3bb
raw
history blame contribute delete
788 Bytes
export async function OpenAIStream(res: { body: any }) {
const reader = res.body.getReader();
const stream = new ReadableStream({
// https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams
// https://github.com/whichlight/chatgpt-api-streaming/blob/master/pages/api/OpenAIStream.ts
start(controller) {
return pump();
function pump() {
return reader.read().then(({ done, value }: any) => {
// When no more data needs to be consumed, close the stream
if (done) {
controller.close();
return;
}
// Enqueue the next data chunk into our target stream
controller.enqueue(value);
return pump();
});
}
},
});
return stream;
}