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 timeLes réponses en streaming s'engagent sur un 200 OK dès que le premier octet part. Tout ce qui suit est du corps. Si la connexion meurt au token 900 sur 1200, le client a déjà vu une ligne de statut réussie et ne lèvera rien, sauf s'il vérifie le marqueur de fin du flux lui-même.
C'est pourquoi la panne semble aléatoire. Les réponses courtes se terminent dans la fenêtre qu'autorise le maillon le plus faible ; les longues, non. Le point de coupure varie parce qu'il dépend du temps, pas du contenu.
Les délais d'inactivité des proxies sont la cause habituelle, et ils s'accordent mal avec les modèles de raisonnement : pendant une longue phase de raisonnement, aucun token n'est émis, donc un intermédiaire qui mesure le silence plutôt que la durée totale peut déclarer la connexion morte alors que le modèle réfléchit encore.
Lisez le flux brut plutôt que l'objet déjà analysé par un SDK, et regardez la fin :
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 flux complet se termine par un fragment contenant "finish_reason":"stop" suivi de data: [DONE]. Si la dernière ligne est un fragment de contenu ordinaire, le flux a été coupé.
[DONE] ou un fragment avec un finish_reason non nul. Sans l'un des deux, traitez le résultat comme un échec, pas comme une réponse courte. C'est le seul changement qui rend le problème visible.finish_reason et [DONE] arrivent exactement tels que le fournisseur les a envoyés. La configuration de chaque client est dans le démarrage rapide.Dernière vérification le 2026-10-01. Rédigé à partir de problèmes diagnostiqués sur une passerelle compatible OpenAI en production, pas compilé à partir d'autres sites.