(ctrl)
| 419 | const decoder = new TextDecoder() |
| 420 | const stream = new ReadableStream({ |
| 421 | async pull(ctrl) { |
| 422 | const { done, value } = await reader.read() |
| 423 | if (done) { |
| 424 | ctrl.close() |
| 425 | return |
| 426 | } |
| 427 | const text = decoder.decode(value, { stream: true }) |
| 428 | ctrl.enqueue(encoder.encode(text.replace(/"role"\s*:\s*""/g, '"role":"assistant"'))) |
| 429 | }, |
| 430 | cancel() { |
| 431 | reader.cancel() |
| 432 | }, |