6.1 エラーハンドリング
Error Handling Strategies
エラーの種類
| エラー種別 | 原因 | 対処法 |
|---|---|---|
| ValidationError | バリデーション失敗 | Reask/FIX/フォールバック |
| ParseError | JSONパース失敗 | Reask/プロンプト改善 |
| LLMError | API呼び出し失敗 | リトライ/フォールバック |
基本的なエラーハンドリング
from guardrails.errors import ValidationError try: result = guard( llm_api=openai.chat.completions.create, model="gpt-4", messages=[...], num_reasks=2 ) if result.validation_passed: return result.validated_output else: # 検証失敗(リトライ後も失敗) return handle_validation_failure(result) except ValidationError as e: print(f"検証エラー: {e}") return default_response() except Exception as e: print(f"予期せぬエラー: {e}") return error_response()
フォールバック戦略
def process_with_fallback(input_text): # 1. 厳密なスキーマで試行 try: result = strict_guard(...) if result.validation_passed: return result.validated_output except: pass # 2. 緩いスキーマで再試行 try: result = relaxed_guard(...) if result.validation_passed: return result.validated_output except: pass # 3. デフォルト値を返す return {"status": "error", "message": "処理失敗"}
段階的フォールバック
厳密→緩い→デフォルトの順で試行することで、可能な限り有用な出力を得られる。
エラーログの活用
import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger("guardrails") result = guard(...) if not result.validation_passed: logger.warning( f"検証失敗: {result.error}, " f"リトライ回数: {result.reask_attempts}, " f"生出力: {result.raw_llm_output[:100]}..." )
参考文献
[1] Guardrails AI - Error Handling - https://docs.guardrailsai.com/how_to_guides/error_handling/
[1] Guardrails AI - Error Handling - https://docs.guardrailsai.com/how_to_guides/error_handling/