mirror of
https://github.com/langgenius/webapp-conversation.git
synced 2025-12-08 17:32:27 +08:00
25 lines
788 B
TypeScript
25 lines
788 B
TypeScript
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;
|
|
} |