Décodeur de flux SSE pour LLM
Collez une réponse en streaming brute d’OpenAI, Anthropic, Gemini ou de toute API compatible OpenAI et récupérez le texte complet, les appels d’outils, le raisonnement et la consommation de tokens.
Entrée
Résultat
Le résultat apparaîtra ici.Quand un appel LLM en streaming se comporte mal, ce dont vous disposez en général, c’est d’un journal rempli de lignes data: — des centaines de petits fragments JSON pénibles à lire. Cet outil les rassemble. Il analyse le flux d’événements selon les règles WHATWG qu’implémentent openai-node (openai/openai-node, Apache-2.0) et le SDK d’Anthropic, reconnaît le format de chaque événement, et affiche la réponse reconstituée, les appels d’outils avec leurs arguments diffusés en morceaux recollés, la raison de fin, le modèle et la consommation de tokens.
Comment ça marche
- Il lit quatre formats : OpenAI Chat Completions et toutes les API qui le reprennent (DeepSeek, Qwen, Groq, vLLM, le /v1 d’Ollama), OpenAI Responses, Anthropic Messages et le streamGenerateContent de Gemini.
- Les fins de ligne CR, LF ou CRLF, les champs data sur plusieurs lignes, les commentaires comme : keep-alive et l’absence de ligne vide finale sont tous traités comme l’exige la norme.
- Le raisonnement — reasoning_content de DeepSeek, deltas thinking d’Anthropic, parties thought de Gemini, résumés de raisonnement d’OpenAI — est collecté à part et affiché au-dessus de la réponse lorsque vous l’activez.
- Les événements qui ne sont pas du JSON valide sont listés avec leur numéro de ligne au lieu d’interrompre le décodage, et un journal qui a perdu les lignes vides entre les événements est redécoupé en événements distincts.
Où vont vos données
Nulle part. Cet outil s’exécute entièrement dans votre navigateur : le texte collé est traité par la page, jamais transmis à un serveur ni consigné dans un journal.
Cet outil est gratuit et ne demande aucun compte. Ses résultats n’existent que dans la page ouverte et ne sont enregistrés nulle part.
Ce que ça coûte
Cet outil est gratuit, sans connexion ni points.
Questions fréquentes
- Comment capturer un flux brut ?
- Avec curl, ajoutez -N (pas de mise en tampon) à la requête et copiez ce qu’il affiche. Dans un navigateur, l’onglet Réseau des outils de développement propose une vue EventStream ou la réponse brute de la requête. Dans votre propre code, journalisez chaque ligne avant que votre SDK ne l’analyse.
- Pourquoi indique-t-il que le flux est incomplet ?
- Aucune raison de fin n’est arrivée et il n’y a eu ni [DONE] ni message_stop : la connexion a donc probablement été perdue, a expiré ou a été coupée par un proxy avant que le modèle ait terminé. Cherchez une erreur de flux dans la sortie, et vérifiez les délais d’expiration du proxy et du répartiteur de charge, qui coupent souvent les longs flux au bout de 60 secondes.
- Pourquoi la consommation de tokens manque-t-elle ?
- L’API Chat Completions d’OpenAI n’envoie usage dans un dernier chunk que si la requête définit stream_options: {"include_usage": true} ; beaucoup d’API compatibles font de même. Anthropic envoie usage dans message_start et message_delta, Gemini dans usageMetadata et l’API Responses dans response.completed ; ces valeurs sont donc affichées dès qu’elles sont présentes.
- Que se passe-t-il avec n > 1 ou plusieurs choices ?
- Seul le choice 0 est reconstitué. Les requêtes qui demandent plusieurs complétions dans un même flux les entremêlent par index, et les mélanger produirait un non-sens ; si vous avez besoin des autres, filtrez d’abord les lignes de l’autre index.
L’open source derrière
Cet outil est une implémentation autonome, sans bibliothèque tierce. openai/openai-node (Apache-2.0) fait le même travail sous forme de bibliothèque : pour l’intégrer à votre programme, commencez par là plutôt que d’appeler une page web.
openai/openai-nodeAussi appelé
- décodeur SSE
- parser server-sent events
- décoder réponse streaming OpenAI
- déboguer streaming LLM
- événements stream Anthropic
- sse decoder