💂‍♂️

LLMのアウトプットをバリデーションする関数が集まるGuardrails Hubを試す

2024/03/31に公開

先月くらいにGuardrails AI という何ともAIのアウトプットを制御してくれそうな名前の会社からGuardrails HubというLLMのアウトプットを評価する関数が集まったプロダクトがリリースされました。

https://hub.guardrailsai.com/

下図のように便利なバリデーション関数がたくさんあります。

個人的に使いそうなものをピックアップして見てみると次のようなものがあります。

また、インプットに対してもバリデーションが色々あります。Latency次第ではありますがプロンプト実行前に挟むのも良さそうです。

使い方

Hub で使いたいものをポチポチ選んで Generate Code をクリックします。

そうすると次のようなサンプルが生成されるので細かいコンフィグを変えるとバリデーション関数の準備が終わります。

▼ インストール
(hub install のところ色んなライブラリ読み込むからか結構時間かかる)

pip install guardrails-ai

guardrails hub install hub://scb-10x/correct_language;
guardrails hub install hub://guardrails/detect_pii;

▼ バリデーション実行例

from guardrails import Guard
from guardrails.hub import (
    CorrectLanguage,
    DetectPII
)

guard = Guard().use_many(
    CorrectLanguage(expected_language_iso="ja", threshold=0.75),
    DetectPII(
        pii_entities=["EMAIL_ADDRESS", "PHONE_NUMBER", "LOCATION"]
    )
)

try:
  result = guard.validate("私の住所は東京都新宿区神室町1-2だよ〜")
  print(result)
except Exception as e:
  print(e)

こうすると次のようにValidationOutcomeという結果オブジェクトが手に入ります。
(なんかドキュメントに書かれているようにException throwされない & 中身のエラーの内容が手に入らないんだけど何故なんだろう)

ValidationOutcome(
    raw_llm_output='私の住所は東京都新宿区神室町1-2だよ〜',
    validated_output=None,
    reask=None,
    validation_passed=False,
    error=None
)

ちょっと上記にあげたようなものをいくつか試して見たのですが、英語では割と良さそうですが、日本語だとちょっとうまく Fail 判定してくれないこともちょいちょいあるかなという所感です。
ただ、こちらはHubの名の通り、自分でバリデーション関数を作ってアップロードすることができます。

https://www.guardrailsai.com/docs/hub/how_to_guides/custom_validator

このコミュニティが盛り上がっていけばLLMアウトプットバリデーションのデファクトスタンダードになることも全然想像できます。私も一個くらいは何か作ってみようと思います(欲しいのは日本語の卑俗語判定とかかな)

皆さんもぜひ試してみてください!

Gaudiy Engineers' Blog

Discussion