6.2 リトライ戦略
Retry Strategies
Reaskの仕組み
検証失敗時、Guardrailsは自動的にLLMへ修正を依頼するReaskを実行する。
result = guard(
llm_api=openai.chat.completions.create,
model="gpt-4",
messages=[...],
num_reasks=3 # 最大3回リトライ
)
リトライ設定のベストプラクティス
| シナリオ | 推奨num_reasks | 理由 |
|---|---|---|
| シンプルな構造化 | 1-2 | 通常は1回で成功 |
| 複雑なスキーマ | 2-3 | 複数回の修正が必要な場合あり |
| 本番環境(コスト重視) | 1 | API呼び出しコスト削減 |
| 品質重視 | 3-5 | 成功率を最大化 |
full_schema_reask
デフォルトでは失敗したフィールドのみ再質問するが、full_schema_reask=Trueで全体を再生成させられる。
result = guard(
...,
full_schema_reask=True # 全スキーマで再質問
)
使い分け
full_schema_reask=False: 効率的、部分修正で済む場合
full_schema_reask=True: 整合性重視、フィールド間の依存がある場合
コストと成功率のトレードオフ
# コスト計算の例 def estimate_cost(base_cost, num_reasks, success_rate_per_try=0.8): """期待コストを計算""" expected_tries = 1 cumulative_success = success_rate_per_try for i in range(num_reasks): if cumulative_success >= 0.99: break expected_tries += (1 - cumulative_success) cumulative_success += (1 - cumulative_success) * success_rate_per_try return base_cost * expected_tries # 例: 1回$0.01、成功率80% # num_reasks=1: 期待コスト $0.012 # num_reasks=3: 期待コスト $0.0124
注意
リトライ回数を増やしても、成功率の向上は逓減する。3回以上のリトライは費用対効果が低い場合が多い。
参考文献
[1] Guardrails AI - Reask - https://docs.guardrailsai.com/concepts/reask/
[1] Guardrails AI - Reask - https://docs.guardrailsai.com/concepts/reask/