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.
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: errordata: {"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.