Le streaming : pourquoi les réponses apparaissent mot par mot
Claude Code, ChatGPT & Co. affichent le plus souvent leur réponse morceau par morceau plutôt que d'un seul coup – le streaming ne change rien à la qualité ni au coût.
Ce qu'est le streaming
Sans streaming, tu attends que le modèle ait fini de produire la réponse complète, et tu vois alors tout d'un coup. Avec le streaming, l'API envoie immédiatement chaque fragment de mot (token) généré, dès qu'il est prêt – tu vois la réponse apparaître en direct, un peu comme si tu regardais quelqu'un taper.
Pourquoi les outils font ça
Le streaming ne change rien à la rapidité globale avec laquelle le modèle termine – le temps d'attente ressenti diminue tout de même nettement, parce que tu vois immédiatement les premiers mots au lieu d'un espace vide. De plus, une réponse peut être interrompue tôt si le début part déjà visiblement dans la mauvaise direction, au lieu d'attendre la génération complète.
La technique derrière
Le mécanisme habituel pour cela s'appelle Server-Sent Events (SSE) – une technique web simple et établie, où le serveur utilise une connexion ouverte pour envoyer en continu de petits paquets de données au client. L'API de Claude comme celle d'OpenAI proposent le streaming via SSE, activé par un simple paramètre (stream: true) dans la requête.
Ce que le streaming NE change PAS
Le streaming n'influence ni la qualité de la réponse ni son coût total – la facturation se fait toujours au nombre de tokens, qu'ils arrivent un par un ou groupés. C'est une pure technique d'affichage pour une meilleure expérience ressentie, pas un changement de contenu.
EXEMPLE
curl -N https://api.anthropic.com/v1/messages \ -H "anthropic-version: 2023-06-01" \ -d '{"model":"claude-sonnet-5","stream":true,"max_tokens":100,"messages":[{"role":"user","content":"Compte jusqu'à 5"}]}' # La sortie arrive comme une suite d'événements SSE (event: content_block_delta, ...) au lieu d'une seule réponse complète.
🛠️ EXERCICE — À TOI DE JOUER
Appelle l'API Claude une fois avec et une fois sans streaming, et observe la différence directement dans le terminal.
- Envoie une requête avec stream: false et attends la réponse complète.
- Envoie la même requête avec stream: true (par ex. via curl -N) et observe comment la réponse arrive par fragments.
- Compare la durée totale jusqu'au dernier caractère pour les deux variantes.
✅ AUTO-VÉRIFICATION
- ☐ Le temps d'attente ressenti était-il plus court avec le streaming, alors que la durée totale était similaire ?
- ☐ As-tu pu identifier des événements SSE individuels (event: ...) dans le format brut streamé ?
QUIZ RAPIDE
Qu'est-ce que le streaming change dans une réponse d'API ?
SOURCES
- Documentation Claude : Streaming Messages ↗ platform.claude.com
- Documentation OpenAI : Streaming API Responses ↗ developers.openai.com