エージェント基盤・プロトコル

ReActパターンとは|在庫0の商品に「明日発送します」と答えてしまった

ReActパターンとはどういう進め方なのか一度に答えるのと何が違うのか常に使うべきなのか

AIに調べものをさせるとき、一度に全部やらせるか、1手ごとに結果を見て次を決めるかで進め方が分かれます。後者がReActパターンです。

違いが出るのは、前提が途中で崩れたときです。今回は在庫0の商品について「いつ届くか」を答えさせました。一度に答える構成は「明日発送します」と返しました。在庫はありません。

この記事の要点

  • ReActは行動と観察を交互に繰り返す進め方
  • 実測では、一度に答える構成が在庫0なのに「明日発送」と答えた
  • 観察をはさむ構成は在庫切れを検知して取り寄せを案内した
  • ただし前提が崩れない仕事なら差は出ない。手数だけ増える

在庫0の商品に「明日発送します」と答えてしまった

前提が崩れる場面を用意して、2つの構成に答えさせました。観察をはさまない構成は、誤った前提のまま最後まで進みます。

ReActパターンの効果を確かめるため、実際に動かしました。題材は在庫が0の商品について「いつ届くか」を聞かれた場面です。

一度に答える構成では、最初に「在庫を確認する」「発送予定日を伝える」という計画を立てます。在庫があることを前提にした計画です。

javascript
function answerWithObservation(itemId) {
  const steps = [];
  const item = DB[itemId];

  steps.push({ step: '在庫を確認する', observed: `stock=${item.stock}` });
  if (item.stock > 0) {
    return { answer: `${item.name}は明日発送します`, correct: true };
  }
  // 観察した結果に応じて、計画になかった手順へ切り替える
  steps.push({ step: '在庫切れと判明。取り寄せ日数を確認する', observed: `restockDays=${item.restockDays}` });
  return { answer: `${item.name}は在庫切れです。取り寄せに${item.restockDays}日かかります`, correct: true };
}
text
在庫0の商品について「いつ届くか」を聞かれたとき

--- 一度に答える ---
  1. 在庫を確認する
  2. 発送予定日を伝える
  回答: 青いシャツは明日発送します
  正しいか: 誤り(在庫がないのに発送すると答えた)

--- 観察をはさむ ---
  1. 在庫を確認する → stock=0
  2. 在庫切れと判明。取り寄せ日数を確認する → restockDays=14
  3. 取り寄せを案内する → 案内文を作成
  回答: 青いシャツは在庫切れです。取り寄せに14日かかります
  正しいか: 正しい

手数: 2手 と 3手
正答: 0件 と 1件

答えが分かれました。一度に答える構成は「明日発送します」と返しています。在庫を確認する手順自体は実行しているのに、その結果を使っていません。

確認したのに、結果を見ていない

ここが分かりにくい点です。手順としては在庫を確認しています。ただ確認した結果に応じて次を変える仕組みがないため、計画どおり発送日を答えてしまいます。

観察をはさむ構成では、stock=0 という結果を見た時点で分岐します。計画には無かった「取り寄せ日数を確認する」手順が追加されました。

環境から事実を得る

Anthropicはこの点を明確に述べています。実行の各段階で環境から確かな事実を得ることが、進捗を判断するうえで欠かせないとし、ツールの呼び出し結果やコードの実行結果を例に挙げています。

つまりReActの要点は、行動そのものではなく行動の結果を次の判断に使うことにあります。

確認する手順があっても、結果を使わなければ答えは変わらない。

在庫を確認する2構成とも1手目で実行結果を見るか見る: 3手に増える見ない: 2手のまま答えを組み立てる取り寄せ14日を案内明日発送と誤答在庫を確認する手順は両方にある。差は、その結果を次の判断に使うかどうか。
図1 ── 観察の有無による処理の流れ
出典Anthropic Engineering「Building effective agents」2026-08-17 確認
During execution, it's crucial for the agents to gain "ground truth" from the environment at each step (such as tool call results or code execution) to assess its progress.
原文Anthropic Engineering「Building effective agents」 この内容の有効期限2027-02-17

ReActパターンは常に使うべきなのか

前提が崩れうる仕事だけです。崩れない仕事では答えが同じになり、手数と費用だけが増えます。

ReActパターンを採用するかどうかは、前提が崩れる場面があるかで決まります。前の節の実測に、その答えが出ています。

在庫がある商品では差が出なかった

実は同じ実験を、在庫が5個ある商品でも行いました。結果はどちらの構成も正しく答えています

計画どおりに進む場合、観察をはさんでも判断は変わりません。変わるのは手数だけで、1手多く呼び出すぶん費用と時間が増えます。

使うべき場面

  1. 条件によって手順が変わる仕事。在庫の有無、権限の有無、データの存在
  2. 調べてみないと分からない仕事。検索結果によって次に何を調べるかが決まる
  3. 失敗しうる操作を含む仕事。失敗したら別の方法に切り替える必要がある
  4. これらに当てはまらない仕事。決まった手順で足りる

4番目に注意してください。定型の処理をReActにすると、遅くて高い構成になるだけです。

止まらなくなる場合がある

繰り返す構成には、終わらなくなるという固有のリスクがあります。観察して、また行動して、また観察して。条件が満たされないまま回り続けることがあります。

Anthropicも、完了で終わるのが通常だとしつつ、繰り返しの上限のような停止条件を設けて制御を保つのが一般的だと述べています。上限は必ず決めておいてください。

前提が崩れないなら、観察は手数を増やすだけ。まずそこを確かめる。

条件によって手順が変わるかいいえ決まった手順で足りるはい繰り返しの上限を決めたかいいえ先に上限を決めるはいReActで進める。各手の結果を記録する上限を決めずに導入すると、止まらない実行が発生しうる。導入前に必ず決める。
図2 ── ReActにするかどうかの判断

手順が決まっている場合の構成は決定的ワークフローの記事、先に計画を立てる進め方はPlan-and-Executeの記事で扱っています。

観察の結果を記録しておく各手で何を観察したかを残しておくと、誤った答えが出たときにどの段階で判断を誤ったかが分かります。前の節の出力でいえば「stock=0」という記録がそれにあたります。記録の設計はエージェント可観測性の記事で扱っています。
出典Anthropic Engineering「Building effective agents」2026-08-17 確認
The task often terminates upon completion, but it's also common to include stopping conditions (such as a maximum number of iterations) to maintain control.
原文Anthropic Engineering「Building effective agents」 この内容の有効期限2027-02-17

ReActパターンとはどういう進め方なのか

考える、動く、結果を見る。この3つを繰り返します。名前は Reasoning と Acting を組み合わせたものです。

ReActパターンは、考えることと動くことを交互に繰り返す進め方です。名前もReasoning(推論)とActing(行動)から来ています。

1周の中身

1周は3つの部分でできています。次に何をするかを考える、実際にツールを呼ぶ、返ってきた結果を見る。そして見た結果をもとに、また次を考えます

人が調べものをするときの動きに近い形です。検索して、結果を見て、思っていたのと違えば別の言葉で検索し直す。その繰り返しをコードで表現したものになります。

途中で人に聞くこともできる

繰り返しの途中で止めることも可能です。Anthropicは、エージェントが区切りの時点や行き詰まったときに、人の判断を求めて一時停止できると述べています。

この停止を組み込むと、危ない操作の前に確認を挟む構成になります。詳しくはHITLの記事で扱っています。

余談 名前より、結果を見るかどうか

ReActという名前で紹介される実装でも、実際には結果を見ずに進んでいるものがあります。前の節の実測がその例で、在庫を確認する手順はあるのに結果を使っていませんでした。名前ではなく、分岐があるかどうかで判断するのが確実だと編集部は考えています。

出典Anthropic Engineering「Building effective agents」2026-08-17 確認
Agents can then pause for human feedback at checkpoints or when encountering blockers.
原文Anthropic Engineering「Building effective agents」 この内容の有効期限2027-02-17

よくある質問

常にReActにすべきですか?
手順が決まっていて前提も崩れない仕事なら、必要ありません。この記事の実測でも、在庫がある商品では両方の構成が正しく答えています。差が出るのは想定外が起きたときだけです。
観察とは具体的に何を見るのですか?
ツールを呼んだ結果です。Anthropicは、実行の各段階で環境から事実を得ることが重要だと述べており、ツールの呼び出し結果やコードの実行結果を例に挙げています。
無限に繰り返してしまいませんか?
止まらなくなる可能性はあります。繰り返しの上限を決めておくのが一般的で、Anthropicも停止条件を設けて制御を保つことが多いとしています。
手数が増えると費用も増えますか?
増えます。1手ごとに呼び出しが発生するためです。ただし誤った答えを返して後から対応する手間と比べれば、多くの場合は割に合います。

まとめ

  • ReActは行動と観察を交互に繰り返す進め方
  • 実測では一度に答える構成が在庫0なのに発送日を答えた
  • 観察をはさむ構成は途中で気づいて答えを変えた
  • 差が出るのは前提が崩れたときだけ。それ以外では手数が増えるだけ

今日から始められること

  1. 自動化したい仕事で、前提が崩れる場面があるかを洗い出す
  2. あるなら、その分岐点でツールの結果を確認する作りにする
  3. 繰り返しの上限を決めておく
  4. 各手の観察結果を記録に残す

実務で組んだReActパターンのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る