Streaming
Comment une complétion en streaming arrive sur le réseau, ce que porte la dernière trame, et ce qui se passe lorsqu'un client se déconnecte.
Le transport
Définissez stream: true et la réponse est text/event-stream : un objet JSON par ligne data:, chacun suivi d'une ligne vide. La mise en tampon est désactivée pour qu'un proxy ne retienne pas les trames.
HTTP/1.1 200 OK
content-type: text/event-stream; charset=utf-8
cache-control: no-cache, no-transform
connection: keep-alive
Les trames
La première trame porte le rôle assistant, puis une trame par delta, puis une trame avec finish_reason et le bloc de routage, puis exactement un terminateur. Un client qui suit le format lit le terminateur et s'arrête ; il ne doit pas traiter un terminateur manquant comme une réponse complète.
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Hallo"},"finish_reason":null}]}
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"llmeu":{…}}
data: [DONE]
Le bloc de routage voyage avec la dernière trame
La trame finale porte le même objet llmeu que celui renvoyé par la réponse non streamée : trace_id, model_used, model_version, provider, endpoint_id, inference_region, sovereignty_class, policy_id, retention et l'estimation du coût. En mode streaming, l'utilisation n'est connue qu'à la fin, c'est pourquoi le bloc voyage avec la dernière trame plutôt qu'avec la première.
Déconnexions client
Fermer la connexion arrête le travail et écrit la trace avec ce qui a réellement été produit. Une requête annulée reste un appel qui a eu lieu, elle apparaît donc dans l'utilisation ; elle n'est pas enregistrée comme une complétion terminée.
Ce qui ne peut pas être streamé
Les embeddings et l'API de plateforme sont des réponses JSON uniques. stream: true sur une route non streamée est une erreur de validation, pas un repli silencieux vers une seule trame.