Zum Hauptinhalt springen
Unterscheide nach dem Typ jedes gestreamten Events oder Items, um Text, Reasoning, Tool-Aufrufe und Fortschritt beim Eintreffen darzustellen, und baue später dieselbe Timeline aus dem gespeicherten Laufergebnis wieder auf. TypeScript liefert eine typisierte Item-Union; die anderen Sprachen liefern die rohen Events als Maps, Dicts oder Hashes.

Eine gestreamte Timeline darstellen

Rust hat kein Streaming; baue die Timeline wie unten beschrieben aus dem abgeschlossenen Lauf.

Item-Typen in TypeScript

AgentItem<TOutput> ist eine Discriminated Union, und TypeScript grenzt jedes Item anhand seines type ein: Items, die aus Anbieterausgaben gebaut werden, behalten außerdem die ursprüngliche Nutzlast in rawProviderItem, für das seltene Feld, das die portablen Typen nicht enthalten. Baue Produktlogik auf den portablen Feldern auf, weil sich rawProviderItem je nach Anbieter unterscheidet.

Event-Typen in den anderen Sprachen

Go, C#, PHP, Ruby und Java liefern dieselben Event-Typen. item_stream() in Python liefert Anbieter- und Laufzeit-Items als Dicts mit einem Schlüssel type. Wo die Felder liegen, unterscheidet sich je nach Sprache: Keine davon ist eine typisierte Union. Validiere daher die Felder, die deine Oberfläche nutzt, kapsle anbieterspezifisches Parsen hinter einem Adapter und behalte einen Fallback für unbekannte Typen. In Go, C# und Java tragen Modell-Stream-Events die Lauf-ID "stream"; die echte Lauf-ID bekommst du aus Lifecycle-Events. Die vollständige Liste der Lifecycle-Events steht unter Lifecycle-Hooks.

Eine Timeline nach dem Lauf wieder aufbauen

Der Event-Verlauf bleibt nach dem Ende des Laufs lesbar, sodass ein Consumer darstellen kann, während ein anderer Events speichert, ohne zweite Modellanfrage. Für eine dauerhafte Timeline speicherst du das abgeschlossene Laufergebnis:
Das abgeschlossene Ergebnis enthält in items dieselben geordneten Items wie der Stream:
Zuletzt geändert am 5. November 2026