AssistantMessage complets après que Claude ait terminé de générer chaque réponse. Pour recevoir des mises à jour incrémentielles à mesure que le texte et les appels d’outils sont générés, activez la diffusion de messages partiels en définissant include_partial_messages (Python) ou includePartialMessages (TypeScript) sur true dans vos options.
Activer la diffusion de sortie
Pour activer la diffusion, définissezinclude_partial_messages (Python) ou includePartialMessages (TypeScript) sur true dans vos options. Cela fait que le SDK produit des messages StreamEvent contenant les événements API bruts à mesure qu’ils arrivent, en plus des AssistantMessage et ResultMessage habituels.
Votre code doit alors :
- Vérifier le type de chaque message pour distinguer
StreamEventdes autres types de messages - Pour
StreamEvent, extraire le champeventet vérifier sontype - Rechercher les événements
content_block_deltaoùdelta.typeesttext_delta, qui contiennent les fragments de texte réels
StreamEvent, puis pour content_block_delta, puis pour text_delta :
Référence StreamEvent
Lorsque les messages partiels sont activés, vous recevez les événements de diffusion bruts de l’API Claude enveloppés dans un objet. Le type a des noms différents dans chaque SDK :- Python :
StreamEvent(importer depuisclaude_agent_sdk.types) - TypeScript :
SDKPartialAssistantMessageavectype: 'stream_event'
event contient l’événement de diffusion brut de l’API Claude. Les types d’événements courants incluent :
| Type d’événement | Description |
|---|---|
message_start | Début d’un nouveau message |
content_block_start | Début d’un nouveau bloc de contenu (texte ou utilisation d’outil) |
content_block_delta | Mise à jour incrémentielles du contenu |
content_block_stop | Fin d’un bloc de contenu |
message_delta | Mises à jour au niveau du message (raison d’arrêt, utilisation) |
message_stop | Fin du message |
Flux de messages
Avec les messages partiels activés, vous recevez les messages dans cet ordre :include_partial_messages en Python, includePartialMessages en TypeScript), vous recevez tous les types de messages sauf StreamEvent. Les types courants incluent SystemMessage (initialisation de session), AssistantMessage (réponses complètes), ResultMessage (résultat final), et un message de limite compact indiquant quand l’historique de conversation a été compacté (SDKCompactBoundaryMessage en TypeScript ; SystemMessage avec le sous-type "compact_boundary" en Python).
Diffuser les réponses texte
Pour afficher le texte à mesure qu’il est généré, recherchez les événementscontent_block_delta où delta.type est text_delta. Ceux-ci contiennent les fragments de texte incrémentiels. L’exemple ci-dessous affiche chaque fragment à mesure qu’il arrive :
Diffuser les appels d’outils
Les appels d’outils sont également diffusés de manière incrémentielles. Vous pouvez suivre quand les outils commencent, recevoir leur entrée à mesure qu’elle est générée, et voir quand ils se terminent. L’exemple ci-dessous suit l’outil actuellement appelé et accumule l’entrée JSON à mesure qu’elle est diffusée. Il utilise trois types d’événements :content_block_start: l’outil commencecontent_block_deltaavecinput_json_delta: les fragments d’entrée arriventcontent_block_stop: l’appel d’outil est complet
Construire une interface utilisateur de diffusion
Cet exemple combine la diffusion de texte et d’outils dans une interface utilisateur cohésive. Il suit si l’agent exécute actuellement un outil (en utilisant un drapeauin_tool) pour afficher des indicateurs de statut comme [Using Read...] pendant que les outils s’exécutent. Le texte se diffuse normalement quand il n’y a pas d’outil, et la fin de l’outil déclenche un message « done ». Ce modèle est utile pour les interfaces de chat qui doivent afficher la progression pendant les tâches d’agent multi-étapes.
Limitations connues
- Sortie structurée : le résultat JSON n’apparaît que dans le
ResultMessage.structured_outputfinal, pas comme des deltas de diffusion. Consultez les sorties structurées pour plus de détails.
Étapes suivantes
Maintenant que vous pouvez diffuser le texte et les appels d’outils en temps réel, explorez ces sujets connexes :- Requêtes interactives ou ponctuelles : choisissez entre les modes d’entrée pour votre cas d’usage
- Sorties structurées : obtenez des réponses JSON typées de l’agent
- Permissions : contrôlez les outils que l’agent peut utiliser