プロンプトエンジニアリングのReActとCoTの違いをお話しします。
自律ソフトウェアエージェントのプロンプト
OpenAIが2021年にプログラミングに関して提案したベンチマークがHumanEvalです。これはプログラミングの課題ですが今では易しすぎると言われています。Claude 3.5 Sonnetなら92%を解くことができます([anthoropic])。
より難しい実世界でのバグ修正問題としてプリンストン大学が2023年に提案したのがSWE-benchです([swe-bench])。
SWE-benchの2294問題のうち300サブセットからなるSWE-bench Liteで最高性能を出していたのがMASAIです(1週間で(Alibaba Ligma Agent, Factory Code Droid, AUtoCodeRover, CodeRに抜かれていますが)。
MASAIは5つのサブエージェントからなっています:
・コードテンプレート生成:戦略はReAct
・バグ複製:戦略はReAct
・ファイル特定:戦略はReAct
・コード修正:戦略はCoT
・ランク評価:戦略はCoT
MASAIの詳細は今回はおいておいて、ReActとCoTの違いを説明します。
ReActとCoT
ReActはReason and Actionの略、CoTはChain of Thoughtsの略です。いずれもプロンプトエンジニアリングで生成AIの出力の精度を高めるための戦略です。
ReAct
ReActとはReason and Action (推論と行動)の略です。推論し、行動し、行動結果を評価し、それを繰り返すことによって精度があがるというものです。
本来はループしますが、使い方としては単にThought, Action, Observationを示すだけでもいいです。
CoT
CoTはChain of Thoughtsの略です。思考の連鎖と訳されています。
ReActとCoTの違い
ReActとCoTはいずれも戦略的にプロンプトエンジニアリングの質をあげるための手法です。ReActは推論と推論に基づく行動に焦点をあてています。このため外部とのやりとりによる不確定性を予め認識しています。このため外部に行動しその結果を見ないとわからない推論に向いています。
CoTはプロセスに焦点をあて、しばしば、プロセス自体を明示的に与えることによってプロセスの改善や説明可能性の向上を目指しています。
むすび
ソフトウェア開発の自律化の中で単に高度な大規模言語モデルを作るだけでなく、問題解決の戦略立案をすることや、大規模言語モデルを活用するソフトウェア開発環境が重要なことがわかってきました。
あらためて自律ソフトウェア開発エージェントの仕組みを勉強する中で、プロンプトエンジニアリングの初歩に戻って勉強し直しました。
基礎と応用のどちらも大事だということを再認識しました。
参考文献