ジェネラティブエージェンツの大嶋です。
「AIエージェントキャッチアップ #18 - Guardrails AI」という勉強会を開催しました。
generative-agents.connpass.com
アーカイブ動画はこちらです。
Guardrails AI
今回は、ガードレールのPythonフレームワーク「Guardrails AI」について、公式ドキュメントを読んだり動かしたりしてみました。
Guardrails AIのGitHubリポジトリはこちらです。
今回のポイント
Guardrails AIの概要
Guardrails AIは、LLMの入力・出力に対するガードレールを提供するPythonフレームワークです。
「Guardrails Hub」で公開されている様々なValidatorを使用して、ガードレールを実装することができます。
「Guardrails Hub」には、自身が実装したValidatorを登録することもできるようです。
基本的な使い方
Guardrails AIの基本的な使い方は、GitHubのREADMEに書かれています。
たとえば「RegexMatch」というValidatorを使いたい場合、まずguardrails hub install
コマンドでインストールします。
guardrails hub install hub://guardrails/regex_match
このコマンドを実行すると、RegexMatchの実装がダウンロードされます。 RegexMatchの実装は以下のGitHubリポジトリで公開されています。
RegexMatchを使うコードの例は以下のようになります。
from guardrails import Guard, OnFailAction from guardrails.hub import RegexMatch guard = Guard().use( RegexMatch, regex=r"(?!\d{3}-\d{4}-\d{4}).*", on_fail=OnFailAction.EXCEPTION, ) guard.validate("00-0000-0000") print("Guardrail passes") guard.validate("000-0000-0000") # 例外が発生
guard.validate
の箇所で、実際にはLLMの入力や出力をチェックさせる、ということです。
Validatorによっては内部で機械学習モデルを使用しており、その一部はGuardrails AIが公開しているサーバーにアクセスして実行してもらうこともできるようでした。
LiteLLMとのインテグレーション
Guardrails AIはLiteLLMと統合されているため、以下のように各種LLMを呼び出すこともできます。
result = guard( messages=[{"role":"user", "content":"How many moons does Jupiter have?"}], model="gpt-4o", )
LangChainとのインテグレーション
Guardrails AIはLangChainとの連携も提供しており、以下のように使用することができます。
chain = prompt | model | guard.to_runnable() | output_parser
当然ですが、LangSmithを設定すればトレースも記録されます。
サーバーとしての実行
Guardrails AIの処理は、Flaskで実装されたサーバーとして実行することもできます。
適用するGuardをconfig.pyというファイルに記述し、以下のコマンドでサーバーを起動します。
guardrails start --config config.py
クライアントからは以下のように、ガードレールのサーバーを経由して、OpenAI APIにリクエストを送ることができます。
client = OpenAI( base_url="http://127.0.0.1:8000/guards/gibberish_guard/openai/v1", ) response = client.chat.completions.create( model="gpt-4o-mini", messages=[ { "role": "user", "content": "Hi!", }, ], ) print(response.choices[0].message.content) print(response.guardrails["validation_passed"])
前回扱った「LLM Guard」でも同じように、サーバーとして実行する手順が整備されていました。 ガードレールを独立したサーバーで実行するのはよくある構成だと言えそうです。
次回のご案内
以上、今回は「Guardrails AI」をキャッチアップしました。
次回は「AIエージェントキャッチアップ #19 - Agent Inbox (LangChain)」ということで、LangChainが公開した「Agent Inbox」がテーマです!
generative-agents.connpass.com
ご興味・お時間ある方はぜひご参加ください!
また、その次の回以降のテーマも募集しているので、気になるエージェントのOSSなどあれば教えてください!