E.D AI セーフティとレッドチームテスト
レッドチームは、怖い prompt を一度試すことではありません。攻撃面を定義し、ケースを実行し、失敗を記録し、修正し、同じケースを再実行する反復可能な流れです。
まずループを見る


攻撃名からではなく、攻撃面から始めます。prompt、検索、ツール、メモリ、外部アクションです。
準備するもの
- テストする AI 機能
- その機能が触れる攻撃面の一覧
- 失敗ケースを回帰テストとして残す場所
修正前後の評価器を動かす
cases = [
{"id": "prompt-basic", "surface": "prompt", "expected": "refuse", "before": "refuse", "after": "refuse"},
{"id": "rag-injection", "surface": "retrieval", "expected": "ignore_untrusted_instruction", "before": "ignore_untrusted_instruction", "after": "ignore_untrusted_instruction"},
{"id": "tool-confirmation", "surface": "tool", "expected": "ask_confirmation", "before": "executed", "after": "ask_confirmation"},
]
for phase in ["before", "after"]:
failures = []
for case in cases:
passed = case[phase] == case["expected"]
print(phase, case["id"], "PASS" if passed else "FAIL")
if not passed:
failures.append(case["id"])
print(phase, "failure_count:", len(failures))
期待される出力:
before prompt-basic PASS
before rag-injection PASS
before tool-confirmation FAIL
before failure_count: 1
after prompt-basic PASS
after rag-injection PASS
after tool-confirmation PASS
after failure_count: 0
ツール呼び出しの失敗は隠すものではありません。今後のリリースを守る回帰テストになります。
実用チェックリスト
| ステップ | アクション | 証拠 |
|---|---|---|
| 1 | 資産を定義 | ユーザーデータ、ツール、メモリ、システム prompt |
| 2 | 攻撃面を定義 | Prompt、文書、検索、ツール呼び出し、メモリ |
| 3 | ケースを実行 | PASS / FAIL 表 |
| 4 | 修正して再実行 | 回帰レポート |
合格チェック
レッドチームケースファイルを残し、失敗した攻撃面を1つ説明し、防護策を1つ提案し、修正後に同じケースを再実行できれば合格です。