ガードレール(Guardrails)
ガードレールは実験的な機能です。API と動作は将来のバージョンで変更される可能性があります。
ガードレールは、LLM の入力と出力を検証し、期待どおりであることを保証するための仕組みです。ガードレールでは、例えば次のようなことができます:
- ユーザー入力が範囲外でないことを確認する
- LLM を呼び出す前に入力が一定の条件を満たすことを保証する(例:プロンプトインジェクション攻撃 への対策)
- 出力形式が正しいことを保証する(例:正しいスキーマを持つ JSON ドキュメントであること)
- LLM の出力がビジネスルールと制約に整合していることを保証する(例:これが会社 X のチャットボットである場合、応答に競合他社 Y への言及が含まれないこと)
- 幻覚(hallucinations)を検出する
これらはあくまで例です。ガードレールではほかにも多くのことができます。
ガードレールは AI Services を使用する場合にのみ利用できます。より高水準の構成要素であり、ChatModel や StreamingChatModel には適用できません。

;
この実装はもともと Quarkus LangChain4j 拡張 で行われ、ここにバックポートされました。
ガードレールの実装
理想的には、ガードレールの実装は 単一責任の原則 に従うべきです。つまり、各ガードレールクラスは 1 つのことだけを検証します。その後、ガードレールをチェーンして複数の事柄を防ぐようにします。
チェーン内のガードレールの順序は重要です。チェーン内で最初に失敗したガードレールが全体の失敗を引き起こします。最も多くの失敗を捕捉するガードレールをチェーンの前半に置き、失敗頻度が非常に低いより特化したガードレールをチェーンの後半に置くようにしてください。
検証するテキストを 書き換える ガードレールは、チェーン内のどこにでも宣言できます。書き換えを呼び出し側に届けるために、最後に宣言する必要はありません。詳細はチェーン内の書き換えガードレールを参照してください。
また、ガードレール自体が他のサービスを呼び出したり、他の LLM 対話を起動したりできることにも留意してください。こうしたガードレールに実行コストや金銭的コストが伴う場合は、それを考慮に入れてください。より「高価」なガードレールはチェーンの末尾に置くとよいでしょう。
用語 高価(expensive) は、実行に時間がかかること、または金銭的コストが伴うことを意味します。