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_turnfin normale,max_tokenstroncation,tool_usedemande d’appel d’outil.
Réponse en streaming (SSE)
Ajoutez "stream": true à la requête, les événements sont émis par type :
| Événement | Signification |
|---|---|
message_start | Début de la session, inclut le nombre de jetons d’entrée |
content_block_start | Début d’un bloc de contenu (text/tool_use/thinking) |
content_block_delta | Incrément du corps du texte, il suffit d’assembler delta.text |
content_block_stop | Fin du bloc de contenu actuel |
message_delta | Métadonnées de fin (stop_reason, nombre de jetons de sortie) |
message_stop | Fin 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
thinkingdu mode de réflexion, voir Mode de réflexion。