For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Hauptnavigation

API-Antworten streamen

Erfahre, wie du Modellantworten der OpenAI API mit Server-Sent Events streamst.

Wenn du eine Anfrage an die OpenAI API sendest, generieren wir standardmäßig die gesamte Modellausgabe, bevor wir sie in einer einzigen HTTP-Antwort zurückgeben. Bei langen Ausgaben kann das Warten auf die Antwort einige Zeit dauern. Mit Streaming kannst du den Anfang der Modellausgabe bereits anzeigen oder verarbeiten, während das Modell den Rest der Antwort generiert.

Dieser Leitfaden behandelt HTTP-Streaming (stream=true) über Server-Sent Events (SSE). Informationen zur dauerhaften WebSocket-Verbindung mit schrittweisen Eingaben über previous_response_id findest du unter WebSocket-Modus der Responses API.

Streaming aktivieren

Um Antworten zu streamen, setze stream=True in deiner Anfrage an den Responses-Endpunkt:

from openai import OpenAI

client = OpenAI()

stream = client.responses.create(
    model="gpt-6-astra",
    input=[
        {
            "role": "user",
            "content": "Say 'double bubble bath' ten times fast.",
        },
    ],
    stream=True,
)

for event in stream:
    print(event)

Die Responses API verwendet semantische Ereignisse für das Streaming. Jedes Ereignis ist anhand eines vordefinierten Schemas typisiert. So kannst du gezielt auf die Ereignisse reagieren, die für dich relevant sind.

Eine vollständige Liste der Ereignistypen findest du in der API-Referenz für Streaming. Hier sind einige Beispiele:

for await (const event of stream) {
  if (event.type === "response.output_text.delta") {
    process.stdout.write(event.delta);
  } else if (event.type === "response.completed") {
    console.log("\nResponse completed.");
  } else if (event.type === "error") {
    console.error(event.message);
  }
}

Antworten lesen

Wenn du unser SDK verwendest, ist jedes Ereignis eine typisierte Instanz. Du kannst einzelne Ereignisse auch anhand ihrer Eigenschaft type identifizieren.

Einige zentrale Lebenszyklusereignisse werden nur einmal ausgegeben, andere dagegen mehrfach, während die Antwort generiert wird. Beim Streaming von Text reagierst du typischerweise auf folgende Ereignisse:

- `response.created`
- `response.output_text.delta`
- `response.completed`
- `error`

Eine vollständige Liste der Ereignisse, auf die du reagieren kannst, findest du in der API-Referenz für Streaming.

Fortgeschrittene Anwendungsfälle

Für fortgeschrittene Anwendungsfälle wie das Streaming von Tool-Aufrufen findest du weitere Informationen in diesen speziellen Leitfäden:

Risiken bei der Moderation

Beachte, dass das Streaming der Modellausgabe in einer Anwendung im Produktivbetrieb die Moderation der generierten Inhalte erschwert, da sich unvollständige Antworten möglicherweise schwerer beurteilen lassen. Dies kann Auswirkungen auf die zulässige Nutzung haben.

Wenn du Moderationswerte zusammen mit einer Generierungsanfrage anforderst, erhältst du die Werte erst, nachdem die vollständige generierte Ausgabe verfügbar ist. In den Deltas der Teilausgaben sind sie nicht enthalten.