ツールのエラー処理
対象読者: ツールが失敗したときにAIが暴走したり黙って進んだりする問題を防ぎたい方
前提知識: ツール利用とは の基礎
ツールは必ず失敗します。エラー処理を設計していないと、AIは失敗に気づかずに進むか、同じ実行を延々と繰り返します。
エラーメッセージは次の行動の手がかりにする
AIにとってエラーメッセージは、次に何をするかを決める入力です。原因だけでなく、取れる選択肢まで含めます。
# 手がかりのない例
Error: failed
# 手がかりのある例
Error: ファイル 'config/settings.json' が見つかりません。
パスを確認するか、list_files でディレクトリの内容を確認してください。内部のスタックトレースをそのまま返すのは避けます。情報量は多くても、次の行動につながりません。
失敗を隠さない
もっとも危険なのは、失敗したのに正常な形の結果を返す設計です。
| 設計 | AIの解釈 | 結果 |
|---|---|---|
| 失敗時に空配列を返す | 「該当なし」と判断する | 誤った結論のまま進む |
| 失敗時にエラーを返す | 失敗を認識する | 再試行または人へ引き渡す |
「見つからなかった」と「取得に失敗した」は別の状態です。区別できる形で返します。
リトライは種類で分ける
すべてのエラーがリトライで解決するわけではありません。
| エラーの種類 | 例 | リトライ |
|---|---|---|
| 一時的な障害 | ネットワーク切断、混雑、タイムアウト | 有効(間隔を空けて数回) |
| 入力の誤り | パラメータ不正、パスの誤り | 入力を直してから再実行 |
| 権限不足 | アクセス拒否 | 無効(人へ引き渡す) |
| 対象が存在しない | 削除済みリソース | 無効(計画を見直す) |
権限不足を何度も再試行しても結果は変わりません。リトライして意味があるのは一時的な障害だけです。
上限を決めて人へ渡す
リトライ回数には上限を設け、超えたら自動で続けずに人へ引き渡します。上限がないと、自己修正のループと組み合わさって、同じ失敗を長時間繰り返すことがあります。
まとめ
- エラーメッセージには、失敗内容と次の行動の手がかりを含める
- 失敗時に正常な形の結果を返すと、AIは誤りに気づかず進んでしまう
- リトライが有効なのは一時的な障害のみで、権限不足などには効かない
- リトライ上限を決め、超えたら人へ引き渡す
関連リンク
クイズ