Sortie en flux
Utiliser la sortie en flux sur 1折AI : séquence d'événements SSE native d'Anthropic, format de chunks compatible OpenAI, et comment gérer les interruptions de flux.
Pour les réponses longues, utilisez la sortie en flux ("stream": true) afin que le premier caractère apparaisse plus vite et que la requête soit moins susceptible d’être coupée par les réseaux intermédiaires en raison d’une requête unique prenant trop de temps. Les deux protocoles sont pris en charge, avec des formats correspondant respectivement aux formats officiels.
Natif Anthropic
Section intitulée « Natif Anthropic »Ajoutez "stream": true à la requête ; la réponse est en Server-Sent Events. Un flux normal suit cet ordre (d’après la documentation Streaming d’Anthropic ) :
| Événement | Signification |
|---|---|
message_start | Le message commence, avec le modèle et le usage initial |
content_block_start | Un bloc de contenu commence (texte, réflexion, tool_use) |
content_block_delta | Delta de contenu, le texte est dans delta.text |
content_block_stop | Ce bloc de contenu se termine |
message_delta | Mise à jour au niveau du message, avec stop_reason et le nombre final de tokens de sortie |
message_stop | L’ensemble du message se termine |
Les événements ping peuvent être intercalés entre les autres et peuvent être ignorés ; en cas d’erreur, vous recevrez un événement error.
curl -N https://1zheai.com/v1/messages \ -H "x-api-key: $ONEZHE_API_KEY" \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{"model":"claude-sonnet-5-5","max_tokens":128,"stream":true, "messages":[{"role":"user","content":"从一数到五"}]}'Lorsque vous utilisez un SDK, vous n’avez pas besoin d’analyser les événements vous-même ; voir l’exemple de flux dans le SDK Anthropic .
Compatible OpenAI
Section intitulée « Compatible OpenAI »Ajoutez "stream": true à /v1/chat/completions ; la réponse est des chunks sous la forme de data: {...}, le texte est dans choices[0].delta.content, et cela se termine par data: [DONE]. Voir le SDK OpenAI pour un exemple de SDK.
Le dernier chunk avant usage contient [DONE], et choices est un tableau vide. Il est également renvoyé si stream_options.include_usage n’est pas transmis. Flux complet testé le 2026-10-15 :
data: {"id":"msg_011Cg3ERqM8nN58LxLt7TVuG","object":"chat.completion.chunk","created":1792031230,"model":"claude-sonnet-4-6","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
data: {"id":"msg_011Cg3ERqM8nN58LxLt7TVuG","object":"chat.completion.chunk","created":1792031230,"model":"claude-sonnet-4-6","choices":[{"index":0,"delta":{"content":"ok"},"finish_reason":null}]}
data: {"id":"msg_011Cg3ERqM8nN58LxLt7TVuG","object":"chat.completion.chunk","created":1792031230,"model":"claude-sonnet-4-6","choices":[{"index":0,"delta":{"content":""},"finish_reason":"stop"}]}
data: {"id":"msg_011Cg3ERqM8nN58LxLt7TVuG","object":"chat.completion.chunk","created":1792031230,"model":"claude-sonnet-4-6","choices":[],"usage":{"prompt_tokens":370,"completion_tokens":4,"total_tokens":374}}
data: [DONE]Lors du traitement des chunks, vérifiez d’abord si choices est vide ; l’exemple sur la page du SDK OpenAI ci-dessus fait déjà cela.
Que faire lorsque le flux se rompt
Section intitulée « Que faire lorsque le flux se rompt »- Vérifiez d’abord s’il s’agit d’un proxy : désactivez le proxy et connectez-vous directement, puis réessayez.
- Le délai d’attente de lecture du client doit être plus long que le temps de génération du modèle ; augmentez le paramètre de délai d’attente pour les sorties longues.
- Lors de la réception de
overloaded_errordans un événementerror, attendez quelques secondes et réessayez ; voir Codes d’erreur et dépannage .
Facturation des déconnexions en cours de flux
Section intitulée « Facturation des déconnexions en cours de flux »Une requête déconnectée en cours de flux n’est pas entièrement gratuite ; elle est facturée en fonction des tokens de sortie générés avant la déconnexion, enregistrés dans le journal d’appel. Les tokens de sortie facturés peuvent être légèrement supérieurs à ce que le client a réellement reçu. Testé le 2026-10-15 : en demandant au modèle de compter de 1 à 600, lorsque le client s’est déconnecté à la 4e seconde, il avait reçu 188 lignes (environ 380 tokens de sortie), tandis que le journal d’appel enregistrait 750 tokens de sortie. Pour une longue sortie dont vous n’avez pas besoin, plutôt que de vous déconnecter en cours de flux, il vaut mieux définir max_tokens petit dès le départ.
