# OpenAI Agent SDKの便利だけど知られていない機能
🌍 LLM API の一時的なエラーで、エージェント全体が落ちてしまった経験はありませんか?
`ModelRetrySettings` を使えば、Runner がリトライ戦略を自動管理し、一時的な障害に耐性のあるエージェントを構築できます。
📌 タイトル:Runner 管理のリトライ
🔗 URL:
🧩 概要
`ModelSettings` の `retry` パラメータに `ModelRetrySettings` を指定することで、リトライ回数・バックオフ戦略・リトライポリシーを細かく制御できます。`max_retries` で最大試行回数、`backoff` で遅延戦略(`initial_delay`、`max_delay`、`multiplier`、`jitter`)、`policy` でリトライ対象のエラー種別を定義します。ただし、abort エラー・安全でないリプレイ・出力開始後のストリーム・ステートフルリクエストは絶対にリトライされません。
🛠 使い方
```python
from agents import Agent, ModelRetrySettings, ModelSettings, retry_policies
agent = Agent(
name="Assistant",
model="gpt-5.5",
model_settings=ModelSettings(
retry=ModelRetrySettings(
max_retries=4,
backoff={
"initial_delay": 0.5,
"max_delay": 5.0,
"multiplier": 2.0,
"jitter": True,
},
policy=retry_policies.any(
retry_policies.provider_suggested(),
retry_policies.retry_after(),
retry_policies.network_error(),
retry_policies.http_status([408, 429, 500, 502, 503, 504]),
),
)
),
)
```
利用可能なポリシーヘルパー:
- `retry_policies.never()` - 常にリトライしない
- `retry_policies.provider_suggested()` - プロバイダの指示に従う
- `retry_policies.network_error()` - 一時的なネットワーク障害
- `retry_policies.http_status([...])` - 特定の HTTP ステータスコード
- `retry_policies.retry_after()` - Retry-After ヘッダに従う
- `retry_policies.any(...)` / `retry_policies.all(...)` - 組み合わせ
🏗 本番システムへの組み込み方
・Runner レベルでデフォルトのリトライ設定を定義し、Agent レベルで `max_retries` のみオーバーライドする
・`jitter: True` で複数エージェントの同時リトライによるサンダリングハード問題を回避する
・429(レート制限)と 5xx(サーバーエラー)を必ずリトライ対象に含める
・Agent レベルの設定は Runner レベルの設定とディープマージされる
💡 ユースケース
🔄 レート制限(429)への自動バックオフ
🌐 ネットワーク瞬断時の自動回復
🏢 マルチテナント環境でのエージェント安定性確保
📊 バッチ処理での一時的エラーの吸収
⚠️ 注意点
abort エラー、プロバイダがリプレイ不安全と判定したリクエスト、出力が開始されたストリーム、`previous_response_id` や `conversation_id` を使うステートフルリクエストは、安全性の観点からリトライされません。リトライポリシーの `policy` フィールドはシリアライズされないため、実行時にのみ有効です。
✨ ModelRetrySettings で、一時的な障害に動じない堅牢なエージェントを構築しましょう。
#
OpenAIAgentSDK# #
AIAgent#