Public preview — Deze API is in public preview. Endpoints, schemas en limieten kunnen wijzigen vóór general availability.
API
Streaming
Hoe EU GPT responses streamt als Server-Sent Events en wanneer streamen de juiste keuze is.
EU GPT streamt responses standaard als Server-Sent Events (SSE). De SDK’s verbergen het wire-format, maar het helpt om te weten wat er op de lijn staat.
Wanneer streamen#
| Je wilt | Kies |
|---|---|
| Output renderen terwijl het model deze produceert (chat-UI’s, dashboards). | stream: true |
| De kortste end-to-end latency voor het eerste token. | stream: true |
Eén JSON-blob die je kunt JSON.parse-en of .json()-en. | stream: false |
| Backend batchjobs die geen gedeeltelijke output nodig hebben. | stream: false |
Streamen verlaagt perceived latency drastisch — de eerste text delta arriveert typisch 200–400 ms na de request, terwijl de volledige response seconden kan duren. Voor alles user-facing: stream.
Het wire-format#
De HTTP-response heeft Content-Type: text/event-stream. De body is een reeks events gescheiden door lege regels:
event: message
data: {"type":"response.created","sequence_number":0, ...}
event: message
data: {"type":"response.output_text.delta","sequence_number":1,"delta":"Hello"}
event: message
data: {"type":"response.output_text.delta","sequence_number":2,"delta":", world"}
event: message
data: {"type":"response.completed","sequence_number":3,"final_text":"Hello, world"}
Elke event-JSON heeft een type en een sequence_number. De volledige taxonomie van event-types staat in Streaming events.
Volgorde en gaten#
sequence_numberis monotonisch oplopend binnen één response. Skips komen nooit voor — een ontbrekend nummer is een bug, geen verwachte conditie.response.createdis altijd het eerste event.- Een terminal event —
response.completedoferror— sluit altijd de stream. - De connectie sluit (server-side) na het terminal event.
Buffering en proxies#
Sommige HTTP-proxies en load balancers bufferen responses, wat het hele punt van streamen ondermijnt. Als je applicatie achter een eigen proxy zit:
- Schakel response buffering uit op routes die
/v1/responsesforwarden. - Voor Nginx:
proxy_buffering off;enproxy_cache off;op die location. - Voor Cloudflare Workers: zet
cache: "no-store"en vermijdResponse-wrapping die de body opnieuw leest.
De EU GPT-edge buffert geen streams.
Server-side timeouts#
Er is geen harde server-side timeout voor één response, maar in de praktijk voltooien responses binnen enkele minuten. Als je 60 seconden geen events ontvangt, is het upstream-model waarschijnlijk vastgelopen — verbreek en retry met dezelfde prompt.
Voor langlopende generaties: geef de voorkeur aan smallere prompts of breek het werk in kleinere calls, in plaats van te rekenen op één enorme stream.
De stream parsen#
Je hoeft SSE bijna nooit met de hand te parsen:
- JavaScript: gebruik de
AsyncIterable-interface van deopenai-SDK. - Python: gebruik de
stream=True-modus van deopenai-SDK, die geparseerde events yieldt. - Andere talen: elke standaard SSE-client werkt. De
data:-payload is een JSON-object.
Voor hand-gerolde parsers: zie Streams afhandelen.