Saltearse al contenido

Streaming

Pasa "stream": true para recibir la respuesta por partes, a medida que se genera. El formato es Server-Sent Events (SSE), igual que en OpenAI.

Ventana de terminal
curl https://api.semantara.com/v1/chat/completions \
-H "Authorization: Bearer px_live_..." \
-H "Content-Type: application/json" \
-d '{
"model": "proxy/auto",
"stream": true,
"messages": [ { "role": "user", "content": "Cuenta hasta cinco." } ]
}'

Cada evento es una línea data: con un fragmento incremental en choices[0].delta:

data: {"id":"chatcmpl-...","choices":[{"delta":{"content":"1"},"index":0}]}
data: {"id":"chatcmpl-...","choices":[{"delta":{"content":", 2"},"index":0}]}
data: [DONE]

El stream termina con data: [DONE]. Si usas el SDK de OpenAI, esto lo maneja por ti al iterar sobre la respuesta.

Conteo de tokens en streaming

En streaming, el usage (conteo de tokens) no se entrega hoy al cliente. El parámetro stream_options tampoco está soportado por ahora: se descarta. Si necesitas el conteo de tokens, usa el modo sin streaming, donde usage sí viene en la respuesta. Ver Formato de la respuesta.

Errores durante el streaming

Si un error ocurre después de que el stream ya abrió, no llega como un error HTTP normal: llega como un evento SSE error con el sobre estándar de OpenAI, y el stream termina sin un [DONE]:

event: error
data: {"error":{"message":"...","type":"...","code":"LLM_001"}}

Trata un evento error como una terminación con fallo. Ver Códigos de error.

Failover en streaming

El failover automático entre tu proveedor principal y el de respaldo aplica a peticiones sin streaming. En streaming, la petición usa solo el proveedor principal; si falla, recibes el error (como arriba) y debes reintentar desde tu aplicación.