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複数回の修正が必要な場合あり
本番環境(コスト重視)1API呼び出しコスト削減
品質重視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/