EU GPT logo
EU GPT

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 wiltKies
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_number is monotonisch oplopend binnen één response. Skips komen nooit voor — een ontbrekend nummer is een bug, geen verwachte conditie.
  • response.created is altijd het eerste event.
  • Een terminal event — response.completed of error — 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/responses forwarden.
  • Voor Nginx: proxy_buffering off; en proxy_cache off; op die location.
  • Voor Cloudflare Workers: zet cache: "no-store" en vermijd Response-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 de openai-SDK.
  • Python: gebruik de stream=True-modus van de openai-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.