ストリーミングメッセージ
メッセージを作成する際、"stream": true
を設定することで、サーバー送信イベント(SSE)を使用して応答を段階的にストリーミングできます。
SDKでのストリーミング
私たちのPythonとTypeScript SDKは、複数のストリーミング方法を提供しています。Python SDKは同期と非同期の両方のストリームをサポートしています。詳細については、各SDKのドキュメントを参照してください。
イベントタイプ
各サーバー送信イベントには、名前付きイベントタイプと関連するJSONデータが含まれます。各イベントはSSEイベント名(例:event: message_stop
)を使用し、そのデータ内に対応するイベントtype
を含みます。
各ストリームは以下のイベントフローを使用します:
message_start
:空のcontent
を持つMessage
オブジェクトを含みます。- 一連のコンテンツブロック。各ブロックには
content_block_start
、1つ以上のcontent_block_delta
イベント、およびcontent_block_stop
イベントがあります。各コンテンツブロックには、最終的なMessagecontent
配列内のインデックスに対応するindex
があります。 - 1つ以上の
message_delta
イベント。最終的なMessage
オブジェクトのトップレベルの変更を示します。 - 最後の
message_stop
イベント。
Pingイベント
イベントストリームには任意の数のping
イベントが含まれる場合があります。
エラーイベント
イベントストリームでエラーが送信されることがあります。例えば、高負荷時にはoverloaded_error
を受け取る可能性があります。これは非ストリーミングのコンテキストではHTTP 529に相当します:
その他のイベント
私たちのバージョニングポリシーに従って、新しいイベントタイプが追加される可能性があります。コードは未知のイベントタイプを適切に処理する必要があります。
デルタタイプ
各content_block_delta
イベントには、指定されたindex
のコンテンツブロックを更新するdelta
タイプが含まれています。
テキストデルタ
text
コンテンツブロックデルタは以下のようになります:
入力JSONデルタ
tool_use
コンテンツブロックのデルタは、ブロックのinput
フィールドの更新に対応します。最大限の粒度をサポートするため、デルタは_部分的なJSON文字列_であり、最終的なtool_use.input
は常に_オブジェクト_です。
文字列デルタを蓄積し、content_block_stop
イベントを受信した時点でJSONをパースできます。Pydanticのようなライブラリを使用して部分的なJSONパースを行うか、パース済みの増分値にアクセスするヘルパーを提供するSDKを使用してください。
tool_use
コンテンツブロックデルタは以下のようになります:
注意:現在のモデルは、input
から一度に1つの完全なキーと値のプロパティを出力することのみをサポートしています。そのため、ツールを使用する際、モデルが処理を行っている間、ストリーミングイベント間に遅延が発生する可能性があります。input
のキーと値が蓄積されると、将来のモデルで自動的により細かい粒度をサポートできるように、複数のcontent_block_delta
イベントとして分割された部分的なJSONとして出力されます。
思考デルタ
拡張思考をストリーミング有効で使用する場合、thinking_delta
イベントを通じて思考内容を受信します。これらのデルタはthinking
コンテンツブロックのthinking
フィールドに対応します。
思考コンテンツの場合、content_block_stop
イベントの直前に特別なsignature_delta
イベントが送信されます。この署名は思考ブロックの整合性を検証するために使用されます。
典型的な思考デルタは以下のようになります:
署名デルタは以下のようになります:
生のHTTPストリームレスポンス
ストリーミングモードを使用する場合は、クライアントSDKの使用を強く推奨します。ただし、直接APIを統合する場合は、これらのイベントを自身で処理する必要があります。
ストリームレスポンスは以下で構成されています:
message_start
イベント- 複数のコンテンツブロック(各ブロックには以下が含まれます):
a.
content_block_start
イベント b. 複数のcontent_block_delta
イベント(可能性あり) c.content_block_stop
イベント message_delta
イベントmessage_stop
イベント
レスポンス全体にping
イベントが分散している場合もあります。フォーマットの詳細についてはイベントタイプを参照してください。
基本的なストリーミングリクエスト
ツール使用のストリーミングリクエスト
このリクエストでは、天気を教えてもらうためにClaudeにツールを使用するよう依頼します。
拡張思考のストリーミングリクエスト
このリクエストでは、Claudeのステップバイステップの推論を見るために、ストリーミングで拡張思考を有効にします。
Was this page helpful?