For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegação principal
Theme

Streaming de respostas da API

Aprenda a receber respostas do modelo em streaming pela API da OpenAI usando eventos enviados pelo servidor.

Por padrão, quando você faz uma requisição à API da OpenAI, geramos toda a saída do modelo antes de enviá-la em uma única resposta HTTP. Se a saída for longa, a resposta pode demorar. Com o streaming, você pode começar a exibir ou processar os primeiros trechos da saída enquanto o modelo gera o restante da resposta.

Este guia aborda o streaming via HTTP (stream=true) com eventos enviados pelo servidor (SSE). Para usar uma conexão WebSocket persistente com entradas incrementais por meio de previous_response_id, consulte o modo WebSocket da API Responses.

Ativar o streaming

Para começar a receber respostas em streaming, defina stream=True na requisição ao endpoint Responses.

from openai import OpenAI

client = OpenAI()

stream = client.responses.create(
    model="gpt-6-astra",
    input=[
        {
            "role": "user",
            "content": "Say 'double bubble bath' ten times fast.",
        },
    ],
    stream=True,
)

for event in stream:
    print(event)

A API Responses usa eventos semânticos no streaming. Cada evento tem um tipo com um schema predefinido, o que permite escutar apenas os eventos de interesse.

Para ver a lista completa de tipos de evento, consulte a referência da API sobre streaming. Veja alguns exemplos a seguir.

for await (const event of stream) {
  if (event.type === "response.output_text.delta") {
    process.stdout.write(event.delta);
  } else if (event.type === "response.completed") {
    console.log("\nResponse completed.");
  } else if (event.type === "error") {
    console.error(event.message);
  }
}

Ler as respostas

Se você usa nosso SDK, cada evento é uma instância tipada. Também é possível identificar cada evento pela propriedade type.

A API emite alguns eventos importantes do ciclo de vida apenas uma vez. Outros são emitidos várias vezes durante a geração da resposta. Ao receber texto em streaming, é comum escutar os seguintes eventos.

- `response.created`
- `response.output_text.delta`
- `response.completed`
- `error`

Para ver a lista completa de eventos que você pode escutar, consulte a referência da API sobre streaming.

Casos de uso avançados

Para casos de uso mais avançados, como o streaming de chamadas de ferramentas, consulte os guias a seguir.

Risco para a moderação

Transmitir a saída do modelo em streaming em um aplicativo em produção dificulta a moderação do conteúdo das respostas, pois pode ser mais difícil avaliar uma resposta parcial. Isso pode afetar a avaliação de conformidade com os usos permitidos.

Se você solicitar pontuações de moderação na requisição de geração, elas só chegam depois que toda a saída gerada está disponível. Os eventos que trazem trechos da saída durante a geração não incluem essas pontuações.