Mettez stream: true pour recevoir des événements diffusés par le serveur, au format OpenAI. Chaque événement est une ligne data: portant un bloc JSON, et le flux se termine par data: [DONE].
curl -N -X POST https://autonomousrelay.com/v1/chat/completions \
-H "Authorization: Bearer $AUTONOMOUSRELAY_API_KEY" \
-H 'content-type: application/json' \
-d '{
"model": "anthropic/claude-sonnet-5",
"messages": [{"role": "user", "content": "Compte jusqu’à trois"}],
"stream": true
}'data: {"choices":[{"delta":{"content":"Un"}}]}
data: {"choices":[{"delta":{"content":", deux"}}]}
data: {"usage":{"prompt_tokens":12,"completion_tokens":5}}
data: [DONE]Trois pièges classiques
Le décompte arrive à la fin
Un dernier bloc porte usage et peut ne contenir aucun choices. Si votre analyseur suppose que chaque bloc contient un delta, il lèvera une exception sur celui-là même qui vous indique le coût de la requête.
Les lignes de commentaire sont des signaux de maintien
Une ligne commençant par : est un commentaire SSE envoyé pour garder la connexion ouverte. Ignorez-la plutôt que de l’analyser.
Annuler n’arrête pas toujours la facturation
Le fait qu’interrompre la connexion arrête ou non la facturation en amont dépend du fournisseur. OpenAI le respecte ; plusieurs autres non, et facturent la génération complète. Nous le divulguons pour chaque point d’accès plutôt que de laisser croire à une garantie que nous ne pouvons pas donner.