0Pricing
AI Agents · Aula

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
            pass

Contrapressã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

  1. Chamando a API da OpenAI: chat.completions
  2. Chamando a API da Anthropic: messages
  3. Transmissão de respostas (SSE)
  4. Controle de custos: contagem de tokens e orçamentos
← Voltar para AI Agents