Transmissão de respostas (SSE)
Transmita a saída do LLM token a token por meio de Server-Sent Events para criar interfaces ágeis e indicar o progresso.
Transmissão de respostas (SSE) é uma aula grátis de AI Agents no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Agents, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Agents inclui 4 aulas no total.
Por que transmitir em fluxo?
Sem transmissão em fluxo, você espera a resposta completa antes de exibir qualquer coisa. Com uma resposta de 50 tokens que leva 5 segundos, o usuário não vê nada durante 5 segundos.
A transmissão em fluxo exibe os tokens conforme eles chegam — o tempo total é o mesmo, mas a experiência do usuário parece instantânea.
Eventos enviados pelo servidor (SSE)
A OpenAI e a Anthropic transmitem por SSE — um protocolo HTTP unidirecional no qual o servidor envia eventos no formato data: {...}\n\n.
A maioria dos SDKs oculta o SSE por trás de uma interface de iterador.
Transmissão em fluxo com OpenAI
Defina stream=True e itere sobre a resposta:
stream = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
stream=True,
)
for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
print(delta, end='', flush=True)Coleta da resposta completa
Acumule os fragmentos para obter o texto final:
buf = []
for chunk in stream:
delta = chunk.choices[0].delta.content or ''
buf.append(delta)
print(delta, end='', flush=True)
full_text = ''.join(buf)
messages.append({'role': 'assistant', 'content': full_text})Transmissão em fluxo com Anthropic
O mesmo padrão, com uma API ligeiramente diferente:
with client.messages.stream(
model='claude-sonnet-4-5',
max_tokens=1024,
messages=messages,
) as stream:
for text in stream.text_stream:
print(text, end='', flush=True)
final = stream.get_final_message()
print('\ndone, tokens:', final.usage.output_tokens)Transmissão em fluxo de chamadas de ferramentas
As chamadas de ferramentas também são transmitidas em fluxo. Com a OpenAI, o nome da função e os argumentos chegam em partes:
for chunk in stream:
delta = chunk.choices[0].delta
if delta.tool_calls:
for tc in delta.tool_calls:
# tc.function.name and tc.function.arguments arrive as partial strings
passContrapressão e cancelamento
Se o usuário fechar a página, cancele o fluxo para parar de consumir tokens:
try:
for chunk in stream:
if request_was_cancelled():
stream.close()
break
finally:
stream.close()Transmissão em fluxo por meio de um servidor Web
Para FastAPI, use StreamingResponse:
from fastapi.responses import StreamingResponse
def token_generator():
for chunk in stream:
delta = chunk.choices[0].delta.content or ''
yield f'data: {delta}\n\n'
return StreamingResponse(token_generator(), media_type='text/event-stream')Acumulação até completar frases
Para síntese de voz ou exibição em partes, acumule o conteúdo até o fim de uma frase:
buf = ''
for chunk in stream:
buf += chunk.choices[0].delta.content or ''
while '. ' in buf:
sentence, buf = buf.split('. ', 1)
speak(sentence + '.')Análise de JSON transmitido em fluxo
Para saídas JSON, não é possível analisar o conteúdo durante o fluxo. Opções:
- Acumular toda a saída e analisá-la uma vez
- Usar um analisador de JSON em fluxo (
ijson) para emitir os campos assim que forem concluídos
Métricas de latência: TTFT e TPS
- TTFT — tempo até o primeiro token (capacidade de resposta percebida)
- TPS — tokens por segundo (vazão)
A transmissão em fluxo otimiza o TTFT, não o tempo total. Procure manter o TTFT abaixo de 500 ms para uma boa experiência de chat.
Por que transmitir em fluxo?
Qual é o principal benefício da transmissão em fluxo?
Recapitulação
A transmissão em fluxo melhora a experiência do usuário, não a velocidade. Implemente-a em qualquer agente que interaja com uma pessoa em tempo real.
Perguntas Frequentes
A aula “Transmissão de respostas (SSE)” é grátis?
Sim — o texto completo de “Transmissão de respostas (SSE)” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Agents, atualize para CoddyKit PRO. O curso de AI Agents inclui 4 aulas no total.
O que vou aprender em “Transmissão de respostas (SSE)”?
Transmita a saída do LLM token a token por meio de Server-Sent Events para criar interfaces ágeis e indicar o progresso. Você pratica AI Agents com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AI Agents?
Nenhuma experiência prévia é necessária. AI Agents no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Transmissão de respostas (SSE)”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AI Agents?
Sim. Cada aula de AI Agents inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Chamando a API da OpenAI: chat.completions
- Chamando a API da Anthropic: messages
- Transmissão de respostas (SSE)
- Controle de custos: contagem de tokens e orçamentos