Server-Side Event (SSE) Streaming
Server-Sent Events (SSE) Streaming ist eine Streaming-Technik, bei der ein Server über eine einzige HTTP-Verbindung fortlaufend Updates an den Browser oder Client sendet – typischerweise als Text-Events. Im KI-Kontext wird SSE häufig genutzt, um die Ausgabe eines Large Language Model (LLM) tokenweise in Echtzeit zu übertragen, sodass Antworten „live“ erscheinen, statt erst nach vollständiger Berechnung.
Was bedeutet SSE Streaming?
SSE steht für Server-Sent Events. Gemeint ist ein standardisiertes, leichtgewichtiges Push-Verfahren über HTTP, bei dem der Client eine Verbindung öffnet und der Server anschließend kontinuierlich Daten in kleinen Häppchen (Events) sendet. Im Gegensatz zu klassischem „Request/Response“ bleibt die Verbindung offen und liefert fortlaufend neue Inhalte.
Wie funktioniert Server-Side Event (SSE) Streaming?
- 1) Client stellt Anfrage: Der Client ruft einen Endpoint auf (z. B.
/stream) und signalisiert „ich kann SSE“ (üblich:Accept: text/event-stream). - 2) Server hält Verbindung offen: Der Server antwortet nicht mit einem finalen JSON, sondern startet einen Event-Stream (
Content-Type: text/event-stream). - 3) Server sendet Events: Daten werden als einzelne Events übertragen (z. B.
data: ...), getrennt durch Leerzeilen. So kann der Client inkrementell rendern. - 4) Reconnect & Robustheit: SSE ist auf „lange Verbindungen“ ausgelegt; Clients können automatisch neu verbinden (inkl. optionaler
id-Felder für Resume). - 5) Stream-Ende: Wenn die KI fertig ist, sendet der Server ein „Done“-Signal oder schließt die Verbindung sauber.
Warum ist SSE Streaming wichtig für KI-Apps?
Bei Chat-Interfaces (z. B. ChatGPT-ähnliche UIs) ist wahrgenommene Geschwindigkeit entscheidend. Token-Streaming via SSE reduziert die gefühlte Wartezeit, weil Nutzer sofort Text sehen. Das ist besonders relevant bei längeren Antworten, bei RAG (Retrieval-Augmented Generation)-Pipelines oder wenn Tools/Agenten eingebunden sind (z. B. Function Calling / Tool Use und AI Agents (KI-Agenten)) und die Verarbeitung mehrere Sekunden dauert.
Typische Use Cases & Beispiele
- Live-Token-Ausgabe: Ein LLM generiert Tokens, der Server streamt sie sofort an das Frontend („Tippeffekt“).
- Status-Updates in Workflows: In Automationen mit n8n oder Automatisierung (Automation) kann SSE Zwischenschritte ausgeben („Tool aufgerufen“, „Dokumente abgerufen“, „Antwort wird formuliert“).
- Observability-nahe Meldungen: Fortschritt, Latenzen oder Teilergebnisse können während der Inferenz sichtbar gemacht werden (passend zu Latency (Latenz) & Throughput).
SSE vs. WebSockets (kurz)
SSE ist einseitig (Server → Client) und läuft über normales HTTP, was es oft einfacher durch Proxies/CDNs macht. WebSockets sind bidirektional und besser, wenn Client und Server ständig in beide Richtungen kommunizieren müssen. Für reine Token-Ausgabe ist SSE häufig die pragmatische Wahl.
Wichtige Hinweise (Praxis)
- Headers & Buffering: Reverse Proxies können Streams puffern; für echtes Streaming muss Buffering häufig deaktiviert werden.
- Fehlerbehandlung: Sinnvoll sind klare Event-Typen (z. B.
event: token,event: error,event: done). - Datenschutz: Wenn Inhalte personenbezogene Daten enthalten, gelten Anforderungen aus Datenschutz (DSGVO/GDPR) & KI.
Unterm Strich ist SSE Streaming eine robuste, leicht implementierbare Methode, um KI-Ausgaben in Echtzeit über HTTP zu liefern – ideal für moderne Chat- und Agenten-Frontends, bei denen Nutzer sofort Feedback erwarten.