Title: Streaming %E2%80%94 LLM EU Canonical: https://llmeu.com/pt/docs/streaming/ Markdown mirror: https://llmeu.com/pt/docs/streaming.md Machine-readable: https://llmeu.com/llms.txt (index) - https://llmeu.com/llms-full.txt (full catalogue) - https://llmeu.com/llms-catalogue.json Come%C3%A7ar - [In%C3%ADcio r%C3%A1pido](/pt/docs/quickstart/) - [Consola](/pt/docs/console/) - [Migra%C3%A7%C3%A3o](/pt/docs/migration/) - [Refer%C3%AAncia da API](/pt/docs/api/) Refer%C3%AAncia - [Autentica%C3%A7%C3%A3o](/pt/docs/authentication/) - [Endpoints](/pt/docs/endpoints/) - [Erros](/pt/docs/errors/) - [Limites de taxa](/pt/docs/rate-limits/) - [Streaming](/pt/docs/streaming/) - [Pol%C3%ADticas](/pt/docs/policies/) - [Encaminhamento e pol%C3%ADtica](/pt/docs/routing/) - [Resid%C3%AAncia e regi%C3%B5es](/pt/docs/residency/) - [Evid%C3%AAncia e verifica%C3%A7%C3%A3o](/pt/docs/evidence/) - [Compatibilidade com OpenAI](/pt/docs/openai-compat/) Operar - [Alojamento pr%C3%B3prio](/pt/docs/self-hosting/) # Streaming Como uma completion em streaming chega %C3%A0 rede, o que transporta o %C3%BAltimo frame e o que acontece quando um cliente se desliga. ## O transporte Defina stream: true e a resposta %C3%A9 text/event-stream: um objeto JSON por linha data:, cada um seguido por uma linha vazia. O buffering est%C3%A1 desativado para que um proxy n%C3%A3o retenha frames. ``` HTTP/1.1 200 OK content-type: text/event-stream; charset=utf-8 cache-control: no-cache, no-transform connection: keep-alive ``` ## Os frames O primeiro frame transporta o papel de assistente, depois um frame por delta, depois um frame com finish_reason e o bloco de encaminhamento, e por fim exatamente um terminador. Um cliente que segue o formato l%C3%AA o terminador e para; n%C3%A3o deve tratar um terminador ausente como uma resposta completa. ``` data: {"id":"chatcmpl-%E2%80%A6","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]} data: {"id":"chatcmpl-%E2%80%A6","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Hallo"},"finish_reason":null}]} data: {"id":"chatcmpl-%E2%80%A6","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"llmeu":{%E2%80%A6}} data: [DONE] ``` ## O bloco de encaminhamento viaja com o %C3%BAltimo frame O frame final transporta o mesmo objeto llmeu que a resposta n%C3%A3o-streaming devolve: trace_id, model_used, model_version, provider, endpoint_id, inference_region, sovereignty_class, policy_id, retention e a estimativa de custo. No modo streaming, a utiliza%C3%A7%C3%A3o s%C3%B3 %C3%A9 conhecida no final, raz%C3%A3o pela qual o bloco viaja com o %C3%BAltimo frame em vez do primeiro. ## Cliente desliga-se Fechar a liga%C3%A7%C3%A3o para o trabalho e escreve o trace com o que foi realmente produzido. Um pedido cancelado continua a ser uma chamada que aconteceu, pelo que aparece na utiliza%C3%A7%C3%A3o; n%C3%A3o %C3%A9 registado como uma completion conclu%C3%ADda. ## O que n%C3%A3o pode ser transmitido em streaming Os embeddings e a API da plataforma s%C3%A3o respostas JSON %C3%BAnicas. stream: true numa rota n%C3%A3o-streaming %C3%A9 um erro de valida%C3%A7%C3%A3o, n%C3%A3o um fallback silencioso para um frame.