ReAct

ReAct (Reasoning and Acting)

ReActとは

ReAct(Reasoning and Acting)とは、大規模言語モデルが推論(Reasoning)と行動(Acting)を交互に繰り返すことで、複雑なタスクを段階的に解決するエージェントの設計パターンです。2022年にYaoらによって提案され、LLMベースのエージェント開発における基本的なフレームワークとなっています。

表:ReActの要点まとめ
ひとことで言うと「考える」と「行動する」を交互にくり返して問題を解く、エージェントの基本手法。
何がうれしいか途中で得た情報をもとに考え直せるので、事実に基づいた回答になりやすい。
注意点やりとりが増えるぶんトークン代と時間がかかる。

ReActの仕組み

ReActでは、エージェントは「思考(Thought)→ 行動(Action)→ 観察(Observation)」のサイクルを繰り返します。まず現在の状況を分析し次に何をすべきか推論し(Thought)、次にツールの呼び出しなどの具体的な行動を実行し(Action)、その結果を観察して(Observation)次の思考に活かします。

図:ReActのサイクル
1Thought:考える次に何が必要か
▶
2Action:行動検索やAPIを実行
▶
3Observation:観察結果を受け取る
▶
4また考える情報を踏まえて再検討
▶
5最終回答十分な情報が揃ったら
↺ 答えが出るまで1〜4をくり返す

従来手法との違い

推論のみのアプローチ(Chain-of-Thought)では外部情報の取得や実行ができず、行動のみのアプローチでは判断の根拠が不明確でした。ReActはこの両方を統合することで、推論の根拠を持ちながら実際のアクションも実行できるという利点を実現しました。

実装と応用

ReActパターンはLangChain、LlamaIndex、AutoGenなど多くのエージェントフレームワークで標準的に実装されています。質問応答、情報検索、コード生成、Webブラウジングなど、ツールの利用を伴う幅広いタスクに応用されています。