AssistantMessage-Objekte, nachdem Claude die Generierung jeder Antwort abgeschlossen hat. Um inkrementelle Aktualisierungen zu erhalten, während Text und Tool-Aufrufe generiert werden, aktivieren Sie das Streaming von Teillmeldungen, indem Sie include_partial_messages (Python) oder includePartialMessages (TypeScript) in Ihren Optionen auf true setzen.
Ausgabe-Streaming aktivieren
Um Streaming zu aktivieren, setzen Sieinclude_partial_messages (Python) oder includePartialMessages (TypeScript) in Ihren Optionen auf true. Dies führt dazu, dass das SDK StreamEvent-Nachrichten mit rohen API-Ereignissen liefert, die ankommen, zusätzlich zu den üblichen AssistantMessage- und ResultMessage-Objekten.
Ihr Code muss dann:
- Den Typ jeder Nachricht überprüfen, um
StreamEventvon anderen Nachrichtentypen zu unterscheiden - Für
StreamEventdas Feldeventextrahieren und seinentypeüberprüfen - Nach
content_block_delta-Ereignissen suchen, bei denendelta.typegleichtext_deltaist, die die tatsächlichen Text-Chunks enthalten
StreamEvent, dann für content_block_delta, dann für text_delta:
StreamEvent-Referenz
Wenn Teillmeldungen aktiviert sind, erhalten Sie rohe Claude-API-Streaming-Ereignisse, die in einem Objekt verpackt sind. Der Typ hat in jedem SDK unterschiedliche Namen:- Python:
StreamEvent(importieren ausclaude_agent_sdk.types) - TypeScript:
SDKPartialAssistantMessagemittype: 'stream_event'
event enthält das rohe Streaming-Ereignis aus der Claude API. Häufige Ereignistypen sind:
| Ereignistyp | Beschreibung |
|---|---|
message_start | Beginn einer neuen Nachricht |
content_block_start | Beginn eines neuen Inhaltsblocks (Text oder Tool-Verwendung) |
content_block_delta | Inkrementelle Aktualisierung des Inhalts |
content_block_stop | Ende eines Inhaltsblocks |
message_delta | Aktualisierungen auf Nachrichtenebene (Stoppgrund, Nutzung) |
message_stop | Ende der Nachricht |
Nachrichtenfluss
Mit aktivierten Teillmeldungen erhalten Sie Nachrichten in dieser Reihenfolge:include_partial_messages in Python, includePartialMessages in TypeScript) erhalten Sie alle Nachrichtentypen außer StreamEvent. Häufige Typen sind SystemMessage (Sitzungsinitialisierung), AssistantMessage (vollständige Antworten), ResultMessage (Endergebnis) und eine kompakte Grenzmarkierung, die anzeigt, wann der Gesprächsverlauf komprimiert wurde (SDKCompactBoundaryMessage in TypeScript; SystemMessage mit Subtyp "compact_boundary" in Python).
Text-Antworten streamen
Um Text anzuzeigen, während er generiert wird, suchen Sie nachcontent_block_delta-Ereignissen, bei denen delta.type gleich text_delta ist. Diese enthalten die inkrementellen Text-Chunks. Das folgende Beispiel gibt jeden Chunk aus, während er ankommt:
Tool-Aufrufe streamen
Tool-Aufrufe werden auch inkrementell gestreamt. Sie können verfolgen, wann Tools starten, ihre Eingabe erhalten, während sie generiert wird, und sehen, wann sie abgeschlossen sind. Das folgende Beispiel verfolgt das aktuell aufgerufene Tool und sammelt die JSON-Eingabe, während sie gestreamt wird. Es verwendet drei Ereignistypen:content_block_start: Tool beginntcontent_block_deltamitinput_json_delta: Eingabe-Chunks kommen ancontent_block_stop: Tool-Aufruf abgeschlossen
Streaming-UI erstellen
Dieses Beispiel kombiniert Text- und Tool-Streaming in eine kohärente Benutzeroberfläche. Es verfolgt, ob der Agent gerade ein Tool ausführt (mit einemin_tool-Flag), um Statusanzeigen wie [Using Read...] anzuzeigen, während Tools ausgeführt werden. Text wird normal gestreamt, wenn nicht in einem Tool, und die Tool-Fertigstellung löst eine „done”-Nachricht aus. Dieses Muster ist nützlich für Chat-Schnittstellen, die während mehrstufiger Agent-Aufgaben Fortschritt anzeigen müssen.
Bekannte Einschränkungen
- Strukturierte Ausgabe: Das JSON-Ergebnis erscheint nur in der finalen
ResultMessage.structured_output, nicht als Streaming-Deltas. Weitere Informationen finden Sie unter Strukturierte Ausgaben.
Nächste Schritte
Jetzt, da Sie Text und Tool-Aufrufe in Echtzeit streamen können, erkunden Sie diese verwandten Themen:- Interaktive vs. One-Shot-Abfragen: Wählen Sie zwischen Eingabemodi für Ihren Anwendungsfall
- Strukturierte Ausgaben: Erhalten Sie typisierte JSON-Antworten vom Agent
- Berechtigungen: Kontrollieren Sie, welche Tools der Agent verwenden kann