近年注目を集めているループエンジニアリング
ループエンジニアリングとは、AIエージェントに毎回プロンプトを打って指示を出すのをやめ、AIが目的を達成するまで自律的に「作業 → 検証 → 修正」を繰り返し続けるシステムを設計する技術です。
ReAct という手法
このループエンジニアリングを成立させる1つのアイデアとして ReAct をあげます。これは、「推論」と「行動」を、交互に組み合わせる手法です。
ここでは、ループさせるエージェントの基礎として ReAct が研究された論文の解説をします。
なおこの論文ではナレッジ構築のツールとして Wikipedia の API を活用しています
プロンプティング手法の特徴
ReAct のプロンプトは、実は推論と行動だけでなく、さらに、行動に対する「環境からの観察(Observation)」を組み合わせた構成になっています。
論文の例では以下のようになります。観察の行程が重要であることが分かります。
- 質問:Apple Remote以外でApple TVが元々ストリーミングできるプログラムをコントロールできる別のデバイスは何ですか?
1. Thought 1(思考): 質問に答えるためには、まずApple TVが元々ストリーミングされていたプログラムを見つける必要がある
2. Action 1(行動): Search[Apple TV]
3. Observation 1(観察): Apple TVは、Apple Inc.が開発したデジタルメディアプレーヤーおよびマイクロコンソールです。これは、MacintoshまたはWindows PC上のiTunes、または...(略)からストリーミングされたメディアを再生できます
4. Thought 2(思考): Apple TVは元々MacintoshやWindows PC上のiTunesにストリーミングされていた。次に「iTunes」をコントロールできる他のデバイスを探す必要がある
5. Action 2(行動): Search[iTunes]
6. Observation 2(観察): iTunesはソフトウェアプログラムであり...(略)。AppleのRemoteアプリを使用すると、iOSデバイスからiTunesをコントロールできます
7. Thought 3(思考): iTunesは「AppleのRemoteアプリ(iOSデバイス上)」でコントロールできることがわかった。したがって、答えは「iOS device」または「Apple Remote app」だ
8. Action 3(行動): Finish[iOS device] (タスクを終了)
回答は間違った方法にどんどん進んでいかないのか?
予期せぬ方向にループすることが予想されます。実際しばらく任せていた生成結果に対して「ちょっと違うんだけどなあ」ということはあると思います。
例えば、Chain-of-Thought(CoT) は、モデル自身の内部表現を頼りに思考の連鎖を生み出すため、一度ハルシネーションを生成してしまうと、その誤った情報が次の思考ステップへと引き継がれ、エラーが拡大していく課題がありました。
そこで、外部環境(この論文では Wikipedia API )から得られた情報を都度ループに取り込んで次の思考を組み立てるようにし、できるだけファクト・ドリブンにしています。
ループの破綻(無限ループ)が起きないか
一方、外部情報を挟むことによって推論の柔軟性が下がり、無限ループなどループの行き詰まりや破綻が発生してしまいます。そこで、研究として以下のような構造的な工夫やアプローチを検証していました。
1. メソッドのハイブリッド化
適度に CoT を組み合わせる戦略です。
- ReAct → CoT-SC:行き詰まり時のフォールバック
あらかじめ設定した一定のステップ数以内で回答に到達できなかった場合、ループの破綻や無限ループとみなして自動的に内部知識の推論(CoT-SC)へ切り替える - CoT-SC → ReAct:確信度による切り替え
CoT-SCで複数サンプリングを行い、多数派の回答の割合が半分未満だった場合(≒知識に自信がない)に、外部検索を行うReActのループへと移行させます
2. Human in the loop
人が思考過程を見て、必要なところを修正したりヒントを与えたりする方法です。
- Thought Editing:実行中のループを監視し、AIが間違った思考やハルシネーションを起こした際に、その「Thought」のテキストを直接書き換えるアプローチ
3. ファインチューニング
王道的なやり方ですが、ループプロセスの回し方の成功事例を学ばせます。
論文では、ReActが正しくタスクを達成した行動軌跡(3,000例)を収集し、モデル自体をファインチューニングする実験を行っていました。
また、反省文を書かせようなアプローチもあります。
現在のループエンジニアリング的な拡張
現在のループエンジニアリングは今回紹介したようなモデル内部のクローズなループというより、以下のようなシステム全体のマクロなループであると言えます。
1. ソースコードを書く
2. CIでテストを走らせてエラーログを確認
3. 次の修正方針を決める
この論文には「クローズドループシステムを実証した初めての事例」とあり、引用する形でここから如何に正しくループさせるのか、といったテクニックが多く生み出されています。
On the value of internal reasoning vs. external feedback To our knowledge, ReAct is the first
demonstration of combined reasoning and action using an LLM applied to an interactive environment
within a closed-loop system.
システムの違いによる差異はあるにしても発想的には似たものがあり、自動でアプリを開発するシステムのようなものをつくりたいときにも取り入れられそうです。
参考




