自己修正とリフレクション
対象読者: AIが誤った結果に気づかず進んでしまう問題を解決したい方、自己チェックの仕組みを設計したい方
前提知識: 計画とタスク分解 の基礎
自己修正(リフレクション)とは、AIが自分の実行結果を確認し、想定と違えば方針を直す仕組みです。計画が「進む方向を決める」なら、自己修正は「ずれたときに戻る」役割を担います。
基本の流れ
graph LR
Act["実行\n工程を進める"] --> Check["検証\n結果は期待どおりか"]
Check -->|期待どおり| Next["次の工程へ"]
Check -->|違う| Fix["方針を修正して再実行"]
Fix --> Act重要なのは、検証の材料を何にするかです。ここで設計が分かれます。
自己評価だけでは足りない
もっとも簡単な検証は、AI自身に「この結果は正しいか」と確認させる方法です。手軽ですが弱点があります。誤りの原因が自分の判断にある場合、同じ視点で見直しても気づけないのです。
信頼性を上げるには、外部の客観的な事実を検証材料に使います。
| 検証材料 | 例 | 信頼性 |
|---|---|---|
| 自己評価 | AIが自分の出力を見直す | 低い(見落としが再現する) |
| 実行結果 | テストの成否、コマンドの終了コード | 高い |
| 別視点のレビュー | サブエージェントによる確認 | 中〜高 |
| 人の確認 | レビューによる承認 | 高い(ただしコストがかかる) |
実務では「テストで機械的に確認できる部分は実行結果、判断が必要な部分は別視点のレビューか人の確認」という組み合わせになります。
ループの上限を決める
自己修正は無限に繰り返せてしまいます。改善しないまま同じ修正を試み続けると、時間とコストだけが増えます。
- 修正回数の上限を決める(例:同じ工程は3回まで)
- 上限に達したら、自動で続行せず人に引き渡す
- 同じ失敗が2回続いたら、修正ではなく計画そのものを見直す
何を修正するかを区別する
失敗したときに直すべき対象は、いつも同じではありません。
| 失敗の種類 | 直す対象 |
|---|---|
| 実行時のエラー | 入力やパラメータ |
| 期待と違う出力 | 指示やコンテキストの与え方 |
| 前提が崩れている | 計画そのもの |
同じ手順を繰り返すだけの再試行は、3種類目の失敗には効きません。
まとめ
- 自己修正は、実行結果を検証して方針を直す仕組み
- 自己評価だけでは同じ見落としが再現するため、外部の客観的事実を使う
- 修正ループには上限を設け、超えたら人へ引き渡す
- 失敗の種類によって、直す対象(入力・指示・計画)を切り替える
関連リンク
クイズ