The answer ends mid-word with no exceptionNo [DONE] marker in the raw streamWorks on short answers, fails on long oneschunked encoding ended prematurely / IncompleteReadRetrying produces a different cut-off point each timeLas respuestas en streaming se comprometen con un 200 OK en cuanto sale el primer byte. Todo lo que viene después es cuerpo. Si la conexión muere en el token 900 de 1200, el cliente ya vio una línea de estado exitosa y no lanzará ningún error salvo que esté comprobando el marcador de fin del propio stream.
Por eso el fallo parece aleatorio. Las respuestas cortas terminan dentro de la ventana que permite el eslabón más débil; las largas, no. El punto de corte se desplaza porque depende del tiempo, no del contenido.
La causa habitual son los timeouts por inactividad de los proxies, que encajan mal con los modelos de razonamiento: durante una fase de razonamiento larga no se emite ningún token, así que un intermediario que mide el silencio en lugar de la duración total puede dar la conexión por muerta mientras el modelo sigue pensando.
Lee el stream en bruto en lugar del objeto ya interpretado por un SDK, y mira el final:
curl -N -s 'YOUR_BASE_URL/chat/completions' \
-H 'Authorization: Bearer YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{"model":"YOUR_MODEL","stream":true,
"messages":[{"role":"user","content":"Count slowly from 1 to 400."}]}' \
| tail -5
Un stream completo termina con un fragmento que contiene "finish_reason":"stop" seguido de data: [DONE]. Si la última línea es un fragmento de contenido normal, el stream se cortó.
[DONE] o un fragmento con un finish_reason no nulo. Sin ninguno de los dos, trata el resultado como fallido, no como corto. Este es el único cambio que hace visible el problema.finish_reason y [DONE] llegan exactamente como los envió el proveedor. La configuración de cada cliente está en el inicio rápido.Revisado por última vez el 2026-10-01. Escrito a partir de problemas diagnosticados en una pasarela compatible con OpenAI en producción, no recopilado de otras webs.