Inicio → Ayuda

Falta el uso de tokens en una respuesta en streaming

El streaming omite el usage por defecto. Pon stream_options: {"include_usage": true} y los recuentos llegan en un fragmento extra al final del todo, tras el último fragmento de contenido.

Lo que ves

Por qué ocurre

El uso no se puede conocer hasta que termina la generación, así que no hay nada que poner en los primeros fragmentos. En lugar de enviar un marcador de posición, la API deja el campo en null y añade un fragmento final cuando ya existen los números.

Ese fragmento final tiene un array choices vacío. El código que deja de leer en cuanto ve finish_reason, o que se salta los fragmentos sin delta, descarta justo el fragmento que necesita.

No todas las implementaciones compatibles con OpenAI admiten la opción. Donde falta, puedes estimar localmente o leer las cifras fiables en el propio registro del proveedor.

Comprueba si es esta la causa

Pide el usage y mira la última línea del 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

El fragmento anterior a [DONE] debería llevar un objeto usage relleno con un array choices vacío.

Cómo solucionarlo

  1. Pide la opción explícitamenteAñade stream_options con include_usage en true. Sin ello el campo sigue en null por mucho que leas el stream.
  2. Sigue leyendo hasta [DONE]No salgas del bucle con finish_reason. El fragmento de usage llega después.
  3. Trata los recuentos locales como estimacionesLos tokenizadores del lado del cliente se desvían de lo que cobra el proveedor, sobre todo con la entrada en caché. Concilia con el registro del proveedor, no con tu propio contador.
APICLAN registra cada llamada en el servidor, con o sin streaming: hora, modelo, entrada, salida, lectura de caché, escritura en caché y el importe exacto descontado. Ese registro es la cifra de referencia para conciliar.

Relacionado

Unexpected token '<' al llamar a una API compatible con OpenAI401 invalid API key: cuando la clave parece correcta pero sigue fallando

Revisado por última vez el 2026-10-01. Escrito a partir de problemas diagnosticados en una pasarela compatible con OpenAI en producción, no recopilado de otras webs.