usage is null on every chunk of a streamed responseToken counts appear for non-streamed calls and never for streamed onesYour own cost tracking reads zero while the provider bills normallyL'utilizzo non si può conoscere finché la generazione non termina, quindi non c'è nulla da mettere nei primi frammenti. Invece di inviare un segnaposto, l'API lascia il campo a null e aggiunge un frammento finale quando i numeri esistono.
Quel frammento finale ha un array choices vuoto. Il codice che smette di leggere appena vede finish_reason, o che salta i frammenti senza delta, scarta proprio il frammento che gli serve.
Non tutte le implementazioni compatibili con OpenAI supportano l'opzione. Dove manca, puoi stimare in locale oppure leggere i numeri autorevoli nel log del provider.
Richiedi l'usage e guarda l'ultima riga dello stream:
curl -N 'YOUR_BASE_URL/chat/completions' \
-H 'Authorization: Bearer YOUR_KEY' -H 'Content-Type: application/json' \
-d '{"model":"MODEL","stream":true,"stream_options":{"include_usage":true},"messages":[{"role":"user","content":"hi"}]}' | tail -3
Il frammento che precede [DONE] dovrebbe contenere un oggetto usage compilato con un array choices vuoto.
Ultima verifica: 2026-10-01. Scritto a partire da problemi diagnosticati su un gateway compatibile con OpenAI in produzione, non raccolto da altri siti.