
AIエージェントのテストの多くは、1回しか実施されません。それも、開発に携わった本人が、すでにうまくいくと分かっているプロンプトを実行するだけです。ハッピーパスのテストは、エージェントが設計どおりに動くことは証明しますが、利用者が悪意のあるペイロードを貼り付けたり、権限の範囲を逸脱させようとしたり、(例えば)6度にわたってシステムに食い下がったりしたときに何が起きるかについては、何も明らかにしません。
DataRobotのAgent Assistには現在、敵対的評価(adversarial evaluation)が組み込まれています。これは、自動化されたマルチターンのレッドチーミングであり、デプロイの前に、フレームワーク(LangGraph、CrewAI、LlamaIndex、あるいは素のPython)を問わず、エージェントに敵対的な圧力をかけます。
ハッピーパスのテストがうまくいかない理由
エージェントのシステムプロンプトを書くエンジニアには、それを壊そうとすることに対する構造的な偏りが働きます。専任のレッドチームであれば、こうした抜け穴を見つけられますが、手作業のレッドチーミングは、すべてのプルリクエストやプロンプトの微調整に対応できるほどの規模には対応できません。
敵対的評価は、エージェントのセキュリティに関する規律を、開発の業務フローの中に直接自動化して組み込むことで、このギャップを埋めます。エージェントの安全性を、継続的インテグレーション(CI)のように扱うわけです。
マルチターンの攻撃ベクトル
敵対的評価のスキルは、エージェントのスペックとコードを分析し、3つの異なるベクトルにわたって、対象を絞ったシナリオの実行を行います。
- 攻撃(Attack): プロンプトインジェクション、パストラバーサル、権限範囲のエスカレーションを試み、エージェントのガードレールを回避しようとします。
- 振る舞い(Behavior): エッジケース、曖昧なリクエスト、想定外の利用者の振る舞いをテストします。
- 持続性(Persistence): マルチターンのやり取りにわたって持続的に反論・押し返しを行い、エージェントが時間の経過とともにガードレールを維持できるかどうかを検証します。
実行中は、敵対的な役割を担うLLMが会話を進行させ、フィクスチャエンジンが合成データを使ってツールの応答を模擬します。本番システムは隔離された状態を保ちます。実際のデータ照会が必要な場合は、読み取り専用のツールを明示的に有効化できますが、状態を変更するツールは実行がブロックされます。
人が関与する是正プロセス
シナリオが不備を発見した場合、Agent Assistは単にエラーを記録するだけではありません。的を絞った修正案を提案し、エンジニアを巻き込みます。
- 不備の検知: 評価エンジンが、会話の全文記録と攻撃に使われたペイロードを記録します。
- 修正案の提示: Agent Assistが、最小限の是正パッチ(プロンプトの追加やコードによるガード)を生成します。
- 開発者による承認: 明示的な承認なしには、何も変更されません。
- 自動的な再テスト: 承認されると、パッチが適用され、エージェントが持ちこたえるか、設定した上限に達するまで、シナリオが再実行されます。
生成物とコストモデル
それぞれの実行は、あらかじめ設定した修正ラウンドの上限(既定値は3ラウンド)に制限されるため、是正のループが際限なく時間やモデルのコストを消費することはありません。実行の終わりに、Agent Assistは、次の内容を含む整理されたeval_report.mdという生成物を出力します。
- 攻撃トラックごとの合格・不合格の指標
- 検知されたすべての不備についての、平易な言葉での内訳
- 提案された修正と、承認された修正の監査証跡
- プルリクエストに添付できる、明確な準備完了の判定
はじめ方
DataRobot OpenCode、Claude Code、CursorのいずれかでDataRobot Agent Assistスキルを使い、今すぐ試してみてください。
※注意:エージェント型AIの機能は、プレミアム機能です。有効化にはDataRobot担当者への連絡が必要です。
本ブログは「Adversarial evaluation for Agent Assist: ship agents that survive production」の抄訳版です。