# ADKの便利で実践的な使い方
✋ 「本当にこのメールを送信しますか?」— ADKのAction Confirmationsは、不可逆な操作の前にユーザー確認を挟む、安全なエージェント構築のための仕組みです。
📌 タイトル:Action Confirmations — 不可逆操作の事前確認
🔗 URL:
🧩 概要
ADKのAction Confirmationsは、メール送信、データ削除、決済処理など、取り消しが困難な操作の実行前にユーザーの明示的な承認を求める機能です。エージェントが「送信してよいですか?」と確認し、ユーザーが承認した場合のみ実行されます。これにより、自律的なエージェントでありながら、重要な判断ポイントでは人間のコントロールを維持できます。
🛠 使い方
確認付きツールの定義方法です。
確認付きツールを定義するには、`google.adk` から `Agent` と `ToolContext` をインポートします。`send_email(to: str, subject: str, body: str, tool_context: ToolContext)` 関数では、実際の送信前に `tool_context.actions.request_confirmation(message=...)` を呼び出し、宛先・件名・本文のプレビューを含む確認メッセージを表示します。ユーザーが承認した場合のみ、メール送信処理が実行されます。同様に `delete_records(table: str, condition: str, tool_context: ToolContext)` では、削除対象の件数を事前にカウントし、確認メッセージに件数を含めてユーザーに承認を求めます。これらのツールを `Agent` の `name="admin_assistant"`、`model="gemini-2.5-flash"` に `tools` として渡します。
🏗 実践的な使い方
**確認が必要な操作の判断基準**: 以下の操作には確認を付けることを推奨します。
- 外部への送信(メール、メッセージ、API呼び出し)
- データの変更・削除
- 課金が発生する操作
- 権限変更やアクセス制御の変更
決済処理の例として `process_payment(amount: float, currency: str, recipient: str, tool_context: ToolContext)` を定義します。この関数では `tool_context.actions.request_confirmation(message=...)` で送金先・通貨・金額を含む確認メッセージを表示し、ユーザーの承認後に `payment_gateway.charge(amount=..., currency=..., recipient=...)` を実行して決済を処理します。
**確認メッセージの設計**: 確認メッセージには、操作の対象・影響範囲・不可逆性を明確に記載します。ユーザーが判断に必要な情報を過不足なく提供しましょう。
**段階的な確認**: 複数のステップがある場合、各ステップで確認を取るか、最終ステップでまとめて確認するかを設計します。ユーザー体験とのバランスを考慮してください。
💡 ユースケース
📧 メール・メッセージの送信確認
🗑️ データベースレコードの削除確認
💳 決済・送金の実行確認
🔐 権限変更・アクセス制御の変更確認
⚠️ 注意点
- 確認が多すぎるとユーザー体験が悪化します。本当に不可逆な操作に絞って確認を設定してください。
- 確認メッセージが不十分だと、ユーザーが適切な判断を下せません。操作の影響を具体的に記載しましょう。
- バッチ処理や自動化パイプラインでは確認がボトルネックになります。自動化が必要な場面では確認をスキップする設計も検討してください。
✨ Action Confirmationsを適切に設定することで、エージェントの自律性と人間の安全管理を両立できます。「取り返しのつかない操作」にだけ確認を入れるのがコツです!
#
ADK# #
AIAgent#