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