Aller au contenu principal

Streaming et conversations multi-tours

Intermédiaire
What you'll learn
  • Diffuser les réponses token par token pour que les utilisateurs voient la sortie immédiatement
  • Comprendre pourquoi l'API est sans état et comment porter vous-même l'historique de conversation
  • Poursuivre une conversation multi-tours en renvoyant tout l'échange précédent
  • Empêcher les longues conversations de faire exploser la fenêtre de contexte et le coût

Construire des expériences de type chat sur l'API se résume à deux réalités pratiques : streamer pour que les utilisateurs voient la sortie immédiatement, et gérer l'historique vous-même parce que l'API est sans état. Maîtrisez les deux et votre UX de chat semblera rapide et se souviendra de tout.

Streaming

Sans streaming, l'utilisateur attend toute la réponse. Avec le streaming, les tokens arrivent au fur et à mesure de leur génération — une vitesse perçue bien meilleure.

Pro tip
  • Utilisez l'assistant de streaming du SDK plutôt que d'analyser les événements bruts à la main — il gère pour vous le cycle de vie des événements.
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-tours : c'est vous qui portez l'historique

L'API n'a aucune mémoire entre les appels (pourquoi). Pour poursuivre une conversation, renvoyez tout l'échange précédent à chaque fois.

Guided walkthrough1 of 4
  1. Envoyez le premier message utilisateur dans la liste 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

Les longues conversations remplissent la fenêtre

À mesure que l'historique grandit, il consomme la fenêtre de contexte et le coût augmente. Stratégies pour le maîtriser :

  • Résumez/compactez les tours plus anciens en un court récapitulatif que vous reportez.
  • Élaguez les tours antérieurs non pertinents.
  • Combinez avec la mise en cache des prompts pour éviter de repayer un préfixe stable.
Watch out
  • Chaque appel renvoie tout l'historique — les longues conversations coûtent plus cher et peuvent finir par dépasser la fenêtre de contexte si vous ne compactez ni n'élaguez jamais.
Key takeaways
  • Streamez les tokens pour une vitesse perçue rapide ; l'assistant du SDK gère le cycle de vie des événements.
  • L'API est sans état — elle n'a aucune mémoire entre les appels.
  • Poursuivez une conversation en ajoutant chaque tour et en renvoyant la liste messages complète.
  • Compactez, élaguez et mettez en cache pour contrôler le coût et la taille des longues conversations.

Testez-vous

0/3
  1. Pourquoi le streaming améliore-t-il l'expérience de chat ?
  2. Comment poursuivre une conversation multi-tours sur cette API ?
  3. Quelle stratégie n'est PAS suggérée pour empêcher les longues conversations de remplir la fenêtre de contexte ?

Ensuite