リフレクション:出力を自己批判して直すループ

コード生成・推論・文章の品質を、モデル自身の批評で一段引き上げる手法がリフレクションだ。生成と評価と修正を繰り返すループの組み方、反復上限や停止条件の決め方、コストとの釣り合いまでを原理から整理できる。

応用AIエージェントLLMリフレクション設計パターン最終更新: 2026-07-28
3つの要点
TL;DR
  1. リフレクションは、生成した出力をモデル自身に批評させ、その批評を手がかりに出力を作り直す反復ループだ。生成→評価→修正を数回繰り返し、一度で正解を狙わず、誤りを見つけて削る後段の工程で品質を底上げする。Reflexionなどが代表例だ。
  2. 効き方の鍵は、評価が生成より易しいという非対称性にある。テストの合否やコンパイル結果など外部の客観信号を批評に与えられる課題ほど収束しやすい。批評役を別エージェントに分けると、生成側の思い込みから独立して誤りを指摘でき、精度が上がりやすい。
  3. 代償は反復ごとに膨らむコストとレイテンシだ。放置すると自信満々の誤答を追認したり無限ループに陥る。反復上限・スコアの改善が止まったら打ち切る停止条件・時間やコストの上限を必ず設け、検証手段の無い課題では過信しないことが要点だ。

横にスクロール

初稿を批評して改訂し、収束条件で受理または打ち切る流れ
批評と修正を分け、改善幅・最大回数・外部検証で収束を判定する。

どんなパターンか

大規模言語モデル(LLM)は、一度の生成で完璧な答えを出すとは限らない。長いコードや込み入った推論では、もっともらしいが誤った出力を平然と返す。リフレクション(自己批判・自己改善)は、この弱点を「一発勝負をやめる」ことで補う設計パターンだ。モデルにまず下書きを作らせ、その出力を批評にかけ、指摘を踏まえて作り直す。この生成→評価→修正を数回繰り返し、後段の工程で誤りを削って品質を底上げする。

発想は、人間の書き手が下書きを推敲するのと同じだ。違いは、批評も修正も同じモデル、あるいはもう一体のモデルに担わせ、ループとして自動化する点にある。評価役には二通りある。生成したモデル自身に振り返らせる自己批判と、判定専用の別の検証エージェントに点検させる方式だ。代表的な手法にReflexionがあり、失敗の原因を言語化して文脈に残し、次の試行の方針を書き換えていく。

リフレクションは特定のタスクに限らず、あらゆる生成の外側にかぶせられる汎用の枠だ。コード生成・数理的な推論・文章作成のいずれでも、品質の底上げが報告されている。同じ入力から出力を何度もサンプリングし、多数決や最良の一つを選ぶ手法(自己整合性やbest-of-N)とは似て非なるものだ。これらが互いに独立した複数案から選ぶのに対し、リフレクションは前の失敗を明示的に読み込み、それを踏まえて次の一手を組み直す。過去の批評を文脈に積み上げる点が、単なる引き直しとの決定的な違いになる。

なぜ作り直すと品質が上がるのか

鍵は、多くの課題で評価が生成より易しいことだ。ゼロから正しいコードを書くのは難しくても、テストを走らせて「どこが落ちたか」を知るのはたやすい。リフレクションは、この易しい評価を手がかりに、難しい生成を少しずつ正す。逆に、評価が生成と同じくらい難しい課題では、後述のとおり効果は薄い。

仕組み

リフレクションのループは、三つの役割から成る。生成は下書きや解答を作る。評価はその出力を採点し、どこがなぜ悪いかを言葉にする。修正は批評を入力に加え、出力を作り直す。オーケストレータ(制御コード)がこの三つを順に呼び、停止条件を満たすまで回す。要は、生成の外側に「点検して直す」工程を足した制御系だ。肝心なのは、批評を単に眺めて捨てるのではなく、次の生成の文脈に書き戻すことだ。過去の指摘が作業メモリとして残るからこそ、モデルは同じ誤りを避けて前進できる。

制御ループの骨組み:
  draft = 生成(タスク)
  for i in 1..N:                    # N は反復上限
      score, critique = 評価(draft)  # 自己批判 または 検証役
      合格なら:            return draft   # 停止条件1: 目標到達
      改善が頭打ちなら:    return best    # 停止条件2: 伸び止まり
      draft = 修正(draft, critique)  # 批評を反映して作り直す
  return best                        # 停止条件3: 上限で打ち切り

具体的な流れを、コード生成を例に追う。評価に単体テストという外部の物差しを使う点に注目してほしい。

擬似トレース: 「配列を昇順に並べる関数を書け」

[反復1]
  生成: 実装を出力(空配列の扱いを誤る)
  評価: 単体テストを実行 → 3件中1件が失敗(空配列)
  批評: 「空配列のとき早期リターンが無い」
  修正: 空配列のガードを追加

[反復2]
  生成: ガードを足した実装
  評価: 単体テストを実行 → 3件すべて成功
  停止: 合格条件を満たしループ終了、出力を確定

批評は、具体的で行動につながるほど良い。「良くない」ではなく「空配列で例外が出る」と場所と理由を名指せてこそ、修正が的を射る。ここで効くのが、評価を誰にやらせるかの選択だ。自己批判は手軽だが、生成時と同じ思い込みを引きずりやすい。対して、批評専用の別の検証エージェントに判定させると、生成側の視点から独立して誤りを見られるため、精度が上がりやすい。役割を分けて協調させる構えは マルチエージェント構成 の一形態でもある。

評価のやり方独立性精度の傾向コスト向く場面
自己批判(同一モデル)低い(思い込みを共有)外部信号があれば有効低め(呼び出し追加のみ)テスト等の客観信号がある課題
別の検証エージェント高い(生成と分離)誤りを指摘しやすく上がりやすい高め(別系統の呼び出し)正解の検証が難しい文章・設計
外部の検証器があると収束する

リフレクションが最もよく効くのは、独立した検証器を評価に組み込めるときだ。コードなら単体テストやコンパイラ、数式なら数値照合、文章なら明文化した評価基準(ルーブリック)が、生成の外にある客観的な物差しになる。物差しがあれば、批評は具体的な失敗に根ざし、修正は正しい方向へ収束する。物差しが無いと、批評はモデルの主観に留まり、誤りを見逃しやすい。

使いどころと注意

向いているのは、評価が生成より易しく、しかも自動化できる課題だ。コード生成はテストの合否という信号があり、数学や論理の問題は検算や形式的検証で確かめられる。文章でも、要件チェックリストや評価基準を用意できれば効く。逆に、正解の検証手段がそもそも無い課題では、モデルは自分の誤りに気づけず、自信満々の誤答を批評で追認してしまうことがある。この場合、反復はコストを増やすだけで品質を上げない。たとえば、事実確認の手段が無いまま歴史や統計を述べさせる課題や、明確な評価基準を欠く創作では、自己批判は的外れな「改善」を繰り返し、初稿より劣化させることさえある。

もう一つの代償が、コストとレイテンシの増大だ。素の生成が1回のモデル呼び出しで済むのに対し、リフレクションは反復ごとに評価と修正の呼び出しを重ねる。検証役を別に立てれば、その分さらに増える。3回のループなら、呼び出し回数は単純計算で数倍に膨らむ。しかも品質の伸びは反復とともに逓減するため、回すほど良いわけではない。二、三回で頭打ちになる例は珍しくない。

だからこそ、停止条件を明示的に設計することが要になる。ループを必ず有限化し、無限リトライを防ぐ仕組みを、生成の外側に置く。

停止条件判定の仕方無いと何が起きるか
合格(目標到達)スコアやテストが基準を満たす十分な出力を無駄に作り直す
伸び止まり反復してもスコアが改善しない同じ誤りの周回・無限ループ
反復上限あらかじめ決めた回数Nに到達コストとレイテンシが際限なく増える
予算上限時間・料金・トークンが上限を超過コストが想定を超えて膨張

実務では、これらを併用する。合格でいち早く抜け、改善が頭打ちなら粘らず打ち切り、最後の砦として反復上限と予算上限で必ず止める。こうした「暴走を防ぐ枠」をエージェント全体で束ねる話題は ガードレール設計 に詳しい。

批評が正しいとは限らない

リフレクションは、批評の質に品質の上限を縛られる。批評自体が的外れなら、修正はかえって出力を悪くする。検証器の無い課題で自己批判だけを回すと、モデルは自分の誤りを正当化する方向へ流れやすい。反復回数を増やせば必ず良くなるという前提は成り立たず、独立した検証手段の有無こそが、効くか効かないかの分かれ目になる。

まとめ

リフレクションは、生成を一発勝負にせず、評価と修正のループで品質を後段から引き上げるパターンだ。効果の源泉は「評価は生成より易しい」という非対称性にあり、テストやコンパイラのような独立した検証器を組み込めるほど強く効く。批評を別の検証エージェントに任せれば、生成側の思い込みから独立して誤りを指摘でき、精度はさらに上がりやすい。

一方で、反復はコストとレイテンシを確実に増やし、品質の伸びは逓減する。検証手段の無い課題では、誤答の追認や無限ループに陥る危険もある。合格・伸び止まり・反復上限・予算上限という停止条件を多層で設け、ループを必ず有限化することが、実用の前提になる。ほかのパターンとの使い分けは AIエージェント設計パターン の一覧から辿れる。

AIエージェント設計の記事ガイド

リフレクション:出力を自己批判して直すループを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

AIエージェント

比較で見る軸

難易度: advanced / カテゴリ: AIエージェント設計 / タグ数: 4

導入後に効く点

効き方の鍵は、評価が生成より易しいという非対称性にある。テストの合否やコンパイル結果など外部の客観信号を批評に与えられる課題ほど収束しやすい。批評役を別エージェントに分けると、生成側の思い込みから独立して誤りを指摘でき、精度が上がりやすい。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
AIエージェント設計
タグ数
4

判断チェックリスト

  • 自社の用途が「AIエージェント / LLM」に近いか確認する。
  • 強みである「リフレクションは、生成した出力をモデル自身に批評させ、その批評を手がかりに出力を作り直す反復ループだ。生成→評価→修正を数回繰り返し、一度で正解を狙わず、誤りを見つけて削る後段の工程で品質を底上げする。Reflexionなどが代表例だ。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

AIエージェントLLMリフレクション設計パターン