ストリーミング出力¶
このトピックでは、Cortex Codeエージェント SDK からリアルタイムの応答をストリーミングする方法について説明します。
デフォルトでは、モデルが各応答の生成を終了した後に SDK が完了 AssistantMessage オブジェクトを生成します。テキストと思考ブロックが生成されたときに増分更新を受け取るには、 includePartialMessages (TypeScript)または include_partial_messages (Python)を true に設定して部分的なメッセージのストリーミングを有効にします。
部分的なメッセージが有効な場合、Cortex Codeは部分的なテキストと思考オブジェクトに関する StreamEvent オブジェクトを出力します。完了したツール呼び出しは引き続き AssistantMessage オブジェクトとして到達し、ツールの結果は UserMessage オブジェクトとして引き続き到達します。
ストリーミング出力を有効にする¶
有効にすると、SDK は通常の AssistantMessage、 UserMessage および ResultMessage の各オブジェクトに加えて、部分的なストリーミングイベントを含む StreamEvent メッセージを生成します。コードが次のことを行う必要があります。
他の型と
StreamEventを区別するために、各メッセージの型を確認します。StreamEventの場合は、eventフィールドを抽出してtypeを確認します。delta.typeがtext_deltaであるcontent_block_deltaイベントを探します。
StreamEvent リファレンス¶
部分メッセージを有効にすると、オブジェクトにラップされた未加工のストリーミングイベントを受信します。
event フィールドには、Cortex Codeによって出力された未加工の部分的なストリーミングイベントが含まれます。共通イベント型:
イベント型 |
説明 |
|---|---|
|
新しいテキストまたは思考ブロックの開始 |
|
増分テキストまたは思考の更新 |
|
現在のテキストまたは思考ブロックの終了 |
メッセージフロー¶
部分的なメッセージを有効にすると、通常、以下の順序でメッセージを受信します。
部分的なメッセージを有効にしない場合でも、同じ完全なアシスタント、ユーザー、結果メッセージを受信しますが、 StreamEvent は受信しません。セッションに応じて、SDK は初期化、ステータス、バックグラウンドタスク通知などの system イベントを出力することもできます。
ストリームテキスト応答¶
生成されたテキストをそのまま表示するには、 delta.type が text_delta である content_block_delta イベントを探します。
ストリーミング UI の構築¶
次の例では、ストリーミングされたテキストをローカルバッファーに蓄積し、新しい text_delta が到達するたびに現在の応答を再レンダリングしています。実際のアプリケーションでは、render 関数をフレームワークの状態更新ロジックに置き換えます。
既知の制限¶
機能 |
ストリーミングへの影響 |
|---|---|
構造化出力 |
JSON の結果はストリーミングデルタとしてではなく、 |
法的通知¶
Cortexコードの設定が `モデルとサービスのパススルー規約<https://www.snowflake.com/en/legal/optional-offerings/offering-specific-terms/ai-features/model-pass-through-terms/>`__ において提供されるモデルを使用する場合、そのモデルの使用にはそのページにあるモデルの規約も適用されます。
インプットとアウトプットのデータ分類は以下の表の通りです。
入力データの分類 |
出力データの分類 |
指定 |
|---|---|---|
Usage Data |
顧客データ |
カバーされているAI機能[1]_ |
詳細については、 Snowflake AI と ML をご参照ください。