Skip to main content

ReAct and Reasoning Agents

ReAct (Reason + Act) は、LLM agent の最も基本的な実行パターンです。思考 (Thought) と 行動 (Action) を交互に行い、観測 (Observation) を取り込んで次を決める ループを作ります。

ReAct loop

実際の prompt template は次のような形式です。

Thought: I should search for the population of France.
Action: search("France population 2024")
Observation: Approximately 68 million.
Thought: I have the answer.
Final Answer: About 68 million.

なぜ強いのか

  • LLM の reasoning 能力 (CoT) を活かす
  • 外部 tool で 事実情報 を取り込める
  • 中間状態が text として残るため、debug / 解釈が容易
  • Hallucination が大幅に減る (実行結果で正される)

Plan-and-Execute

ReAct は逐次的に思考と行動を交互するため、長期計画には弱いことがあります。Plan-and-Execute は、

のように、先に計画を立ててから 実行する pattern です。長期 task や複雑 task で堅牢になります。

Reflexion

Reflexion は、agent が失敗したときに 自己反省 (self-reflection) を生成し、次の試行に活かす手法です。

これは強化学習の credit assignment を自然言語 memory で行う、と解釈できます。

Tree-of-Thoughts (ToT)

ToT は、思考を 木構造で展開 し、各 branch を value 評価しながら探索します。Beam search や MCTS の発想を CoT に持ち込んだものです。

ReWOO

ReWOO (Reasoning WithOut Observation) は、ReAct の各ステップで LLM を呼ぶオーバーヘッドを減らすため、最初に plan を作って tool 呼び出しを batch 化 します。Token 削減と latency 改善が目的です。

Reasoning model 系との関係

Reasoning Models (o1、R1 など) は、内部の long CoT で reasoning を行います。これらを agent backbone にすると、

  • 外部 reflection が不要なことが多い
  • Tool use との組合せが強力
  • Test-time compute scaling と相性が良い

という特性が出ます。今後 reasoning model + agent loop が標準になりつつあります。

数式で見る ReAct loop

ReAct agent は、reasoning trace と action を交互に生成する policy として見られます。履歴 hth_t に対し、まず thought rtr_t を生成し、その後 action ata_t を選びます。

rtpθ(rtht),atpθ(atht,rt)r_t\sim p_\theta(r_t\mid h_t), \qquad a_t\sim p_\theta(a_t\mid h_t,r_t)

Tool execution によって observation ot+1o_{t+1} が返り、履歴が更新されます。

ht+1=(ht,rt,at,ot+1)h_{t+1}=(h_t,r_t,a_t,o_{t+1})

この式の気持ちは、「内部推論で何をすべきかを整理し、その結果として外部行動を選び、観測を受け取ってまた推論する」という closed loop を表しています。ReAct の強みは、静的な chain-of-thought ではなく、環境からの feedback を推論に戻せる点です。

関連ページ

主なソース