言語によるフィードバック
現在の自律型AIエージェント開発において非常に大きな影響を与えた研究内容として、「言語によるフィードバックによって AI を強化する」手法があります。
Reflexionと呼ばれる方法で以下の論文で提案されています。この記事ではこの論文の内容を詳しく説明します。
それ以前の手法の課題
AI モデルは同じ間違いを繰り返しやすいという課題があります。
何度指示しても修正が反映されなかったり、数回やり取りしたらいくつか前の指示を反映していない、など体験したことがあると思います。
そして、AI が行動に失敗した際、従来の強化学習の手法では、AIのパラメーター(重み)自体を膨大なデータと計算コストをかけてファインチューニングする必要がありました。これは時間もお金もかかりすぎ、という課題がありました。
Reflexion の仕組み
そこで、モデルの重みを更新せず、言語によるフィードバックと自己反省(Self-Reflection) を用いて、エージェントを賢くする新しいフレームワークが提案されました。
具体的には以下のようなフローで進行します。
この流れを解説します。
1. Actor (LM) の行動と環境からのフィードバック
データの流れ:Actor (LM) → Action → Environment → Obs / Reward
- まず主役であるエージェントの Actorが行動を起こし、それを外部の
Environment(プログラムの実行環境など)に送ります - 環境はそれに対して、現在の状況やスコア(Obs / Reward:Observation/報酬)をエージェントに送り返します
例えば、コーディングをして、その後実行してエラーが出たかどうかを確かめるような作業です。
2. Trajectory(短期記憶)への蓄積
データの流れ:Obs / Reward → Trajectory (short-term memory)
- 環境から戻ってきた情報(現在の状況や結果)は、
Trajectoryという短期記憶のボックスに格納されます - ここでは「今回の試行で、どんな手順を踏んできたか」という現行のリアルタイムな履歴が保存されます
3. Evaluator (LM) による評価
データの流れ:Trajectory → Evaluator (LM) → Internal feedback
- 短期記憶に溜まった現在の行動履歴を見て、Evaluator (LM) が「この結果は正しいか、どこで間違えたか」を評価します
- 評価結果は内部フィードバック(Internal feedback)として、上の自己反省コンポーネントへ送られます
4. Self-reflection (LM) による「反省文」の生成
ここが重要なパートです。
データの流れ:External feedback + Internal feedback → Self-reflection (LM) → Reflective text
- Self-reflection (LM) は、以下の2つのフィードバックを同時に受け取ります
- 環境から直接戻ってきたエラー文などの外部フィードバック(External feedback)
- Evaluatorが分析した内部フィードバック(Internal feedback)
- これらを組み合わせてして、「なるほど、〇〇のせいで失敗したんだな。次は△△を変えよう」という具体的な反省文を生成します
ちなみに、外部フィードバックと内部フィードバックのイメージは以下です。
- 外部フィードバック
Failed to compile. ./src/Login.js Line 12:7: 'auth' is not defined. no-undef
- 内部フィードバック
コード自体は正常に動作し、テストもパスしています。しかし、コンポーネントが1つのファイルに1000行以上書かれており、可読性が著しく低いです。関数を機能ごとに分割することを推奨します
5. Experience(長期記憶)への保存と次への活用
データの流れ:Reflective text → Experience (long-term memory) → Actor (LM)
- 生成された反省文は、
Experienceという長期記憶のボックスに蓄積されます - 短期記憶が1回の試行ごとにリセットされるのに対し、この長期記憶は次の試行(エピソード)へ引き継がれます
- 次のターン(再挑戦)が始まると、Actor (LM) は以下の2つを同時にインプットとして読み込みます
- Trajectory(短期記憶):いま直面している現在の状況
- Experience(長期記憶):過去の失敗から得た「反省文」
これにより、Actor はモデルの重みを更新することなく、プロンプト(コンテキスト)の力だけで過去の失敗を学習し、より洗練された次の Action を生み出すことができるようになります。
性能面での評価
意思決定、言語推論、コード生成などの分野で実験を行ったところ、Reflextion を導入したほうが概ね高いスコアを出しました。
ちなみに MBPP は Mostly Basic Python Problems で Python プログラミング能力を測定・評価するために使われる代表的なAIベンチマークです。
MBPP(RS)は For Rust という意味です。

