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​