- Interfaces de chat que exibem as respostas à medida que chegam, antes de a geração terminar.
- Geração de conteúdo longo (relatórios, código), em que esperar pela saída completa prejudica a UX.
- Fluxos de agentes que exibem etapas de raciocínio ou chamadas de ferramentas em tempo real.
- Redução da latência percebida em modelos lentos ou saídas grandes.
Início rápido
Habilite o streaming de respostas em tempo real para uma experiência do usuário melhor.Configuração
Todos os modelos são compatíveis com streaming: nenhuma configuração adicional é necessária.
Formato da resposta
Chunks do streaming:response.completed. Ele traz o objeto da resposta, incluindo usage e telemetry. O evento response.output_text.done marca apenas o fim do texto; por isso, continue lendo depois dele até que response.completed chegue.
Uso no chunk final
stream_options: { "include_usage": true } segue o formato da OpenAI e é aceito. Quando o stream informa o uso de tokens de toda a solicitação, ele faz isso em um chunk final após o chunk de conteúdo, enviado antes do marcador [DONE].
usage do chunk que o contiver. A maioria das solicitações o envia em um chunk com um array choices vazio, mas uma solicitação que usa ferramentas de servidor o envia no chunk que também contém finish_reason; por isso, verificar usage em todos os chunks é a abordagem confiável:
Exemplos de código
Padrões de processamento de streams
Os exemplos desta seção usam o endpoint de Chat Completions. Os mesmos padrões se aplicam à Responses API: substitua
chat.completions.create(...) por responses.create(...), altere o endpoint para /v3/router/responses e trate eventos response.output_text.delta em vez de choices[0].delta.content.Processamento básico
Acumule os deltas em uma string completa e detecte a conclusão por meio definish_reason.
Com tratamento de erros
Proteja-se contra quedas de rede e erros inesperados envolvendo o loop do stream em um try/except. O exemplo em TypeScript também reinicia um timeout a cada chunk.Chamada de funções com streaming
Faça streaming das chamadas de ferramentas à medida que são geradas:Exemplos de integração com a interface
Hook do React para streaming
Encapsule o estado do streaming em um hook para que os componentes recebamresponse e isStreaming sem precisar gerenciar o loop de eventos.
Otimização de desempenho
Buffer de chunks
Agrupar chunks pequenos antes de enviá-los à interface reduz os ciclos de renderização e suaviza a saída percebida.Gerenciamento de memória
Em conclusões longas, limite o acúmulo para evitar crescimento ilimitado da memória.Boas práticas
Gerenciamento de streams
- Defina timeouts razoáveis (de 30 a 60 segundos).
- Implemente limites de erro adequados.
- Trate interrupções de rede de forma elegante.
- Ofereça ao usuário opções de cancelamento.
Considerações de UI/UX
- Exiba indicadores de digitação durante o streaming.
- Permita que os usuários interrompam a geração.
- Use buffer para chunks pequenos e obtenha uma exibição mais suave.
- Trate atualizações rápidas com eficiência.
Exemplo de recuperação de erros
Solução de problemas
O stream é interrompido inesperadamente- Verifique a estabilidade da rede.
- Confira as configurações de timeout.
- Monitore se há limitação de taxa.
- Verifique os limites específicos do modelo.
- Otimize o processamento dos chunks.
- Reduza a frequência de esvaziamento do buffer.
- Verifique a latência da rede.
- Reavalie a escolha do modelo.
max_tokens implique
mais de 10 minutos de geração retorna 400 com type: "invalid_request_error".
Defina stream: true para saídas longas ou reduza max_tokens.
Problemas de memória
- Implemente limites de tamanho de chunk.
- Use parsers de streaming.
- Descarte os chunks já processados.
- Monitore o uso de memória.
Limitações
Uma solicitação de modelo com streaming é executada por até 30 minutos; umlimits.max_execution_time explícito reduz esse limite. Os clientes SDK aplicam o próprio timeout de solicitação à chamada inteira, então aumente timeoutMs ou timeout_ms antes de iniciar um stream longo. Consulte Timeouts e retries.
Um stream interrompido não pode ser retomado: nenhum dos endpoints oferece cursor de retomada ou replay de eventos. Reenvie a solicitação. Na Responses API, se o servidor concluiu a resposta antes da interrupção e ela ainda está armazenada, continue a partir dela com
previous_response_id. Para trabalhos que precisam sobreviver a uma desconexão, use o modo em segundo plano e consulte o ID da resposta em vez de usar streaming.
Recursos avançados
Os exemplos desta seção usam o endpoint de Chat Completions. Os mesmos padrões se aplicam à Responses API: substitua
chat.completions.create(...) por responses.create(...). Para cURL, use /v3/router/responses.Streaming com outros recursos do Gateway
Recursos do AI Gateway como cache, timeouts e nomes de deployment se combinam diretamente com o streaming: adicione-os ao mesmo objeto da solicitação.Streaming paralelo
Dispare vários streams simultaneamente usandoPromise.all em TypeScript e asyncio.gather em Python para obter respostas independentes sem esperar que cada uma termine.

