GPT-6 Astra Streaming-Leitfaden: Ereignisse, Tools und Fehlerbehandlung der Responses API
Erstellen Sie robuste GPT-6-Astra-Streaming-Schnittstellen mit typisierten Responses-API-Ereignissen, inkrementellem Text, Tool-Zuständen, terminalen Ergebnissen, Abbruch und Wiederverbindungslogik.

Streaming verbessert die wahrgenommene Latenz, indem es Ereignisse ausliefert, während GPT-6 Astra arbeitet. Es macht die zugrunde liegende Berechnung nicht kostenlos und beseitigt keine Fehlerfälle. Ein Produktionsclient muss inkrementelle Ausgaben zusammenstellen, Tool-Fortschritte anzeigen, Endzustände unterscheiden und sich erholen, wenn eine Verbindung fehlschlägt.
Beginnen Sie mit getippten Ereignissen
Setze stream: true und iteriere über den typisierten Ereignisstrom des SDKs.
Keine Ausgaben
const stream = await client.responses.create({
model: "gpt-6-astra",
input: "Erklären Sie den Migrationsplan in fünf Schritten.",
stream: true
});
for await (const event of stream) {
switch (event.type) {
.output_text.delta
process.stdout.write(event.delta);
break;
.completed
console.log("\nVollständig");
break;
.failed
console.error("Fehlgeschlagen", event.response.error);
break;
case "error":
console.error(event.message);
break;
}
}
Zu den üblichen Text-Lebenszyklus-Ereignissen gehören response.created, response.output_text.delta, response.completed und error. Die vollständige Ereignisvereinigung enthält auch Output-Item-, Content-Part-, Annotation-, Refusal-, Failure- und andere Ereignisse. Behandeln Sie unbekannte Ereignistypen sicher, sodass ein neu hinzugefügtes Ereignis keinen älteren Client zum Absturz bringt.
Baue einen Assembler, keine Text-Anhängeschleife
Eine Antwort kann mehrere Ausgabeelemente und Inhaltsteile enthalten. Indizieren Sie den Zustand nach Antwort, Ausgabeelement und Inhaltsteil, anstatt jedes Delta an eine globale Zeichenfolge anzuhängen. Entfernen Sie Duplikate mithilfe dokumentierter Kennungen oder Sequenzdaten, sofern verfügbar, und rendern Sie nur den festgeschriebenen lokalen Zustand.
Anmerkungen und Zitate können getrennt vom Text eintreffen. Bewahren Sie deren Offsets oder Assoziationen, anstatt sie während der Zusammenführung zu entfernen. Behandeln Sie ein endgültiges Antwortobjekt als maßgeblich, wenn verfügbar.
Terminalzustände sind nicht austauschbar
.completed bedeutet erfolgreicher Abschluss. response.failed enthält einen Fehler. response.incomplete kann auf Token-Limits oder einen anderen Grund hinweisen und kann nützliche Teilausgaben enthalten. Ein transport-level error kann ohne ein normales Antwort-Endereignis auftreten.
Markieren Sie eine Anfrage niemals nur deshalb als erfolgreich, weil der Socket geschlossen wurde. Speichern Sie die Antwort-ID, sobald response.created eintrifft, und speichern Sie den Endstatus separat.
Stream-Tool-Aktivität ehrlich darstellen
Tool-Aufrufe führen Phasen ein: Modellplanung, Argumentgenerierung, Server- oder Client-Ausführung, Tool-Ergebnis und fortgesetzte Generierung. Ihre Benutzeroberfläche sollte „Suche läuft“ oder „Warte auf Genehmigung“ nur dann anzeigen, wenn das entsprechende Ereignis/der entsprechende Zustand existiert. Erfinden Sie keine Fortschrittsprozentsätze.
Bei clientseitig ausgeführten Funktionen sollten vollständige Argumente vor dem Parsen zusammengestellt werden, es sei denn, der API-Vertrag unterstützt explizit eine inkrementelle Verarbeitung. Validieren Sie diese, führen Sie sie einmal aus und geben Sie das Ergebnis unter Verwendung der Aufruf-ID zurück. Das Streamen eines doppelten Ereignisses darf keinen doppelten Nebeneffekt auslösen.
Backpressure und UI-Leistung
Token-große Deltas können schneller eintreffen, als ein Browser rendern sollte. Puffern Sie kurz und aktualisieren Sie die Benutzeroberfläche in einem kontrollierten Rhythmus. Dies reduziert Layout-Arbeit, ohne die wahrgenommene Latenz wesentlich zu beeinträchtigen. Begrenzen Sie In-Memory-Puffer und pausieren Sie die nachgelagerte Verarbeitung, wenn Ihr Framework dies unterstützt.
Trennen Sie das rohe Ereignisprotokoll vom Ansichtsmodell. Das Ereignisprotokoll unterstützt das Debugging; das Ansichtsmodell kombiniert Deltas zu stabilen, für den Benutzer sichtbaren Inhalten. Schwärzen Sie sensible Tool-Nutzlasten vor der Protokollierung.
Verbindungsabbrüche, Zeitüberschreitungen und Stornierung
Bei einer Trennung klassifizieren Sie den Vorgang als unbekannt, bis Sie den Zustand wiederhergestellt haben. Eine Modellantwort kann serverseitig fortgesetzt worden sein, und ein externes Tool kann bereits gehandelt haben. Vermeiden Sie das automatische Wiederholen von Schreibvorgängen.
Verwenden Sie Anfragefristen und Leerlauf-Stream-Timer, unterscheiden Sie jedoch „kein Text-Delta“ von „keiner Aktivität“; ein langer Tool-Aufruf kann dennoch gesund sein. Die Stornierung sollte sich auf Ihre eigenen stornierbaren Tools ausbreiten. Sie kann kein Rollback abgeschlossener Effekte garantieren.
Wenn Sie durch den Antwortstatus fortfahren, bewahren Sie die letzte bestätigte Antwort und die Tool-Ergebnisse auf. Die websocket-spezifische Wiederherstellung kann previous_response_not_found melden; der offizielle Fehlerleitfaden empfiehlt, es mit vollständigem Eingabekontext und previous_response_id: null erneut zu versuchen, wenn der Status nicht aufgelöst werden kann.
Beobachtbarkeit
Zeit bis response.created, erstes Text-Delta, erstes Tool-Ereignis und Terminal-Ereignis aufzeichnen; Gesamtdauer; Ereigniszählungen; Terminal-Status; Verbindungsabbrüche; Wiederholungen; und Benutzerabbrüche. Korrelieren Sie alle Ereignisse mit einer Anwendungsanfrage-ID und der OpenAI-Antwort-ID.
Teste fehlerhafte Bestellungen, doppelte Lieferungen, unbekannte Ereignisse, ein Tool-Timeout, einen späten Fehler nach sichtbarem Text und Verbindungsverlust nach einem Schreibvorgang. Streaming-Korrektheit ist Zustandsmaschinen-Korrektheit.
Browser- und Server-Implementierungsmuster
Bei vielen Produkten sollte der Anwendungsserver die OpenAI-Verbindung halten und einen bereinigten Ereignisstrom an den Browser weiterleiten. Dadurch bleiben API-Anmeldeinformationen vom Client fern, die Autorisierung wird zentralisiert und der Server kann interne Tool-Argumente verbergen. Der Browser empfängt nur die für die Darstellung benötigten Ereignisse: Status, sichere Textunterschiede, Zitate, Bestätigungsabfragen und das endgültige terminale Ergebnis.
Beharre grobe Prüfpunkte anstelle jedes Zeichens. Das Speichern jedes Deltas erzeugt übermäßige Schreibvorgänge; das Speichern nur bei Abschluss verliert bei einer Trennung zu viel. Ein kurzes Intervall oder eine Inhaltsabschnittsgrenze ist in der Regel ein besserer Kompromiss. Sende bei erneuter Verbindung die letzte bestätigte Ansicht und fahre mit dem nächsten bekannten Ereignis gemäß Ihrem Transportdesign fort.
Moderation und Sicherheit benötigen eine Streaming-Richtlinie. Teiltexte erreichen Nutzer, bevor die endgültige Antwort existiert, daher kann eine nachgelagerte Prüfung, die erst bei Abschluss erfolgt, zu spät kommen. Wählen Sie je nach Risiko Kontrollen vor der Generierung, schrittweise Sicherheitsvorkehrungen, Pufferung oder eingeschränktes Streaming. Bei risikoreichen Arbeitsabläufen kann es sinnvoll sein, bewusst einen Teil der Unmittelbarkeit gegen eine Prüfung einzutauschen.
Stellen Sie abschließend sicher, dass Analysen eine nach einem Browser-Refresh fortgesetzte Antwort nicht doppelt zählen. Die OpenAI-Antwort-ID und Ihre stabile Anwendungsanfrage-ID sollten jedes Segment zu einer logischen Aufgabe zusammenführen.
FAQ
Reduziert Streaming die Token-Kosten?
Nein. Es ändert die Auslieferung, nicht die Anzahl der generierten Tokens.
Kann ich die Teilausgabe sofort anzeigen?
Ja, aber markiere es als in Bearbeitung und sei auf Ablehnung, Unvollständigkeit oder Fehlschläge vorbereitet.
Sollte ich es erneut versuchen, wenn die Verbindung geschlossen wird?
Zuerst wiederherstellen oder abgleichen, besonders wenn Werkzeuge Nebenwirkungen verursachen können. Blindes Wiederholen kann Aktionen duplizieren.
Sind die Ereignisbehandlung von SSE und WebSocket identisch?
Sie teilen Response-Konzepte, aber das Transport- und Fortsetzungsverhalten unterscheidet sich. Folgen Sie der Anleitung für den ausgewählten Modus.
Fazit
Zuverlässiges GPT-6 Astra-Streaming erfordert typisierte Ereignisbehandlung, einen strukturierten Assembler, explizite Endzustände, idempotente Tool-Ausführung, Backpressure und Wiederherstellung. Optimieren Sie die Wahrnehmung des Fortschritts durch den Benutzer, ohne aus einem unvollständigen Text oder einer geschlossenen Verbindung eine falsche Erfolgsmeldung zu machen.






























































































