Pular para o conteúdo principal

Streaming e Conversas Multi-Turno

Intermediário

Duas realidades práticas de construir experiências semelhantes a chat na API: faça streaming para que os usuários vejam a saída imediatamente e gerencie o histórico você mesmo, porque a API é stateless.

Streaming

Sem streaming, o usuário espera pela resposta inteira. Com streaming, os tokens chegam conforme são gerados — uma velocidade percebida muito melhor. Use o auxiliar de streaming do SDK:

with client.messages.stream(
model="claude-sonnet-4-6", max_tokens=1024,
messages=[{"role": "user", "content": "Explain RAG in two sentences."}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)

Multi-turno: você guarda o histórico

A API não tem memória entre chamadas (por quê). Para continuar uma conversa, reenvie a troca anterior inteira a cada vez:

messages = [{"role": "user", "content": "Hi, I'm planning a trip."}]
# ... get assistant reply, then append both turns:
messages.append({"role": "assistant", "content": assistant_text})
messages.append({"role": "user", "content": "Make it 3 days."})
# send the full `messages` list again

Conversas longas enchem a janela

Conforme o histórico cresce, ele consome a janela de contexto e o custo aumenta. Estratégias:

  • Resuma/compacte turnos mais antigos em um breve resumo que você carrega adiante.
  • Remova turnos anteriores irrelevantes.
  • Combine com o cache de prompt para evitar pagar de novo por um prefixo estável.

Próximo