Streaming
Comment une complétion en streaming arrive sur le fil, 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 mémoire 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 la réponse non-streaming renvoie : 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 du client
Fermer la connexion arrête le travail et écrit la trace avec ce qui a été réellement produit. Une requête annulée est toujours un appel qui a eu lieu, donc elle apparaît 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-streaming est une erreur de validation, pas un repli silencieux vers une seule trame.