---
title: "Sortie en flux"
description: "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."
headingIds: {"Natif Anthropic":"section-1","Compatible OpenAI":"section-2","Que faire lorsque le flux se rompt":"section-3","Facturation des déconnexions en cours de flux":"section-4"}
---

<aside className="docs-publication" data-pagefind-ignore>

Documentation maintenue par [1ZheAI](https://1zheai.com/en/editorial/#publisher). [Sources et corrections](https://1zheai.com/en/editorial/).

Vous avez trouvé une erreur ? [Contactez l'assistance](mailto:support@1zheai.com) en indiquant l'adresse de la page et une description. N'envoyez pas de clés API ni d'identifiants de compte.

</aside>
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

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 ](https://platform.claude.com/docs/en/build-with-claude/streaming)) :

| É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`.

```bash
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 ](/fr/docs/quickstart-anthropic-sdk/).

## 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 ](/fr/docs/quickstart-openai-sdk/) 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 :

```text
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

- 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_error` dans un événement `error`, attendez quelques secondes et réessayez ; voir [Codes d'erreur et dépannage ](/fr/docs/troubleshooting/).

## 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.
