Streaming
Con "stream": true la respuesta llega por partes (Server-Sent Events), en vez de esperar a que termine entera. Es lo que hace que un chat se sienta rápido.
stream = client.chat.completions.create( model="colibri", messages=[{"role": "user", "content": "Cuéntame la historia del cajón peruano"}], stream=True,)for chunk in stream: if chunk.choices and chunk.choices[0].delta.content: print(chunk.choices[0].delta.content, end="", flush=True)const stream = await client.chat.completions.create({ model: "colibri", messages: [{ role: "user", content: "Cuéntame la historia del cajón peruano" }], stream: true,});for await (const chunk of stream) { process.stdout.write(chunk.choices[0]?.delta?.content ?? "");}curl -N https://api.jeimy.ai/v1/chat/completions \ -H "Authorization: Bearer $JEIMY_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model": "colibri", "stream": true, "messages": [{"role": "user", "content": "Hola"}]}'Qué llega
Sección titulada «Qué llega»Cada evento es una línea data: con un trozo en JSON, y el último es data: [DONE]:
data: {"choices":[{"index":0,"delta":{"content":"¡Ho"}}], ...}
data: {"choices":[{"index":0,"delta":{"content":"la!"}}], ...}
data: {"choices":[{"index":0,"delta":{},"finish_reason":"stop"}], ...}
data: {"choices":[],"usage":{"prompt_tokens":8,"completion_tokens":3,"total_tokens":11}}
data: [DONE]Mientras el modelo piensa pueden llegar líneas de comentario : procesando, que mantienen viva la conexión. Los SDK las ignoran solas; si lees el stream a mano, sáltate toda línea que empiece por :.
En el formato Anthropic (/v1/messages) el streaming sigue la secuencia de eventos de esa API: message_start, content_block_start, content_block_delta, content_block_stop, message_delta y message_stop.
