ガードレールを使用して、エージェントの入力の安全性を保持する方法を学習します。
ガードレールはエージェント向けの組み込みの安全装置です。それらを使用して、LLM に送信する入力が安全で不要なものを含まないことを確実にできます。
Agno 2.x : Learn : エージェント – ガードレール : 概要
作成 : クラスキャット・セールスインフォメーション
作成日時 : 11/03/2025
バージョン : Agno 2.2.6
* 本記事は docs.agno.com の以下のページを独自に翻訳した上で、補足説明を加えてまとめ直しています。スニペットはできる限り日本語を使用しています :
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
◆ お問合せ : 下記までお願いします。
- クラスキャット セールス・インフォメーション
- sales-info@classcat.com
- ClassCatJP

Agno 2.x : Learn : エージェント – ガードレール : 概要
ガードレールを使用して、エージェントの入力の安全性を保持する方法を学習します。
ガードレールはエージェント向けの組み込みのセーフガード (安全装置) です。それらを使用して、LLM に送信する入力が安全で不要なものを含まないことを確実にできます。
最も一般的な使用方法の一部は :
- 個人識別情報の検出と編集 (秘匿)
- プロンプト・インジェクション対策
- ジェイルブレイク対策
- データ漏洩防止
- NSFW コンテンツ・フィルタリング
Agno 組み込みガードレール
Agno は、エージェントでそのまま利用できるいくつかの組み込みガードレールを提供しています :
- PII 検出ガードレール : PII (個人識別情報) の検出
- プロンプト注入ガードレール : プロンプト注入攻撃の試行を検出して阻止します。
- OpenAI モデレーション・ガードレール : OpenAI のコンテンツ・ポリシーに違反するコンテンツを検出します。
Agno 組み込みガードレールを使用するには、それらをインポートして pre_hooks パラメータでエージェントに渡す必要があるだけです。例えば、PII 検出ガードレールを使用するには :
from agno.guardrails import PIIDetectionGuardrail
from agno.agent import Agent
from agno.models.openai import OpenAIChat
pii_guardrail = PIIDetectionGuardrail()
agent = Agent(
name="Privacy-Protected Agent",
model=OpenAIChat(id="gpt-5-mini"),
pre_hooks=[pii_guardrail],
)
You can see complete examples using the Agno Guardrails in the examples section.
カスタム・ガードレール
BaseGuardrail クラスを拡張してカスタムガードレールを作成できます。
これは、組み込みのガードレールで処理できないチェックや変換を遂行する必要がある場合や、独自の検証ロジックを実装する場合に役立ちます。
検証を実行して、望ましくないコンテンツを検出した場合に例外を上げるためには、check と async_check メソッドを実装する必要があります。
例えば、入力が URL を含むかどうかチェックする単純なカスタム・ガードレールを作成してみましょう :
import re
from agno.exceptions import CheckTrigger, InputCheckError
from agno.guardrails import BaseGuardrail
from agno.run.agent import RunInput
class URLGuardrail(BaseGuardrail):
"""URL を含む入力を識別して停止するガードレール。"""
def check(self, run_input: RunInput) -> None:
"""入力が URL を含む場合 InputCheckError を上げます。"""
if isinstance(run_input.input_content, str):
# 基本的な URL パターン
url_pattern = r'https?://[^\s]+|www\.[^\s]+|[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}[^\s]*'
if re.search(url_pattern, run_input.input_content):
raise InputCheckError(
"入力は、許容されていない URL を含むようです。",
check_trigger=CheckTrigger.INPUT_NOT_ALLOWED,
)
async def async_check(self, run_input: RunInput) -> None:
"""Raise InputCheckError if the input contains any URLs."""
if isinstance(run_input.input_content, str):
# Basic URL pattern
url_pattern = r'https?://[^\s]+|www\.[^\s]+|[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}[^\s]*'
if re.search(url_pattern, run_input.input_content):
raise InputCheckError(
"The input seems to contain URLs, which are not allowed."
check_trigger=CheckTrigger.INPUT_NOT_ALLOWED,
)
エージェントでカスタムガードレールを使用できるようになりました :
from agno.agent import Agent
from agno.models.openai import OpenAIChat
# Agent using our URLGuardrail
agent = Agent(
name="URL-Protected Agent",
model=OpenAIChat(id="gpt-5-mini"),
# Provide the Guardrails to be used with the pre_hooks parameter
pre_hooks=[URLGuardrail()],
)
# This will raise an InputCheckError
agent.run("Can you check what's in https://fake.com?")
以上
