Aller au contenu principal

Le streaming des reponses

Les reponses de Claude peuvent prendre 10 a 30 secondes a generer. Le streaming permet d’afficher le texte au fur et a mesure de sa generation, evitant de laisser l’utilisateur face a un ecran de chargement.

Types d’evenements

Quand le streaming est active, Claude envoie plusieurs types d’evenements :

  • MessageStart : debut d’un nouveau message
  • ContentBlockStart : debut d’un bloc de contenu
  • ContentBlockDelta : fragments du texte genere
  • ContentBlockStop : fin du bloc de contenu
  • MessageDelta : fin du message courant
  • MessageStop : plus rien a envoyer

Implementation basique

stream = client.messages.create(
    model=model,
    max_tokens=1000,
    messages=messages,
    stream=True
)

for event in stream:
    print(event)

Interface simplifiee

Le SDK propose une interface qui extrait directement le texte :

with client.messages.stream(
    model=model,
    max_tokens=1000,
    messages=messages
) as stream:
    for text in stream.text_stream:
        print(text, end="")

Recuperer le message final

Apres le streaming, vous pouvez obtenir le message complet pour le stockage :

with client.messages.stream(
    model=model,
    max_tokens=1000,
    messages=messages
) as stream:
    for text in stream.text_stream:
        pass  # Afficher cote client en production

    final_message = stream.get_final_message()

En production, les fragments sont transmis au client via WebSockets ou Server-Sent Events pour un affichage en temps reel.