登録して招待リンクを共有すると、動画再生報酬と紹介報酬を獲得できます。

cv usk
@cv_usk
AI / Software Research Notes AI Agent, LLMOps, MLOps, Software Architecture 投稿は個人の意見です。
参加 May 2026
279 フォロー中    408 ファン
# ADK 2.0の便利だけど知られていない機能 🌍 エージェントの動作をピンポイントで制御したい場合、コールバックの種類と使い分けを理解していますか? ADK 2.0は、エージェントのライフサイクル、LLM呼び出し、ツール実行の3層にわたるコールバックを提供しています。各コールバックのBefore/Afterパターンを活用することで、バリデーション、ガードレール、ログ記録などを柔軟に組み込めます。 📌 タイトル:コールバックの種類とパターン 🔗 URL: 🧩 概要 ADK 2.0のコールバックは3つのカテゴリに分かれています。エージェントライフサイクルコールバック(`BeforeAgentCallback` / `AfterAgentCallback`)は、エージェントの実行前後に処理を挿入します。LLMコールバック(`BeforeModelCallback` / `AfterModelCallback`)は、モデル呼び出しの前後で入力の修正やガードレールの適用を行います。ツールコールバック(`BeforeToolCallback` / `AfterToolCallback`)は、ツール実行の前後でバリデーションや結果の加工を行います。 🛠 使い方 各コールバックはエージェントの定義時に指定します。Pythonでは正確なパラメータ名(`callback_context`、`llm_request`、`tool_context`)を使用する必要があります。 ```python from adk import Agent async def before_agent(callback_context) -> None: """エージェント実行前のバリデーション""" print(f"Agent starting: {callback_context.agent_name}") # Noneを返すと通常実行、値を返すとスキップ async def before_model(callback_context, llm_request): """モデル呼び出し前のガードレール""" # リクエストの検証や修正が可能 if contains_sensitive_info(llm_request): return block_response() # 値を返すとモデル呼び出しをスキップ return None # 通常のモデル呼び出しを続行 async def after_tool(callback_context, tool_context, tool_response): """ツール実行後のログ記録""" log_tool_usage(tool_context.tool_name, tool_response) return None agent = Agent( name="my_agent", model="gemini-3.5-flash", before_agent_callback=before_agent, before_model_callback=before_model, after_tool_callback=after_tool, ) ``` Beforeコールバックで値を返すとその後の処理がスキップされ、Noneを返すと通常の処理が続行されます。 🏗 本番システムへの組み込み方 ・`BeforeAgentCallback` で入力のバリデーションや認証チェックを実装し、不正なリクエストを早期に拒否する ・`BeforeModelCallback` でガードレール(PII検出、有害コンテンツフィルタ等)を適用する ・`AfterModelCallback` でモデルの出力を検証し、フォーマットやポリシーへの準拠を確認する ・`AfterToolCallback` でツールの実行結果をログに記録し、監査証跡を残す 💡 ユースケース 🛡 `BeforeModelCallback` で個人情報を含むプロンプトをブロックする 📝 `AfterAgentCallback` でエージェントの実行結果をデータベースに記録する ✅ `BeforeToolCallback` でツール呼び出しパラメータのバリデーションを行う 🔍 `AfterModelCallback` でモデル出力のJSON形式を検証して再試行を促す ⚠️ 注意点 Pythonではコールバック関数のパラメータ名が正確である必要があります。`callback_context`、`llm_request`、`tool_context` などの名前が一致しないと正しく動作しません。また、Beforeコールバックで意図せず値を返してしまうと、モデル呼び出しやツール実行がスキップされてしまうため注意してください。コールバックはプラグインの後に実行される点も考慮が必要です。 ✨ コールバックを適切に使い分けることで、エージェントの振る舞いをきめ細かく制御できます。セキュリティ、品質保証、監査の要件に応じて、各レイヤーのコールバックを組み合わせてください。 #ADK# #AIAgent#
もっと見る