@@ -4,19 +4,19 @@ search:
44---
55# ストリーミング
66
7- ストリーミングを使用すると、エージェントの実行中に更新を購読できます。エンドユーザーに進捗状況の更新や部分的なレスポンスを表示する場合に役立ちます 。
7+ ストリーミングを使用すると、エージェントの実行中に更新を受け取れます。これは、エンドユーザーに進行状況の更新や部分的なレスポンスを表示する場合に役立ちます 。
88
99ストリーミングするには、[ ` Runner.run_streamed() ` ] [ agents.run.Runner.run_streamed ] を呼び出します。これにより、[ ` RunResultStreaming ` ] [ agents.result.RunResultStreaming ] が返されます。` result.stream_events() ` を呼び出すと、以下で説明する [ ` StreamEvent ` ] [ agents.stream_events.StreamEvent ] オブジェクトの非同期ストリームが返されます。
1010
11- 非同期イテレーターが終了するまで、` result.stream_events() ` を消費し続けてください 。ストリーミング実行は、イテレーターが終了するまで完了しません。また、セッションの永続化、承認の記録管理 、履歴の圧縮などの後処理は、最後に表示されるトークンが到着した後に完了する場合があります 。ループが終了すると、` result.is_complete ` に最終的な実行状態が反映されます。
11+ 非同期イテレーターが終了するまで、` result.stream_events() ` を処理し続けてください 。ストリーミング実行は、イテレーターが終了するまで完了しません。また、セッションの永続化、承認状態の記録管理 、履歴の圧縮などの後処理は、最後の可視トークンが到着した後に完了する場合があります 。ループが終了すると、` result.is_complete ` に最終的な実行状態が反映されます。
1212
1313## raw レスポンスイベント
1414
15- [ ` RawResponsesStreamEvent ` ] [ agents.stream_events.RawResponsesStreamEvent ] は、LLM から直接渡される raw イベントです。これらは OpenAI Responses API 形式であり、各イベントには型 (` response.created ` 、` response.output_text.delta ` など)とデータがあります。これらのイベントは、生成されたレスポンスメッセージをすぐにユーザーへストリーミングする場合に役立ちます 。
15+ [ ` RawResponsesStreamEvent ` ] [ agents.stream_events.RawResponsesStreamEvent ] は、LLM から直接渡される raw イベントです。これらは OpenAI Responses API 形式であるため、各イベントにはタイプ (` response.created ` 、` response.output_text.delta ` など)とデータがあります。これらのイベントは、レスポンスメッセージが生成され次第、ユーザーにストリーミングする場合に役立ちます 。
1616
17- コンピュータツールの raw イベントでは、保存された結果と同様に 、プレビュー版と GA 版が区別されます。プレビュー版のフローでは、1 つの ` action ` を持つ ` computer_call ` 項目がストリーミングされます 。一方、` gpt-5.5 ` では、バッチ化された ` actions[] ` を持つ ` computer_call ` 項目をストリーミングできます 。上位レベルの [ ` RunItemStreamEvent ` ] [ agents.stream_events.RunItemStreamEvent ] インターフェースでは、このためにコンピュータ専用の特別なイベント名は追加されません 。どちらの形式も引き続き ` tool_called ` として公開され、スクリーンショットの結果は ` computer_call_output ` 項目をラップする ` tool_output ` として返されます。
17+ コンピュータツールの raw イベントでは、保存された実行結果と同じく 、プレビュー版と GA 版が区別されます。プレビュー版のフローでは、1 つの ` action ` を持つ ` computer_call ` アイテムがストリーミングされます 。一方、` gpt-5.5 ` では、バッチ化された ` actions[] ` を持つ ` computer_call ` アイテムがストリーミングされる場合があります 。上位レベルの [ ` RunItemStreamEvent ` ] [ agents.stream_events.RunItemStreamEvent ] インターフェースでは、これに対してコンピュータ専用の特別なイベント名は追加されません 。どちらの形式も引き続き ` tool_called ` として公開され、スクリーンショットの実行結果は ` computer_call_output ` アイテムをラップする ` tool_output ` として返されます。
1818
19- たとえば、次の例では LLM が生成したテキストをトークン単位で出力します。
19+ たとえば、次のコードは LLM が生成したテキストをトークン単位で出力します。
2020
2121``` python
2222import asyncio
@@ -41,7 +41,7 @@ if __name__ == "__main__":
4141
4242## ストリーミングと承認
4343
44- ストリーミングは、ツールの承認のために一時停止する実行にも対応しています 。ツールに承認が必要な場合、` result.stream_events() ` が終了し 、保留中の承認が [ ` RunResultStreaming.interruptions ` ] [ agents.result.RunResultStreaming.interruptions ] で公開されます 。` result.to_state() ` を使用して実行結果を [ ` RunState ` ] [ agents.run_state.RunState ] に変換し、中断を承認または拒否してから、` Runner.run_streamed(...) ` で再開します。
44+ ストリーミングは、ツールの承認待ちで一時停止する実行にも対応しています 。ツールに承認が必要な場合、` result.stream_events() ` は終了し 、保留中の承認が [ ` RunResultStreaming.interruptions ` ] [ agents.result.RunResultStreaming.interruptions ] に公開されます 。` result.to_state() ` を使用して実行結果を [ ` RunState ` ] [ agents.run_state.RunState ] に変換し、中断を承認または拒否してから、` Runner.run_streamed(...) ` で再開します。
4545
4646``` python
4747result = Runner.run_streamed(agent, " Delete temporary files if they are no longer needed." )
@@ -57,25 +57,25 @@ if result.interruptions:
5757 pass
5858```
5959
60- 一時停止と再開の詳しい手順については、 [ human-in-the-loop ガイド ] ( human_in_the_loop.md ) を参照してください。
60+ 一時停止と再開の手順全体については、 [ ヒューマンインザループのガイド ] ( human_in_the_loop.md ) を参照してください。
6161
62- ## 現在のターン終了後のストリーミングキャンセル
62+ ## 現在のターン終了後のストリーミング停止
6363
64- ストリーミング実行を途中で停止する必要がある場合は、[ ` result.cancel() ` ] [ agents.result.RunResultStreaming.cancel ] を呼び出します。デフォルトでは、実行は直ちに停止します。停止する前に現在のターンを正常に完了させるには 、代わりに ` result.cancel(mode="after_turn") ` を呼び出します。
64+ ストリーミング実行を途中で停止する必要がある場合は、[ ` result.cancel() ` ] [ agents.result.RunResultStreaming.cancel ] を呼び出します。デフォルトでは、実行は即座に停止します。現在のターンを正常に完了させてから停止するには 、代わりに ` result.cancel(mode="after_turn") ` を呼び出します。
6565
66- ストリーミング実行は、` result.stream_events() ` が終了するまで完了しません。最後に表示されるトークンの後も 、SDK がセッション項目を永続化したり、承認状態を確定したり、履歴を圧縮したりしている可能性があります 。
66+ ストリーミング実行は、` result.stream_events() ` が終了するまで完了しません。最後の可視トークンの後も 、SDK がセッションアイテムの永続化、承認状態の確定、履歴の圧縮を行っている場合があります 。
6767
68- [ ` result.to_input_list(mode="normalized") ` ] [ agents.result.RunResultBase.to_input_list ] から手動で処理を継続している場合に 、` cancel(mode="after_turn") ` がツールターンの後で停止したときは、新しいユーザーターンをすぐに追加するのではなく、正規化された入力で ` result.last_agent ` を再実行して、その未完了のターンを継続してください 。
69- - ストリーミング実行がツールの承認のために停止した場合は 、それを新しいターンとして扱わないでください。ストリームを最後まで消費し 、` result.interruptions ` を確認して、` result.to_state() ` から再開してください。
70- - 次回のモデル呼び出し前に、取得したセッション履歴と新しいユーザー入力をどのように統合するかをカスタマイズするには 、[ ` RunConfig.session_input_callback ` ] [ agents.run.RunConfig.session_input_callback ] を使用します。そのコールバック内で新しいターンの項目を書き換えた場合 、そのターンでは書き換え後のバージョンが永続化されます。
68+ [ ` result.to_input_list(mode="normalized") ` ] [ agents.result.RunResultBase.to_input_list ] から手動で処理を継続しており 、` cancel(mode="after_turn") ` によってツールターンの後で停止した場合は、すぐに新しいユーザーターンを追加するのではなく、その正規化された入力で ` result.last_agent ` を再実行して、未完了のターンを継続してください 。
69+ - ストリーミング実行がツールの承認待ちで停止した場合 、それを新しいターンとして扱わないでください。ストリームを最後まで処理し 、` result.interruptions ` を確認して、` result.to_state() ` から再開してください。
70+ - 取得したセッション履歴と新しいユーザー入力を、次のモデル呼び出しの前にどのように統合するかをカスタマイズするには 、[ ` RunConfig.session_input_callback ` ] [ agents.run.RunConfig.session_input_callback ] を使用します。そこで新しいターンのアイテムを書き換えた場合 、そのターンでは書き換え後のバージョンが永続化されます。
7171
72- ## 実行項目イベントとエージェントイベント
72+ ## 実行アイテムイベントとエージェントイベント
7373
74- [ ` RunItemStreamEvent ` ] [ agents.stream_events.RunItemStreamEvent ] は、より上位レベルのイベントです。項目が完全に生成された時点を通知します 。これにより、各トークン単位ではなく、「メッセージが生成された」「ツールが実行された」などの単位で進捗状況の更新を送信できます 。同様に、[ ` AgentUpdatedStreamEvent ` ] [ agents.stream_events.AgentUpdatedStreamEvent ] は、現在のエージェントが変更されたとき (ハンドオフの結果など)に更新を提供します 。
74+ [ ` RunItemStreamEvent ` ] [ agents.stream_events.RunItemStreamEvent ] は、上位レベルのイベントです。アイテムの生成が完全に完了すると通知されます 。これにより、トークンごとではなく、「メッセージ生成済み」や「ツール実行済み」などの単位で進行状況の更新を送信できます 。同様に、[ ` AgentUpdatedStreamEvent ` ] [ agents.stream_events.AgentUpdatedStreamEvent ] は、現在のエージェントが変更された場合 (ハンドオフの結果など)に更新を通知します 。
7575
76- ### 実行項目のイベント名
76+ ### 実行アイテムのイベント名
7777
78- ` RunItemStreamEvent.name ` では、次の固定された一連の意味的イベント名を使用します 。
78+ ` RunItemStreamEvent.name ` では、固定されたセマンティックイベント名のセットを使用します 。
7979
8080- ` message_output_created `
8181- ` handoff_requested `
@@ -89,13 +89,15 @@ if result.interruptions:
8989- ` mcp_approval_response `
9090- ` mcp_list_tools `
9191
92- ` handoff_occured ` は、後方互換性のために意図的にスペルミスのままになっています 。
92+ ` handoff_occured ` は、後方互換性のため意図的にスペルが誤っています 。
9393
94- ホスト型ツール検索を使用すると、モデルがツール検索リクエストを発行したときに ` tool_search_called ` が生成され、Responses API が読み込まれたサブセットを返したときに ` tool_search_output_created ` が生成されます 。
94+ ハンドオフ呼び出しは ` handoff_requested ` としてのみ発行され、 ` tool_called ` として重複して発行されることはありません。同じターン内の通常の関数ツール呼び出しでは、引き続き ` tool_called ` が発行されます 。
9595
96- プログラムによるツール呼び出しでは、生成された ` program ` と、プログラムが所有する通常の子ツール呼び出しに対して ` tool_called ` が生成されます。子ツールの出力と対応する ` program_output ` に対しては、 ` tool_output ` が生成されます。プログラムが所有するホスト型 MCP の ` mcp_approval_request ` 項目と ` mcp_list_tools ` 項目は例外です。これらはそれぞれ、 [ ` MCPApprovalRequestItem ` ] [ agents.items.MCPApprovalRequestItem ] と [ ` MCPListToolsItem ` ] [ agents.items.MCPListToolsItem ] をラップする ` mcp_approval_requested ` および ` mcp_list_tools ` として生成されます。残りの項目を区別するには、raw 項目の ` type ` を確認してください。また、プログラムが所有する子呼び出しには ` caller ` も含まれ、その型は ` program ` で、呼び出し元 ID によって親プログラムが識別されます 。
96+ ホスト型ツール検索を使用すると、モデルがツール検索リクエストを発行したときに ` tool_search_called ` が発行され、Responses API が読み込まれたサブセットを返したときに ` tool_search_output_created ` が発行されます 。
9797
98- たとえば、次の例では raw イベントを無視し、ユーザーへの更新をストリーミングします。
98+ Programmatic Tool Calling では、生成された ` program ` と、通常のプログラム配下の子ツール呼び出しに対して ` tool_called ` が発行されます。子ツールの出力と、それに対応する ` program_output ` に対しては、` tool_output ` が発行されます。プログラム配下のホスト型 MCP の ` mcp_approval_request ` アイテムと ` mcp_list_tools ` アイテムは例外です。これらは、それぞれ [ ` MCPApprovalRequestItem ` ] [ agents.items.MCPApprovalRequestItem ] と [ ` MCPListToolsItem ` ] [ agents.items.MCPListToolsItem ] をラップし、` mcp_approval_requested ` と ` mcp_list_tools ` として発行されます。残りのアイテムを区別するには、raw アイテムの ` type ` を確認してください。プログラム配下の子呼び出しには、タイプが ` program ` で、呼び出し元 ID が親プログラムを識別する ` caller ` も含まれます。
99+
100+ たとえば、次のコードは raw イベントを無視し、更新をユーザーにストリーミングします。
99101
100102``` python
101103import asyncio
0 commit comments