Cloudflare Docs
Workers
Edit this page on GitHub
Set theme to dark (⇧+D)

Stream OpenAI API Responses

Use the OpenAI v4 SDK to stream responses from OpenAI.
export default {
async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
const openai = new OpenAI({
apiKey: env.OPENAI_API_KEY
});
// make our request to the OpenAI API
const stream = await openai.chat.completions.create({
model: 'gpt-3.5-turbo',
messages: [{ role: 'user', content: 'Tell me a story' }],
stream: true,
});
// Using our readable and writable to handle streaming data
let { readable, writable } = new TransformStream()
let writer = writable.getWriter()
const textEncoder = new TextEncoder();
// loop over the data as it is streamed from OpenAI and write it using our writeable
for await (const part of stream) {
console.log(part.choices[0]?.delta?.content || '');
writer.write(textEncoder.encode(part.choices[0]?.delta?.content || ''));
}
writer.close();
// Send readable back to the browser so it can read the stream content
return new Response(readable);
},
};