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; }