Agno 2.x : エージェント – Pre フックと Post フック

エージェントで pre フックと post フックを使用する方法について学習します。
pre フックと post フックはエージェント実行の入力と出力を検証して変更するための単純な方法です。

Agno 2.x : Learn : エージェント – Pre フックと Post フック

作成 : クラスキャット・セールスインフォメーション
作成日時 : 11/01/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 : エージェント – Pre フックと Post フック

エージェントで pre フックと post フックを使用する方法について学習します。

pre フックと post フックはエージェント実行の入力と出力を検証して変更するための単純な方法です。

 

Pre フック

pre フックは、エージェントが入力を処理する前に実行され、LLM に渡される内容を完全に制御できます。

これらは、検証、セキュリティチェックや、エージェントが受け取る入力へのあらゆるデータ前処理タスクを実装するために最適です。

 

一般的なユースケース

入力検証

  • 入力の形式、長さ、内容やその他のプロパティの検証。

  • 機密情報の除去やマスキング

  • 入力データの正規化

データ前処理

  • 入力形式や構造の変換

  • 入力を追加コンテキストで拡充する (enrich)

  • 入力を LLM に送信する前に、その他のビジネスロジックを適用する。

 

基本的な例

入力長を検証し、長すぎる場合にはエラーを上げる、非常に単純な pre フックを作成しましょう :

from agno.agent import Agent
from agno.exceptions import CheckTrigger, InputCheckError

# Simple function we will use as a pre-hook
def validate_input_length(
    run_input: RunInput,
    session: AgentSession,
    user_id: Optional[str] = None,
    debug_mode: Optional[bool] = None,
) -> None:
    """Pre-hook to validate input length."""
    max_length = 1000
    if len(run_input.input_content) > max_length:
        raise InputCheckError(
            f"Input too long. Max {max_length} characters allowed",
            check_trigger=CheckTrigger.INPUT_NOT_ALLOWED,
        )

agent = Agent(
    name="My Agent",
    model=OpenAIChat(id="gpt-5-mini"),
    # Provide the pre-hook to the Agent using the pre_hooks parameter
    pre_hooks=[validate_input_length],
)

You can see some complete examples of pre-hooks in the Examples section.

 

Pre フック・パラメータ

pre フックはエージェント実行中、自動的に実行されます。一部のパラメータは自動的に注入されます。

You can learn more about the parameters in the Pre-hooks reference.

 

Post フック

post フックは、エージェントがレスポンスを生成した 後に 実行され、ユーザに届く前に出力を検証、変換、拡充することを可能にします。

それらは、出力フィルタリング、コンプライアンス・チェックやその他の必要な出力変換を処理するのに最適です。

 

一般的なユースケース

出力検証

  • レスポンス形式、長さ、内容の品質の検証

  • レスポンスからの機密情報や不適切な情報の削除

  • ビジネスルールや規制への準拠の保証

出力変換

  • レスポンスにメタデータやコンテキストを追加する。

  • 様々なクライアントやユースケースに合わせて出力形式を変換する。。

  • その他必要な出力変換の実装

 

基本的な例

出力長を検証し、長すぎる場合にはエラーを上げる、単純な post フックを作成しましょう :

from agno.exceptions import CheckTrigger, OutputCheckError
from agno.run.agent import RunOutput

# Simple function we will use as a post-hook
def validate_output_length(run_output: RunOutput) -> None:
    """Post-hook to validate output length."""
    max_length = 1000
    if len(run_output.content) > max_length:
        raise OutputCheckError(
            f"Output too long. Max {max_length} characters allowed",
            check_trigger=CheckTrigger.OUTPUT_NOT_ALLOWED,
        )

agent = Agent(
    name="My Agent",
    model=OpenAIChat(id="gpt-5-mini"),
    # Provide the post-hook to the Agent using the post_hooks parameter
    post_hooks=[validate_output_length],
)

You can see some complete examples of post-hooks in the Examples section.

 

Post フック・パラメータ

Post フックはエージェント実行中、自動的に実行されます。一部のパラメータは自動的に注入されます。

You can learn more about the parameters in the Post-hooks reference.

 

ガードレール

pre フックの一般的なユースケースはガードレールです : エージェント向けの組み込みのセーフガード (安全対策機能) です。

You can learn more about them in the Guardrails section.

 

以上