AIエージェント活用実践編 / 計画・分解・再試行 — Reasoning パターン
Reflection と Self-Critique
無料公開レッスン / 読了目安 5 分
学習のねらい
LLM(大規模言語モデル)の出力は、常に完璧とは限りません。特に複雑なタスクや曖昧な指示の場合、期待通りの結果が得られないことがあります。 人間が自分の仕事を見直して改善するように、LLM も自身の出力を評価し、改善する仕組みがあれば、より高品質な結果を得ることができます。
本レッスンでは、LLM が自身の出力を自己評価し、改善する手法である Reflection (リフレクション、自己反省) と Self-Critique (セルフクリティーク、自己批評) について学びます。これは、Anthropic の6パターンで言うところの「Evaluator-Optimizer (評価者・最適化者)」パターンに相当します。
Reflection と Self-Critique の本質
Reflection と Self-Critique は、LLM が自身の生成した出力に対して、別の LLM 呼び出しを使って評価し、改善点を見つけ、それに基づいて出力を修正する プロセスです。
仕組みの例
- ドラフト生成: 最初の LLM 呼び出しで、タスクのドラフト(初稿)を生成します。
- 批評 (Critique): 別の LLM 呼び出し(または同じ LLM に別のプロンプトを与える)で、生成されたドラフトを評価し、改善点を指摘させます。「この文章の論理は破綻していませんか?」「指定された条件を満たしていますか?」といった質問を投げかけます。
- 改善 (Refine): 最初の LLM に、元のドラフトと批評の両方を入力し、それに基づいてドラフトを修正・改善させます。
- 反復: 必要であれば、この批評と改善のサイクルを複数回繰り返します。
このプロセスを通じて、LLM は自身のパフォーマンスを反復的に向上させることができます。
改善ループの停止条件
Reflection と Self-Critique は強力な手法ですが、無限に改善を繰り返すとコストが膨大になります。そのため、改善ループには適切な停止条件を設定することが重要です。
一般的な停止条件には以下のようなものがあります。
- 最大反復回数: 事前に決められた回数(例: 3回、5回)まで改善を繰り返したら停止します。最もシンプルで確実な方法です。
- 品質スコアの閾値: LLM が自身の出力を数値で評価するような仕組みを導入し、そのスコアが一定の閾値を超えたら停止します。
- 変更の収束: 前回の改善と今回の改善で、出力に大きな変化がなくなった場合に停止します。これは、それ以上改善の余地が少ないと判断できるためです。
- 人間による確認: 特定の段階で人間のレビューを挟み、人間が「これで十分」と判断したら停止します。
これらの停止条件を組み合わせることで、コストと品質のバランスを取りながら、効率的にシステムを運用できます。
コスト管理の重要性
Reflection と Self-Critique は、複数回の LLM 呼び出しを伴うため、通常の単一呼び出しよりもコストが高くなります。 特に、批評と改善のサイクルを繰り返すたびに、入力プロンプトと出力の両方でトークン消費が発生します。
コストを管理するためには、以下の点に注意しましょう。
- 適切な停止条件の設定: 前述の通り、無駄な反復を避けることが重要です。
- プロンプトの効率化: 批評や改善の指示を簡潔にし、不要な情報を削減することで、トークン消費を抑えます。
- モデルの選択: 批評や簡単な改善には、より安価な小規模モデルを使用することも検討できます。
- 出力の粒度: 批評を必要以上に詳細にしない、改善の指示もピンポイントにするなど、出力量を意識します。
まとめ
Reflection と Self-Critique は、LLM が自身の出力を評価し、改善を繰り返すことで、タスクの品質を向上させる強力な手法です。 しかし、複数回の LLM 呼び出しを伴うため、最大反復回数や品質スコアなどの適切な停止条件を設定し、コスト管理を意識しながら導入することが重要です。 これにより、LLM の持つ能力を最大限に引き出し、より信頼性の高い AI システムを構築できます。