Passa al contenuto principale

Streaming e conversazioni multi-turno

Intermedio
What you'll learn
  • Eseguire lo streaming delle risposte token per token così gli utenti vedono subito l'output
  • Capire perché l'API è stateless e come gestire tu stesso la cronologia della conversazione
  • Continuare una conversazione multi-turno rinviando l'intero scambio precedente
  • Evitare che le conversazioni lunghe facciano esplodere la finestra di contesto e i costi

Costruire esperienze tipo chat sull'API si riduce a due realtà pratiche: usa lo streaming così gli utenti vedono subito l'output, e gestisci tu stesso la cronologia perché l'API è stateless. Padroneggia entrambe e la tua UX di chat risulterà veloce e ricorderà tutto.

Streaming

Senza streaming, l'utente attende l'intera risposta. Con lo streaming, i token arrivano man mano che vengono generati — una velocità percepita molto migliore.

Pro tip
  • Usa l'helper di streaming dell'SDK invece di analizzare gli eventi grezzi a mano — gestisce per te il ciclo di vita degli eventi.
with client.messages.stream(
model="claude-sonnet-5", 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: la cronologia la tieni tu

L'API non ha memoria tra le chiamate (perché). Per continuare una conversazione, rinvia ogni volta l'intero scambio precedente.

Guided walkthrough1 of 4
  1. Invia il primo messaggio dell'utente nella lista messages.
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

Le conversazioni lunghe riempiono la finestra

Man mano che la cronologia cresce, consuma la finestra di contesto e il costo aumenta. Strategie per tenerla sotto controllo:

  • Riassumi/compatta i turni più vecchi in un breve riepilogo che porti avanti.
  • Sfoltisci i turni precedenti non rilevanti.
  • Abbina al prompt caching per evitare di ripagare un prefisso stabile.
Watch out
  • Ogni chiamata rinvia l'intera cronologia — le conversazioni lunghe costano di più e, se non compatti o sfoltisci mai, possono finire per superare la finestra di contesto.
Key takeaways
  • Esegui lo streaming dei token per una velocità percepita elevata; l'helper dell'SDK gestisce il ciclo di vita degli eventi.
  • L'API è stateless — non ha memoria tra le chiamate.
  • Continua una conversazione aggiungendo ogni turno e rinviando la lista messages completa.
  • Compatta, sfoltisci e usa la cache per controllare il costo e la dimensione delle conversazioni lunghe.

Mettiti alla prova

0/3
  1. Perché lo streaming migliora l'esperienza di chat?
  2. Come si continua una conversazione multi-turno su questa API?
  3. Quale strategia NON è suggerita per evitare che le conversazioni lunghe riempiano la finestra di contesto?

Avanti