初心者向け

ループエンジニアリングを明確に解説

ループエンジニアリングを明確に解説

あなたのフィードの半分が突然同じことを言い始めています。エージェントにプロンプトを送るのをやめて、ループを設計し始めましょう。
Claude Codeを構築したBoris Cherny氏は、こう明確に述べています。「私はもうClaudeにプロンプトを送っていない。動いているループがある。私の仕事はループを書くことだ。」
地球上で最も人気のあるコーディングエージェントの1つを構築した人物が、それにプロンプトを送っていないのです。では、彼は代わりに何をしているのでしょうか?
それがループエンジニアリングの背後にある考え方のすべてです。では、なぜそれが見た目よりも難しいのか、詳しく見ていきましょう。

まず、ループそのものについて#

エージェントは魔法の箱ではありません。その核心は、単純なループです。
python
while True:
    response = model(context)
    if response.has_tool_calls():
        results = run_tools(response.tool_calls)
        context += results
    else:
        break
モデルがコンテキストを読みます。ツールを呼び出すよう要求します。あなたはツールを実行し、その結果をフィードバックします。モデルが再び読み取り、ツールを要求しなくなるまでこれを繰り返します。
モデル → ツール → コンテキスト → 繰り返し。
ここで人々を驚かせる部分があります。このループはすでに解決されています。主要なエージェントフレームワークは、ほぼこの6行に落ち着きます。誰もwhile文で競争しているわけではありません。
では、ループが些細なものであるなら、実際に誰もがエンジニアリングしているものは何なのでしょうか?

作業はモデルの外側に移った#

AIにおける重心は、モデルそのものから絶えず遠ざかっています。
  • プロンプトエンジニアリング:あなたが送信する言葉。
  • コンテキストエンジニアリング:モデルが見るすべてのもの。単なる指示だけではありません。
  • ハーネスエンジニアリング:ツールを実行し、状態を追跡し、エラーを処理する、モデルの周りのコード。
  • ループエンジニアリング:全体を目標に向かって駆動する自律的なサイクル。
各層はその前の層を包み込みます。プロンプトへの関心がなくなったわけではありません。プロンプトははるかに大きなシステムの小さな一部分に過ぎないと気づいただけです。
LangChainはこれを明確に述べています。エージェント = モデル + ハーネス。あなたがモデルでなければ、あなたはハーネスです。
そして、ここにあなたの優先順位を再編成すべき発見があります。ハーネスは今やモデルよりも重要です。チームはモデルを固定したまま、その周りのコードだけを変更し、ベンチマークの中位からトップ5に躍り出ました。同じ頭脳、異なるループです。
ループエンジニアリングとは、その頭脳が内部で実行するすべてのものを構築するための規律です。実際に問題が発生する部分をお見せしましょう。

難しいポイント1:いつ停止するかを知ること#

これは誰も警告してくれない問題です。
エージェントがツールの要求を停止したとき、それはターンを終了したことを意味します。それは仕事を完了したことと同じではありません。
コーディングエージェントを想像してください。コードを書き、周りを見渡し、進捗があったことを確認し、完了したと宣言します。テストはまだ失敗しています。それでも勝利を宣言したのです。
ターミナルメッセージはターンを終了させますが、タスクを終了させるわけではありません。この2つを混同することが、ループが誤動作する最も一般的な方法です。
適切なループは正しい理由で停止するため、いくつかのブレーキを重ねます:
  • 最大反復回数:スタックしたエージェントが永遠に実行できないようにするハードリミット。
  • 予算と時間制限:トークン、費用、秒数の上限。
  • 進捗なしの検出:同じ引数で同じ呼び出しを繰り返す場合、それは空回りしています。
  • 実際の完了チェック:ジョブが完了したことを証明する自動化された条件。
最後のものが最も重要な役割を担います。「完了」とは、テストが合格することを意味するべきであり、エージェントが自分の作業について良い気分になっていることではありません。

難しいポイント2:コンテキストをクリーンに保つこと#

長いループは内部から腐敗します。
エージェントが取るターンが増えるほど、古いツールの出力、行き止まり、古びた推論など、より多くのジャンクがコンテキストに積み重なります。その山が増えるにつれて、モデルのパフォーマンスは低下します。この分野ではこれをコンテキスト腐敗と呼びます。
ループはそれを悪化させます。腐敗したコンテキストはより悪い判断を生み出し、それがさらにノイズを追加し、コンテキストをさらに腐敗させます。人々はこれをドゥームループと呼び、あなたもそれを感じたことがあるでしょう。エージェントは長く実行するほど賢くなくなります。
これに対抗するには、コンテキストをバケツではなく予算として扱います:
  • 圧縮:会話が長くなったら要約し、その要約から続行します。
  • オフロード:巨大な出力をファイルにプッシュし、必要なスライスだけを保持します。
  • サブエージェント:乱雑なサブタスクを別のエージェントに任せ、そのクリーンな結果だけを返させます。
本能は、念のためすべてを保持することです。スキルは、何を捨てるべきかを知ることです。

難しいポイント3:エージェントが実際に使用できるツール#

ループは、その内部のツールと同じくらいしか機能しません。
100ものツールを積み上げると、エージェントはどれに手を伸ばすべきかを見失います。焦点を絞った、重複のないツールの厳選されたセットが勝ちます。Anthropicの経験則は鋭いです。人間のエンジニアがどのツールが適合するかを確実に言えないなら、エージェントにはチャンスがありません。
人々が予想する以上に重要なことが2つあります:
  • 書き込みを繰り返し安全にする:ループは再試行します。再試行された「顧客作成」呼び出しが2番目の顧客を作成した場合、重複レコードと二重請求で目覚めることになります。状態を変更するものはすべて、2回呼び出しても安全でなければなりません。
  • エラーメッセージを人間ではなくエージェント向けに書く:適切なエラーは、エージェントに次に何をすべきかを伝えます。ツールをリリースする前に、LLMがそのエラーを読んで次の動きを理解できるかどうかを確認してください。
ループ内では、エラーは行き止まりではありません。それは次の指示です。

難しいポイント4:ノーと言えるもの#

自律ループには静かな障害モードがあります。放置されたエージェントは自分自身に同意する傾向があります。
この議論全体で最も鋭いコメントは、それを的確に捉えていました。ループを設計することは仕事の半分であり、残りの半分は、テスト、型チェック、実際のエラーなど、ノーと言えるものをループ内に配置することです。
批評家のいないループは、自分の仕事にただうなずいているだけのエージェントです。
修正方法は、作成者とチェッカーを分離することです。1つのモデルが作業を行います。別のチェック(多くの場合、別のモデルまたはハードテスト)がそれを評価します。作業者は自分の宿題を自分で評価しません。

実際のシフト#

これでCherny氏の引用が意味をなします。
プロンプティングは、あなたがエージェントを一歩一歩操縦することです。ループエンジニアリングは、それを操縦するシステムを構築し、そして一歩下がることです。
あなたの仕事は、指示を与えることから、次の3つを設計することに変わります:
  1. 目標:エージェントが自分自身でチェックできる成功基準として記述されます。
  2. ループ:適切に停止するための健全なブレーキが付いています。
  3. 検証者:「完了」が主張ではなく証明されるようにします。
Andrej Karpathy氏はその考え方をうまく表現しています。モデルに何をすべきかを指示するのではなく、成功基準を与えて、それが実行されるのを見守ってください。彼は、スクリプトを微調整し、テストし、機能するものを保持し、機能しないものを破棄する研究ループを一晩中実行し、自分自身はループの外にいます。彼はそれを一度セットアップして、Goを押します。
それが全体の動きです。あなたは手足であることをやめ、機械を設計する人になります。

どこから始めるか#

初日から一晩で自律エージェントを手に入れる必要はありません。段階的に構築してください:
  1. 基本ループから始め、すぐに最大反復回数、タイムアウト、コスト上限を追加します。
  2. 「完了」を、後からの雰囲気ではなく、開始前の自動チェックとして定義します。
  3. コンテキストを保護します。 長い実行を圧縮し、大きな出力をオフロードし、乱雑なサブタスクを分離します。
  4. ツールを監査します。 ツールを少数に絞り、焦点を合わせ、書き込みを繰り返し安全にし、エージェントが行動できるようにエラーを書き換えます。
  5. ループに批評家を配置します。 ノーと言うものを信頼できるようになってから、完全に手放しにします。

まとめ#

ループエンジニアリングは、インストールするフレームワークやツールではありません。それは、あなたの努力をどこに向けるかというシフトです。
モデルはコモディティ化しつつあります。その周りのループこそが、今、実際のエンジニアリングが存在する場所です。
最高のビルダーは、「エージェントに何を指示すべきか?」と尋ねるのをやめました。彼らは「これを私なしで実行するシステムは何か?」と尋ね始めました。
その問いにうまく答えられれば、あなたもプロンプトを送るのをやめるでしょう。
以下は、ループエンジニアリングにおける重要なポイントのまとめです。
ループエンジニアリングにおける重要なポイント。
お読みいただきありがとうございます!
それでは、良い一日を。 Akshay