ループエンジニアリング
ループエンジニアリングとは、AIに同じ処理を繰り返させるときの反復構造そのもの——1回の反復で何をどこまで進めるか、いつ止めるか、何を次の反復へ引き継ぐか、どのくらいの間隔で反復するか——を設計する考え方です。
なぜループエンジニアリングが必要か
ハーネスエンジニアリングは、AIが1回の実行で使える道具・権限・検証・ログを整えます。しかし実務のタスクの多くは、1回の実行では終わりません。テストが通るまで直す、レビュー指摘がなくなるまで直す、条件を満たすまで待って再試行する——こうした「できるまで繰り返す」処理には、ハーネスとは別の設計判断が必要です。
graph LR
Prompt["プロンプトエンジニアリング\n指示をよく書く"]
Context["コンテキストエンジニアリング\n必要情報を渡す"]
Harness["ハーネスエンジニアリング\n実行・検証・回復まで設計する"]
Loop["ループエンジニアリング\n反復の構造を設計する"]
Prompt --> Context --> Harness --> Loopハーネスが「1回の実行で何が使えるか」を決めるのに対し、ループは「その実行を何度、どう繰り返すか」を決めます。ハーネスなしにループを回すと、毎回検証されない結果が積み重なります。ループなしにハーネスだけを整えても、1回で終わらない作業は人手で何度も呼び出すしかありません。両方が揃って初めて、複数回の反復を要する作業を安全に自動化できます。
Anthropicは、生成と評価を繰り返しながら出力を洗練させる「evaluator-optimizer」のようなワークフローパターンを、エージェント設計の基本形の一つとして挙げています。[1] AIエージェントが採用するReActループ(推論→行動→観察を繰り返す構造)も、ループエンジニアリングが扱う反復構造の一種です。[2]
ループ設計が決める4つのこと
| 決定事項 | 問い |
|---|---|
| 粒度 | 1回の反復で、何をどこまで進めるか |
| 終了条件 | いつ止めるか(完了・上限・進捗なし) |
| 引き継ぐ状態 | 前の反復の何を次へ渡し、何を捨てるか |
| ペース配分 | 次の反復まで、どれだけ間隔を空けるか |
1. 粒度を決める
1回の反復が大きすぎると、途中の失敗が分かりにくくなります。小さすぎると、反復ごとの往復コストが積み重なります。「テストを1つ直す」「レビュー指摘を1件解消する」のように、1回の反復が1つの検証可能な単位になるよう区切ります。
2. 終了条件を決める
終了条件は最低でも2種類を組み合わせます。
- 完了条件 — 目的を達成したと判定できる基準(テストが全て通る、指摘がゼロになる)
- 上限 — 完了条件を満たさなくても止める基準(反復回数、経過時間、コスト)
完了条件だけでは、達成できない目標に対して反復が止まりません。上限だけでは、達成できているのに早く切り上げてしまいます。両方を組み合わせ、上限に達したら自動で続けず人間に引き渡します。
3. 引き継ぐ状態を決める
反復のたびに何もかも引き継ぐと、長い会話で品質が落ちる理由と同じ問題が起こります。引き継ぐべきは「前回何を試し、結果はどうだったか」という要点であり、試行錯誤の全履歴ではありません。
反復2への引き継ぎ例:
前回の変更: config.jsonのtimeout値を30に変更
結果: テストA・Bは通過、テストCが依然失敗(エラー: connection refused)
次に試すこと: テストCが参照する接続先の設定を確認する4. ペース配分を決める
反復と反復の間隔は、待っている対象の変化速度に合わせます。ファイルの変更を検知するだけなら短い間隔でよく、外部サービスのデプロイ完了を待つなら、その処理に要する時間に応じた間隔が適切です。間隔を常に最短にすると、変化していない対象を無駄に確認し続けることになります。
反復しても収束しない場合
ループでもっとも危険なのは、進捗が検出できないまま反復を続ける状態です。同じ誤りを繰り返す、あるいは直しては別の箇所を壊すことを行き来する(振動する)状態は、放置すると上限に達するまで時間とコストを消費し続けます。
対策は、各反復の結果を前回と比較し、進捗の有無を判定することです。
- 前回と同じ検証結果が続いていないか
- 一度直った箇所が再び壊れていないか
- 反復を重ねても差分が縮まっていないか
進捗が確認できない反復が一定回数続いたら、同じ方針で続けるのではなく、自己修正とリフレクションで扱う「対象を変える」判断に切り替えるか、反復を止めて人間に判断を委ねます。
まとめ
- ループエンジニアリングは、AIに同じ処理を繰り返させるときの反復構造そのものの設計
- ハーネスが「1回の実行環境」を整えるのに対し、ループは「実行を何度どう繰り返すか」を決める
- 粒度・終了条件・引き継ぐ状態・ペース配分の4つを設計する
- 完了条件と上限は必ず組み合わせ、進捗が検出できない反復が続いたら止めて人間に委ねる
よくある質問
Q: ループエンジニアリングは自己修正(リフレクション)と同じですか?
A: 異なります。自己修正は「1回の反復の中で、何を根拠に結果を検証し、どう方針を直すか」という反復の中身を扱います。ループエンジニアリングは、その反復自体を何回・どこまで・どんな間隔で繰り返すかという、反復の外側の構造を扱います。
Q: 反復回数の上限は、どのくらいに設定すればよいですか?
A: 固定の正解はありません。タスクの複雑さや1回の反復にかかるコストに応じて決め、まず小さめの上限から始めて、実績を見ながら調整するのが安全です。
参考文献
- Anthropic, Building Effective Agents
- Yao et al., ReAct: Synergizing Reasoning and Acting in Language Models