Aller au contenu
Site principal Actualités Console

Réponse en streaming et non streaming

Cette page explique le traitement des réponses pour les appels natifs de Claude (/v1/messages), et la méthode d’intégration est présentée dans Appel natif de Claude - Bases

Réponse non streaming

{
"id": "msg_xxx",
"type": "message",
"role": "assistant",
"content": [{ "type": "text", "text": "……" }],
"stop_reason": "end_turn",
"usage": { "input_tokens": 24, "output_tokens": 180 }
}
  • Le corps du texte se trouve dans le tableau content, organisé par blocs (text / tool_use / thinking), itérer bloc par bloc puis concaténer ;
  • stop_reason : end_turn fin normale, max_tokens troncation, tool_use demande d’appel d’outil.

Réponse en streaming (SSE)

Ajoutez "stream": true à la requête, les événements sont émis par type :

ÉvénementSignification
message_startDébut de la session, inclut le nombre de jetons d’entrée
content_block_startDébut d’un bloc de contenu (text/tool_use/thinking)
content_block_deltaIncrément du corps du texte, il suffit d’assembler delta.text
content_block_stopFin du bloc de contenu actuel
message_deltaMétadonnées de fin (stop_reason, nombre de jetons de sortie)
message_stopFin complète
with client.messages.stream(
model="claude-sonnet-5", max_tokens=1024,
messages=[{"role": "user", "content": "Écris un court poème sur la mer"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)

Remarques

  • Avec le SDK officiel Anthropic, ces événements sont déjà encapsulés ; le traitement événement par événement n’est nécessaire que pour une implémentation SSE manuelle ;
  • L’utilisation des jetons se base sur message_start (entrée) + message_delta (sortie), conformément à la facturation ;
  • Pour l’analyse du bloc thinking du mode de réflexion, voir Mode de réflexion