Agno 2.x : エージェント – ガードレール : 概要

ガードレールを使用して、エージェントの入力の安全性を保持する方法を学習します。
ガードレールはエージェント向けの組み込みの安全装置です。それらを使用して、LLM に送信する入力が安全で不要なものを含まないことを確実にできます。

Agno 2.x : Learn : エージェント – ガードレール : 概要

作成 : クラスキャット・セールスインフォメーション
作成日時 : 11/03/2025
バージョン : Agno 2.2.6

* 本記事は docs.agno.com の以下のページを独自に翻訳した上で、補足説明を加えてまとめ直しています。スニペットはできる限り日本語を使用しています :

* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。

 

クラスキャット AI 研究開発支援サービス ⭐️ 創立30周年(30th Anniversary)🎉💐

クラスキャット は AI に関する各種サービスを提供しています。お気軽にご相談ください :

  • AI 研究開発支援 [詳細]

    1. AI エージェント構築支援
    2. 画像認識 (医療系含む) / 画像生成

  • AI 導入個別相談会(無償)実施中! [詳細]

  • PoC(概念実証)を失敗させないための支援 [詳細]

お問合せ : 下記までお願いします。

  • クラスキャット セールス・インフォメーション
  • sales-info@classcat.com
  • ClassCatJP

 

 

Agno 2.x : Learn : エージェント – ガードレール : 概要

ガードレールを使用して、エージェントの入力の安全性を保持する方法を学習します。

ガードレールはエージェント向けの組み込みのセーフガード (安全装置) です。それらを使用して、LLM に送信する入力が安全で不要なものを含まないことを確実にできます。

最も一般的な使用方法の一部は :

  • 個人識別情報の検出と編集 (秘匿)

  • プロンプト・インジェクション対策

  • ジェイルブレイク対策

  • データ漏洩防止

  • NSFW コンテンツ・フィルタリング

 

Agno 組み込みガードレール

Agno は、エージェントでそのまま利用できるいくつかの組み込みガードレールを提供しています :

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?")

 

以上