# OpenAI Agent SDKの便利だけど知られていない機能
🌍 マルチターンのストリーミングで、毎回HTTPコネクションを張り直すオーバーヘッドが気になりませんか?
WebSocketトランスポートを使えば、永続接続でレスポンスをストリーミングし、レイテンシを大幅に削減できます。
📌 タイトル:Responses WebSocket トランスポート
🔗 URL:
🧩 概要
`set_default_openai_responses_transport("websocket")` を呼ぶと、SDKのレスポンス取得がHTTPからWebSocketに切り替わります。特にマルチターンのストリーミングでは `responses_websocket_session()` を使うことで、セッション内でWebSocket接続を再利用し、ターンごとの接続オーバーヘッドを排除できます。セッション内では ` でストリーミング実行を行います。`ping_interval` と `ping_timeout` でハートビートを設定でき、長い推論ターンでは `ping_timeout` を大きくするか `None` に設定してタイムアウトを防ぎます。
🛠 使い方
```python
from agents import (
Agent,
set_default_openai_responses_transport,
responses_websocket_session,
)
# グローバルにWebSocketを有効化
set_default_openai_responses_transport("websocket")
agent = Agent(name="Chat", instructions="Be helpful.")
# セッションで接続を再利用
async with responses_websocket_session(
responses_websocket_options={
"ping_interval": 20.0,
"ping_timeout": 60.0,
},
) as ws:
first = "Say hello.")
async for event in
pass # ストリーミングイベントを処理
second =
agent,
"Now say goodbye.",
previous_response_id=first.last_response_id,
)
async for event in
pass
```
🏗 本番システムへの組み込み方
・対話型チャットアプリで、WebSocket接続を再利用してターン間のレイテンシを削減する
・推論モデル(o4-miniなど)の長い思考時間に対応するため、`ping_timeout` を十分大きく設定する
・`previous_response_id` と組み合わせてサーバー管理型の会話をWebSocket上で継続する
・ハートビートが不要な場合は `ping_timeout=None` でタイムアウトを無効化する
💡 ユースケース
⚡ リアルタイムチャットアプリのレイテンシ最適化
🔄 マルチターン対話での接続再利用
🧠 推論モデルの長時間思考対応
📡 イベント駆動型のストリーミング処理
⚠️ 注意点
WebSocketトランスポートはオプション機能であり、すべての環境で利用可能とは限りません。プロキシやファイアウォールがWebSocket接続をブロックする場合があります。`ping_timeout` が短すぎると、長い推論ターンで接続が切断される可能性があるため、ユースケースに応じて適切に調整してください。
✨ WebSocketの永続接続で、ストリーミング体験を次のレベルに引き上げましょう。
#
OpenAIAgentSDK# #
AIAgent#