# OpenAI Agent SDKの便利だけど知られていない機能
🌍 ネストしたエージェントツールの実行中、進捗をリアルタイムにストリーミングしたいと思いませんか?
`on_stream` コールバックを使えば、子エージェントの実行イベントを親側でリアルタイムに受け取れます。
📌 タイトル:ネストしたエージェント実行のストリーミング
🔗 URL:
🧩 概要
エージェントを `as_tool()` でツール化する際、`on_stream` パラメータにコールバック関数を設定できます。このコールバックは `AgentToolStreamEvent` を受け取り、子エージェントの実行中に発生するイベント(`raw_response_event`、`run_item_stream_event` など)をリアルタイムで処理できます。イベントの種類は通常のストリーミングと同じ形式なので、既存のストリーミングハンドラを再利用できます。
🛠 使い方
```python
from agents import Agent, Runner
research_agent = Agent(
name="researcher",
instructions="トピックについて詳細に調査してください",
)
# ストリーミングコールバック
async def handle_stream(event):
# raw_response_event: モデルのレスポンス
# run_item_stream_event: ツール呼び出し等
if hasattr(event, 'data'):
print(f"[研究中] {")
parent = Agent(
name="coordinator",
tools=[
research_agent.as_tool(
tool_name="research",
tool_description="トピックを調査する",
on_stream=handle_stream,
),
],
)
# ストリーミング実行
async for event in "AIの最新動向を調査して"):
print(event)
```
🏗 本番システムへの組み込み方
・子エージェントの処理進捗をUIにリアルタイム表示し、ユーザーに待機感を与えない
・`raw_response_event` で生成テキストを逐次表示する
・`run_item_stream_event` でツール実行状況をログに記録する
・既存のストリーミングUIコンポーネントをそのまま再利用できる
💡 ユースケース
🖥 マルチエージェントの処理進捗をリアルタイムUI表示
📝 子エージェントの応答をタイプライター風に逐次表示
🔍 調査エージェントの検索・分析プロセスの可視化
📊 長時間処理の途中経過をユーザーにフィードバック
⚠️ 注意点
`on_stream` コールバックは子エージェントの実行スレッド内で呼ばれるため、重い処理を行うとエージェント全体のパフォーマンスに影響します。イベントハンドラは軽量に保ち、必要に応じて非同期キューに渡すなどの工夫をしてください。また、すべてのイベント型に対応できるよう、未知のイベントを無視するガード処理を入れておくと安全です。
✨ ストリーミングで、マルチエージェントの「中身が見える」体験をユーザーに届けましょう。
#
OpenAIAgentSDK# #
AIAgent#