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.