3.1 バリデーター基礎
Validator Basics
Validatorとは
Validatorは、LLM出力の各フィールドに対する検証ルールを定義するコンポーネントである。スキーマの型定義だけでは表現できない、値の妥当性検証を担う。
Validatorの役割
・値の範囲チェック(数値が0-100の範囲内か)
・フォーマット検証(メールアドレス形式か)
・長さ制限(文字列が指定範囲内か)
・カスタムロジック(ビジネスルールの検証)
Validatorの適用方法
方法1: Pydantic Annotatedを使用
from typing import Annotated from pydantic import BaseModel from guardrails.validators import ValidLength, ValidRange class Product(BaseModel): name: Annotated[str, ValidLength(min=1, max=100)] price: Annotated[int, ValidRange(min=0, max=1000000)] description: Annotated[str, ValidLength(max=500)]
方法2: RAILファイルで定義
<rail version="0.1">
<output>
<object name="product">
<string name="name" validators="length: 1 100" />
<integer name="price" validators="range: 0 1000000" />
<string name="description" validators="length: 0 500" />
</object>
</output>
</rail>
方法3: Guardに直接追加
from guardrails import Guard from guardrails.validators import ValidLength guard = Guard.from_pydantic(Product) guard.use(ValidLength(min=1, max=100), on="name")
検証結果の種類
| 結果 | クラス | 説明 |
|---|---|---|
| 成功 | PassResult |
検証に成功、値はそのまま使用 |
| 失敗 | FailResult |
検証に失敗、OnFailActionに従って処理 |
複数Validatorの適用
1つのフィールドに複数のValidatorを適用できる。
from guardrails.validators import ValidLength, RegexMatch class User(BaseModel): email: Annotated[ str, ValidLength(min=5, max=100), RegexMatch(pattern=r"^[\w\.-]+@[\w\.-]+\.\w+$") ]
適用順序
Validatorは定義順に実行される。最初に失敗したValidatorでOnFailActionが発動する。
OnFailActionの指定
from guardrails import OnFailAction from guardrails.validators import ValidRange class Score(BaseModel): # 失敗時にLLMへ再質問 value: Annotated[ int, ValidRange(min=0, max=100, on_fail=OnFailAction.REASK) ] # 失敗時に自動修正 rating: Annotated[ int, ValidRange(min=1, max=5, on_fail=OnFailAction.FIX) ]
参考文献
[1] Guardrails AI - Validators - https://docs.guardrailsai.com/concepts/validators/
[1] Guardrails AI - Validators - https://docs.guardrailsai.com/concepts/validators/