Home → Assistenza

Utilizzo dei token assente in una risposta in streaming

Lo streaming omette l'usage per impostazione predefinita. Imposta stream_options: {"include_usage": true} e i conteggi arrivano in un frammento aggiuntivo alla fine, dopo l'ultimo frammento di contenuto.

Cosa vedi

Perché succede

L'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.

Verifica se la causa è questa

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.

Come risolvere

  1. Richiedi l'opzione esplicitamenteAggiungi stream_options con include_usage impostato a true. Senza, il campo resta null comunque tu legga lo stream.
  2. Continua a leggere fino a [DONE]Non uscire dal ciclo su finish_reason. Il frammento di usage arriva dopo.
  3. Considera i conteggi locali come stimeI tokenizer lato client si discostano da ciò che addebita il provider, soprattutto con l'input in cache. Riconcilia con il log del provider, non con il tuo contatore.
APICLAN registra ogni chiamata lato server, con o senza streaming: orario, modello, input, output, lettura dalla cache, scrittura in cache e l'importo esatto detratto. Quel log è il numero di riferimento per la riconciliazione.

Articoli correlati

Unexpected token '<' quando chiami un'API compatibile con OpenAI401 invalid API key: quando la chiave sembra giusta ma continua a fallire

Ultima verifica: 2026-10-01. Scritto a partire da problemi diagnosticati su un gateway compatibile con OpenAI in produzione, non raccolto da altri siti.