"stream": true
festlegen, um die Antwort inkrementell mithilfe von Server-Sent Events (SSE) zu streamen.
Streaming mit SDKs
Unsere Python und TypeScript SDKs bieten mehrere Möglichkeiten zum Streaming. Das Python SDK ermöglicht sowohl synchrone als auch asynchrone Streams. Weitere Details finden Sie in der Dokumentation der jeweiligen SDKs.Event-Typen
Jedes Server-Sent Event enthält einen benannten Event-Typ und zugehörige JSON-Daten. Jedes Event verwendet einen SSE-Event-Namen (z.B.event: message_stop
) und enthält den passenden Event-type
in seinen Daten.
Jeder Stream verwendet den folgenden Event-Ablauf:
message_start
: enthält einMessage
-Objekt mit leeremcontent
.- Eine Reihe von Inhaltsblöcken, von denen jeder ein
content_block_start
, ein oder mehrerecontent_block_delta
-Events und eincontent_block_stop
-Event hat. Jeder Inhaltsblock hat einenindex
, der seinem Index im endgültigen Messagecontent
-Array entspricht. - Ein oder mehrere
message_delta
-Events, die Änderungen auf oberster Ebene am endgültigenMessage
-Objekt anzeigen. - Ein abschließendes
message_stop
-Event.
Die in den
usage
-Feldern des message_delta
-Events angezeigten Token-Zählungen sind kumulativ.Ping-Events
Event-Streams können auch eine beliebige Anzahl vonping
-Events enthalten.
Fehler-Events
Gelegentlich können wir Fehler im Event-Stream senden. Zum Beispiel können Sie während Zeiten hoher Auslastung einenoverloaded_error
erhalten, der normalerweise einem HTTP 529 in einem Nicht-Streaming-Kontext entsprechen würde:
Beispiel-Fehler
Andere Events
Gemäß unserer Versionierungsrichtlinie können wir neue Event-Typen hinzufügen, und Ihr Code sollte unbekannte Event-Typen problemlos verarbeiten können.Content-Block-Delta-Typen
Jedescontent_block_delta
-Event enthält ein delta
eines Typs, der den content
-Block an einem bestimmten index
aktualisiert.
Text-Delta
Eintext
-Content-Block-Delta sieht wie folgt aus:
Text-Delta
Input-JSON-Delta
Die Deltas fürtool_use
-Content-Blöcke entsprechen Aktualisierungen für das input
-Feld des Blocks. Um maximale Granularität zu unterstützen, sind die Deltas partielle JSON-Strings, während das endgültige tool_use.input
immer ein Objekt ist.
Sie können die String-Deltas akkumulieren und das JSON parsen, sobald Sie ein content_block_stop
-Event erhalten, indem Sie eine Bibliothek wie Pydantic für partielles JSON-Parsing verwenden oder unsere SDKs, die Hilfsfunktionen für den Zugriff auf geparste inkrementelle Werte bieten.
Ein tool_use
-Content-Block-Delta sieht wie folgt aus:
Input-JSON-Delta
input
auf einmal. Daher kann es bei der Verwendung von Tools zu Verzögerungen zwischen Streaming-Events kommen, während das Modell arbeitet. Sobald ein input
-Schlüssel und -Wert akkumuliert sind, geben wir sie als mehrere content_block_delta
-Events mit gestückeltem Partial-JSON aus, sodass das Format automatisch eine feinere Granularität in zukünftigen Modellen unterstützen kann.
Thinking-Delta
Bei Verwendung von erweitertem Denken mit aktiviertem Streaming erhalten Sie Denkinhalte überthinking_delta
-Events. Diese Deltas entsprechen dem thinking
-Feld der thinking
-Content-Blöcke.
Für Denkinhalte wird ein spezielles signature_delta
-Event kurz vor dem content_block_stop
-Event gesendet. Diese Signatur wird verwendet, um die Integrität des Denkblocks zu überprüfen.
Ein typisches Thinking-Delta sieht wie folgt aus:
Thinking-Delta
Signatur-Delta
Vollständige HTTP-Stream-Antwort
Wir empfehlen dringend, unsere Client-SDKs zu verwenden, wenn Sie den Streaming-Modus nutzen. Wenn Sie jedoch eine direkte API-Integration erstellen, müssen Sie diese Events selbst verarbeiten. Eine Stream-Antwort besteht aus:- Einem
message_start
-Event - Möglicherweise mehreren Inhaltsblöcken, von denen jeder enthält:
- Ein
content_block_start
-Event - Möglicherweise mehrere
content_block_delta
-Events - Ein
content_block_stop
-Event
- Ein
- Einem
message_delta
-Event - Einem
message_stop
-Event
ping
-Events über die gesamte Antwort verteilt sein. Weitere Details zum Format finden Sie unter Event-Typen.
Einfache Streaming-Anfrage
Shell
Antwort
Streaming-Anfrage mit Tool-Verwendung
In dieser Anfrage bitten wir Claude, ein Tool zu verwenden, um uns das Wetter mitzuteilen.Shell
Antwort
Streaming-Anfrage mit erweitertem Denken
In dieser Anfrage aktivieren wir erweitertes Denken mit Streaming, um Claudes schrittweise Überlegungen zu sehen.Shell
Antwort
Streaming-Anfrage mit Websuche-Tool-Verwendung
Antwort