ReActとは
Reasoning and Acting
推論の過程とツールを使った行動を交互に繰り返しながらタスクを解決させるプロンプティング手法
ひとことで言うと
「考える→調べる→また考える」を繰り返させることで、AIに難しい調べ物やタスクをこなさせる方法。
概要
ReActは、LLMに最終的な答えをいきなり出させるのではなく、思考の言語化(Reasoning)とツールを使った行動(Acting)を交互に繰り返させながら段階的にタスクを解決させるプロンプティング手法。 各ステップでモデルは、それまでの思考と行動の結果を踏まえ、さらに考えるかツールを呼び出すか最終回答を出すかを判断し、これを目的が達成されるまで繰り返す。 Chain-of-Thoughtが思考の言語化のみに焦点を当てるのに対し、ReActは思考と外部ツールを使った行動を組み合わせる。 これにより、モデルが持つ内部知識だけでは解けない、最新情報の検索や外部システムの操作が必要なタスクにも対応できるようになる。 AIエージェントがツールを使ってタスクを遂行する際の基本的な制御ループの原型となっており、多くのエージェントフレームワークの内部でReActに類似した思考・行動サイクルが採用されている。
背景
Chain-of-Thoughtは複雑な推論の精度を高めたが、モデルの内部知識だけに基づく思考にとどまり、外部の最新情報を取得したり実際に何かを操作したりできなかった。 ReActは、思考の言語化と外部ツールを使った行動を1つのループに組み込むことで、推論と行動を相互に補強し合う枠組みとして考案された。
歴史
2022年: Yaoらが論文「ReAct: Synergizing Reasoning and Acting in Language Models」を発表。 2023年以降: LangChainをはじめとする多くのAIエージェントフレームワークが、ReActに類似した思考・行動ループを内部の標準的な制御方式として採用。
ワークフロー
タスクを受け取ったモデルが、まず次に何をすべきかの思考(Thought)を生成する。 思考に基づき、検索や計算などの具体的な行動(Action)を選択して実行する。 行動の結果(Observation)を踏まえて次の思考を生成し、このThought-Action-Observationのサイクルを、最終的な回答が得られるまで繰り返す。
コード例
ReActのThought-Action-Observationループ(概念的な実装例)
def react_loop(question, tools, llm, max_steps=5):
trace = f"Question: {question}\n"
for _ in range(max_steps):
step = llm(trace + "Thought:")
trace += step
if "Final Answer:" in step:
break
action, action_input = parse_action(step)
observation = tools[action](action_input)
trace += f"\nObservation: {observation}\n"
return trace利点
- 思考と行動を組み合わせることで、モデルの内部知識だけでは解けないタスクにも対応できる
- 各ステップの思考が言語化されるため、なぜその行動を選んだのかを人間が追跡しやすい
- 多くのエージェントフレームワークで採用されている基本的な制御方式であり、実装の知見が蓄積されている
欠点
- 思考と行動を何度も繰り返すため、単純な一問一答よりトークン消費とレイテンシが増える
- 途中の思考や行動選択を誤ると、誤りを引きずったまま以降のステップが進んでしまうことがある
- 利用可能なツールの設計や説明が不十分だと、モデルが行動選択を誤ることがある
比較
- Chain-of-Thought — ReActはChain-of-Thoughtの思考の言語化に、外部ツールを使った行動のステップを組み合わせて拡張した手法
- ツールコーリング — ReActのActionステップは、実装上はツールコーリングの仕組みを通じて外部システムを呼び出すことが多い
- AIエージェント — ReActの思考・行動ループは、多くのAIエージェントの基本的な制御方式として採用されている
関連用語
よくある質問
ReActとChain-of-Thoughtの違いは?
Chain-of-Thoughtはモデル内部での思考の言語化にとどまるのに対し、ReActは思考と外部ツールを使った行動を交互に繰り返す点が異なる。ReActは検索や計算など、外部との対話が必要なタスクに強い。
ReActはどんなタスクに向いている?
最新の情報を検索する必要がある質問応答や、複数のツールを組み合わせて調査・計算するタスクなど、モデルの内部知識だけでは完結しないタスクに向いている。