ReActの3つのステップはそれぞれ何を担当し、1つ欠けると何が起きますか?
役割分担は明確です。ThoughtはLLMによる純粋なテキスト推論——ツール呼び出しなし、ただ考えるだけ:今の目標は何か、どんなツールが使えるか、次に何をすべきか、なぜか。このステップにより意思決定プロセスが可視化・追跡可能になります。
ActionはThoughtの後の具体的な実行——APIを呼び出す、オンチェーンデータを読む、ウェブを検索する、またはクリプトの文脈ではトランザクションに署名する。エージェントが実際に外部世界と相互作用し、実際の結果を生成するステップです。
ObservationはActionの結果をLLMに読み戻す——「APIが何を返したか」「ツールが何を言ったか」——次のThoughtラウンドのインプットとして。Observationがなければ、エージェントはツールの実際の出力を無視し、学習データの幻覚に基づいて判断し続けます。
各ステップが欠けた場合の結果:Thoughtなし→予期しない状況に対応できない盲目的なスクリプト。Actionなし→何もしない思考機械。Observationなし→各Thoughtラウンドが幻覚の上に幻覚を重ね、どんどんずれていく。3つ揃って初めてクローズドループを形成します。
ReActとChain-of-Thought(CoT)の違いは何ですか?なぜCoTだけでは不十分なのですか?
Chain-of-Thought(CoT)は、LLMが最終回答を出す前に推論過程をステップバイステップで書き出すよう促します(「まず考えてみましょう…」)。複雑な問題の回答品質を大幅に向上させますが、根本的な制限があります:CoTは学習データの知識からしか推論できず、リアルタイム情報には一切アクセスできません。
具体的な比較:「今、ETHへのオンチェーン資金流入はプラスかマイナスか」と聞いた場合、CoTはトレーニングカットオフ以前の知識でしか答えられません(推測し、しばしば自信を持って間違える)。ReActエージェントはThoughtで「リアルタイムのオンチェーンデータを確認する必要がある」と判断し、Actionで実際に確認し、Observationで実際の結果を読み込んでから判断します。
簡単に言えば:CoTはLLMをより明確に考えさせ、ReActはエージェントが明確に考えた後に検証・実行できるようにします。クリプトでは、ほぼすべての価値ある判断にリアルタイムデータが必要です。ReActはCoTの拡張であり、置き換えではありません。
ReActループが制御不能になる一般的な原因は何ですか?アーキテクチャ的にどう防ぎますか?
3つの一般的な失敗シナリオ:第一、無限ループ:Thoughtが繰り返し「まだ情報が必要」と判断し、トークン予算が尽きるまでActionを発し続ける。通常、タスク目標が曖昧な場合やツール出力がエージェントが解析できないフォーマットの場合に発生します。第二、ツール汚染:Actionが呼び出したツールが間違ったデータや悪意を持って注入されたデータを返し、Observationがそれを読み込み、Thoughtが誤情報の上で推論を続ける。これが悪意あるMCP Serverアタックの核心メカニズムです。第三、最初のステップの仮定エラーの増幅:Thoughtが第一ラウンドで間違った仮定をすると、その後のすべてのActionとObservationがそのエラーを強化する。
アーキテクチャ的な防止策:最大ループ回数(通常5〜15回)を設定して強制終了;Observationデータの妥当性を検証;重要なAction(特にトランザクション署名)に人的確認ゲートを追加;審査済みホワイトリストのツールのみを許可。
ReActエージェントを本番環境にデプロイする際、Thoughtステップのプロンプト設計の重要な要素は何ですか?
Thoughtステップの品質がエージェント全体の推論品質をほぼ決定します——そしてその品質はSystem Promptの設計に大きく依存します。重要な要素:第一、明確なツールリストと説明をエージェントに提供する。各ツールの名前、目的、パラメータ形式を明確にリストアップする必要があります。第二、明確な終了条件を与える。「質問に答えるのに十分な情報が得られたら、Final Answerを出力せよ」と伝えなければ、エージェントは永遠に「もう一度確認が必要」と判断するかもしれません。第三、行動の境界を設定する。何ができるか(データ照会、市場分析)と何ができないか(確認なしにX米ドルを超えるトランザクションに署名しない)を明示します。第四、System PromptにThought/Action/Observationの例を示す。形式の不一致はバックエンドの解析ロジックを壊します。
これらの設計の詳細が、ReActエージェントがデモだけでなく実際のシナリオで機能するかどうかを決定します。
ReActループの実際の実行(クリプトシナリオ)
タスク:「ETHとBTCは今日どちらが多く上昇しましたか?結論を一つ教えてください。」
第1ラウンド:Thought:ETHとBTCの24時間の価格変動をそれぞれ確認する必要がある。まずETHを確認。Action:get_price_change(token='ETH', period='24h')を呼び出す。Observation:ETH 24時間変動 +3.2%。
第2ラウンド:Thought:ETHが3.2%上昇。次にBTCを確認。Action:get_price_change(token='BTC', period='24h')を呼び出す。Observation:BTC 24時間変動 +1.8%。
第3ラウンド:Thought:ETH +3.2%、BTC +1.8%。ETHが今日より多く上昇した。回答するのに十分な情報がある。Final Answer:ETH(+3.2%)は本日BTC(+1.8%)を上回りました。
プロセスの特徴:各推論ステップはThoughtに明示的に記録され、すべてのツール呼び出しと返された結果はAction/Observationに記録され事後に監査可能です。最終回答が間違っていた場合(例えばAPIが誤ったデータを返した場合)、Observationから直接問題の根本を特定できます。
ReActの核心的なトレードオフは「透明性対速度」です。Thoughtステップはすべての決定を完全に可視化・追跡可能にします——これはオンチェーン資産管理やコンプライアンス要件など監査が必要なシナリオでの優位性です。しかし各Thoughtラウンドには課金されるLLM呼び出しが必要です:ループが多いほどコストが高く、速度も遅くなります。純粋なツールチェーン(Thoughtステップのない純粋なActionシーケンス)と比較すると:より速く、より安いが、予期しない状況に適応できない。ReActは動的判断と説明可能性が必要な複雑なタスクに適しており、純粋なツールチェーンはステップが固定された単純な自動化に適しています。