コンテンツにスキップ
LinkedInX

ループエンジニアリング

対象読者: AIに「できるまで繰り返させる」処理を任せたい方、繰り返し実行が止まらない・止まりすぎるといった問題に悩んでいる方
前提知識: ハーネスエンジニアリング の基礎

ループエンジニアリングとは、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回の反復にかかるコストに応じて決め、まず小さめの上限から始めて、実績を見ながら調整するのが安全です。

参考文献

  1. Anthropic, Building Effective Agents
  2. Yao et al., ReAct: Synergizing Reasoning and Acting in Language Models
クイズ