Zum Hauptinhalt springen
Übergib einem Lauf oder einer Fortsetzung einen Event-Handler, um ein Event zu erhalten, wenn der Lauf startet, jeder Modell-Turn beginnt und endet, jedes Tool läuft, der Lauf pausiert und der Lauf endet. Damit aktualisierst du deine Oberfläche, schreibst Audit-Einträge oder speist deine bestehende Telemetrie.

Wo der Handler hingehört und was er erhält

Events, die die Laufzeit sendet

Die Detail-Schlüssel sind unten in snake_case aufgeführt; TypeScript verwendet die camelCase-Form. Rust 0.2 verwendet für einige Events eigene Namen: Ein Lauf, der an einer Stoppbedingung endet, sendet in TypeScript run.stopped und in Python, Go, C#, PHP, Ruby oder Java kein abschließendes Event; lies stattdessen den Status des Laufs. In TypeScript wird step.completed gesendet, nachdem der Schritt als Checkpoint gespeichert wurde, sodass Persistenz- und Telemetrie-Consumer es als stabile Grenze behandeln können.

Events streamen

Beim Streaming kommen dieselben Lifecycle-Events zusammen mit den response.*-Events des Modells an. In TypeScript, Python, Go, C# und Java erhält sie der Handler; in PHP und Ruby erscheinen sie außerdem in fullStream() / full_stream. Rust hat kein Streaming. Die Stream-Consumer sind unter Streaming beschrieben.

Handler schnell halten

Die Laufzeit wartet auf den Handler, bevor sie weitermacht. Kehre daher schnell zurück und verlagere langsame Speicher- oder Netzwerkarbeit in eine Warteschlange. Schwärze sensible Tool-Eingaben und -Ausgaben, bevor Events deinen Prozess verlassen.

Events für eine Produktoberfläche auswählen

Verwende response.output_text.delta für Live-Antworttext, Tool-Events für Tool-Aufruf-Karten und Fortschrittsanzeigen, run.waiting_for_human (Rust: run.paused), um Bedienelemente für Freigabe oder Eingabe anzuzeigen, und abschließende Lauf-Events, um Ladezustände zu beenden. Für eine lokale Aufzeichnung ganzer Läufe während der Entwicklung verwendest du DevTools.
Zuletzt geändert am 5. November 2026