---
title: "Streaming mit Server-Sent Events · LLM-API aus der EU"
description: "Streamen Sie Tokens offener Modelle während der Generierung, mit Server-Sent Events im OpenAI- und Anthropic-Format. Beispiele, Chunk-Format, Fehler."
canonical: "https://inference.eu/de/api/streaming/"
language: "de"
---

Anleitungen · Streaming

# LLM-Antworten mit Server-Sent Events streamen

Beim Streaming erhalten Sie die Antwort des Modells Token für Token, während sie entsteht, statt erst am Ende. Nutzer sehen sofort Text, lange Antworten wirken schneller, und Sie können die Generierung vorzeitig beenden. Die inference.eu API streamt im OpenAI-Format für Chat Completions und Responses und im Anthropic-Format für Messages.

[Vertrieb kontaktieren](https://inference.eu/de/kontakt/)[Beispielanfrage](#example)

1.  01API-Format: OpenAI und Anthropic
2.  02Rechenzentren in der EU
3.  03Durch einen AV-Vertrag abgedeckt

stream.py

```
import os
from openai import OpenAI

client = OpenAI(base_url="https://api.inference.eu/v1", api_key=os.environ["INFERENCE_EU_API_KEY"])

stream = client.chat.completions.create(
    model="gpt-oss-120b",
    messages=[{"role": "user", "content": "Explain the difference between a GmbH and an AG in five sentences."}],
    stream=True,
    stream_options={"include_usage": True},
)

for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)
    if chunk.usage:
        print(f"\n\n{chunk.usage.total_tokens} tokens")
```

## So funktioniert Streaming

Setzen Sie in der Anfrage `stream` auf `true`. Die API hält die HTTP-Verbindung offen und sendet Server-Sent Events: Zeilen, die mit `data:` beginnen und ein JSON-Objekt enthalten. Bei Chat Completions ist jedes Objekt ein `chat.completion.chunk`, dessen `choices[0].delta` das neue Textstück in `content` trägt. Der Stream endet mit der Zeile `data: [DONE]`.

Die offiziellen SDKs übernehmen das Parsen. In Python iterieren Sie über den zurückgegebenen Stream, in JavaScript nutzen Sie `for await`. Rufen Sie die API mit einem eigenen HTTP-Client auf, lesen Sie den Antwortkörper zeilenweise, überspringen leere Zeilen und Kommentare und parsen jede `data:`\-Nutzlast als JSON.

## Verbrauch, Abbruchgründe und Tool Calls

Standardmäßig enthalten gestreamte Chunks keinen Tokenverbrauch. Mit `stream_options: {"include_usage": true}` trägt der letzte Chunk vor `[DONE]` ein Objekt `usage` und ein leeres Array `choices`. Deshalb prüft das Beispiel `chunk.choices`, bevor es darauf zugreift.

Der Chunk, der die Antwort beendet, enthält einen `finish_reason` wie `stop` oder `length`. Auch Tool Calls werden gestreamt: `delta.tool_calls` kommt in Stücken, zuerst der Funktionsname, dann die JSON-Argumente verteilt auf mehrere Chunks. Fügen Sie die Argument-Strings pro `index` zusammen und parsen Sie sie erst, wenn `finish_reason` `tool_calls` lautet. Reasoning-Modelle streamen ihr Nachdenken unter Umständen vorab in einem eigenen Feld.

## Events bei Responses und Anthropic Messages

Die Responses API streamt typisierte Events statt Chunks. Text kommt in Events vom Typ `response.output_text.delta`, Tool Calls und andere Ausgabeelemente haben eigene Events, und `response.completed` liefert das fertige Antwortobjekt samt Verbrauch. Reagieren Sie auf die Typen, die Sie brauchen, und ignorieren Sie den Rest.

Der Messages-Endpunkt nutzt die Abfolge von Anthropic: `message_start`, dann `content_block_start`, eine Reihe von `content_block_delta`\-Events mit `text_delta` oder `input_json_delta`, `content_block_stop`, ein `message_delta` mit `stop_reason` und Verbrauch und zuletzt `message_stop`. Die Anthropic-SDKs bieten Hilfen wie `text_stream`, die nur den Text liefern.

## Fehler, Timeouts und Proxys

Fehler vor Beginn der Generierung, etwa ein falscher Schlüssel oder ein unbekanntes Modell, kommen als normaler HTTP-Fehler ohne Stream. Fehler während der Generierung erscheinen als Fehler-Event im Stream, danach schließt sich die Verbindung; Ihre Schleife sollte das abfangen und über eine Wiederholung entscheiden.

Proxys und Load Balancer puffern Antworten manchmal, dann wird aus dem Stream ein später Textblock. Schalten Sie Pufferung für diese Routen ab, bei nginx etwa mit `X-Accel-Buffering: no`, und setzen Sie Leerlauf-Timeouts länger als die Pausen zwischen Tokens bei langsamen Reasoning-Modellen. Schließt ein Nutzer die Seite, brechen Sie die Anfrage ab, damit die Generierung endet.

## Streaming

Kategorie

Anleitungen

API-Format

OpenAI und Anthropic

Base URL

api.inference.eu/v1

Verarbeitung

Rechenzentren in der EU

Training mit Ihren Daten

Nie

## Streaming: häufige Fragen

Die Fragen, die uns Einkauf, Entwicklung und Rechtsabteilungen am häufigsten stellen. Etwas fehlt? Fragen Sie uns direkt.

Setzen Sie \`stream\` auf \`true\` in einer Anfrage an Chat Completions, Responses oder Messages. Die API liefert während der Generierung Server-Sent Events. Mit dem OpenAI- oder Anthropic-SDK iterieren Sie über das zurückgegebene Stream-Objekt und geben jedes Textstück sofort aus oder leiten es weiter.

Bei Chat Completions ergänzen Sie \`stream\_options: {"include\_usage": true}\`. Der letzte Chunk vor \`data: \[DONE\]\` enthält dann ein Objekt \`usage\` mit Prompt- und Completion-Tokens sowie eine leere Liste \`choices\`. Responses und Messages liefern den Verbrauch automatisch in ihren abschließenden Events.

Ja. Namen und Argumente von Tool Calls kommen stückweise in \`delta.tool\_calls\`. Sammeln Sie die Argumentfragmente pro \`index\`, fügen Sie sie zu einem String zusammen und parsen Sie das JSON, sobald \`finish\_reason\` \`tool\_calls\` lautet. Dann führen Sie Ihre Funktion aus und senden das Ergebnis wie gewohnt zurück.

Das Modell erzeugt in beiden Fällen dieselben Tokens, der Gesamtaufwand ist gleich. Streaming verändert nur, wann Sie sie erhalten: Die ersten Wörter erscheinen fast sofort statt nach der vollständigen Antwort. Abgerechnet wird nach Tokens, unabhängig davon, ob Sie streamen.

Irgendetwas zwischen API und Nutzer puffert die Antwort, meist ein Reverse Proxy, eine Serverless-Plattform oder eine Komprimierungs-Middleware. Schalten Sie Pufferung und Komprimierung für die Streaming-Route ab, leeren Sie den Puffer nach jedem Schreiben und sorgen Sie dafür, dass Ihr Server jedes Event sofort weiterreicht.

Schließen Sie die Verbindung oder verlassen Sie die Schleife und schließen Sie das Stream-Objekt. Die Generierung stoppt kurz darauf, abgerechnet werden die bis dahin erzeugten Tokens. In einer Web-App brechen Sie die Anfrage ab, wenn der Nutzer die Seite verlässt oder auf Stopp klickt.

Rufen Sie die API nicht mit Ihrem geheimen Schlüssel aus dem Browser auf. Streamen Sie stattdessen von Ihrem Server und leiten Sie die Events per Server-Sent Events, gestreamter Fetch-Antwort oder WebSockets an den Browser weiter. Frameworks wie das Vercel AI SDK übernehmen das für Sie.

Ja, mit den Event-Namen von Anthropic. Anfragen an \`/v1/messages\` mit \`stream: true\` liefern \`message\_start\`, \`content\_block\_delta\` und die übrigen Standard-Events. Die Anthropic-SDKs und Werkzeuge wie Claude Code streamen daher genau wie gewohnt.

[Frage stellen](https://inference.eu/de/kontakt/)

## Verwandte Seiten

[API-Überblick](https://inference.eu/de/api/)

-   [Chat completionsSenden Sie Chat-Nachrichten im OpenAI-Format an Open-Weight-Modelle. Verarbeitung in Rechenzentren in der EU, keine Nutzung Ihrer Daten für Training.Endpunkte](https://inference.eu/de/api/chat-completions/)
-   [ResponsesNutzen Sie das Format der OpenAI Responses API mit Open-Weight-Modellen auf inference.eu. Typisierte Ausgaben, eingebaute Werkzeuge, Verarbeitung in der EU.Endpunkte](https://inference.eu/de/api/responses/)
-   [Messages (Anthropic format)Rufen Sie Open-Weight-Modelle im Anthropic-Messages-Format auf inference.eu auf. Kompatibel mit Anthropic-SDKs und Claude Code, Verarbeitung in der EU.Endpunkte](https://inference.eu/de/api/messages/)
-   [Tool callingLassen Sie offene Modelle Ihre Funktionen und APIs aufrufen, mit OpenAI-kompatiblem Tool Calling. Werkzeuge definieren, Schleife ausführen, in der EU.Anleitungen](https://inference.eu/de/api/tool-calling/)

## Verlagern Sie Ihre KI-Workloads auf europäische Infrastruktur

Sagen Sie uns, welche Modelle Sie nutzen und wie viel Verkehr Sie ungefähr haben. Wir antworten innerhalb eines Werktags mit Preisen und nächsten Schritten.

-   Antwort innerhalb eines Werktags
-   Preise für Ihr Volumen
-   AV-Vertrag unterschriftsreif
