ReAct エージェントとは
執筆:Ai Flowi · 公開日
ReAct エージェントは、タスクに関する推論と、ツールを使った行動・観測を組み合わせるパターンを用います。行動の結果が返ると、エージェントは回答するか、許可された別の行動を取るか、停止するかを判断できます。ここでいう「React Agent」は、一般にReActと表記されるAIのパターンを指し、フロントエンドのユーザーインターフェース部品を指すものではありません。
評価に役立つ根拠は、観測できるツールへの要求と返された結果です。適切なツールを選んだか、その制限を守ったか、観測結果で回答を裏付けたかを評価するために、非公開の思考過程にアクセスする必要はありません。
行動と観測を繰り返すループの意味
通常の固定された処理では、次のステップがあらかじめ決まっています。ReAct型の設計では、ツールが返した情報に応じて、次に許可されている行動を選べます。有用な観測が1回得られただけでタスクが完了することも、利用できるツールでは質問を解決できず停止することもあります。
この柔軟性により、制御の課題が生じます。利用可能なツール、十分とみなす証拠、追加の呼び出しが単なる繰り返しになる条件を決めます。ループはタスクの進め方であり、任意のサービスを探索する許可ではありません。また、エージェントが不適切な観測結果を見抜ける証拠でもありません。
関連情報:CrewAI 連携:AI Flowi Workflow の設定。
観測できる読み取り専用の例
承認済みの文書にキャンセル条件が含まれているかを尋ねる質問を考えます。読み取り専用の検索ツールは、アクセスを許可された抜粋を取得できます。以下のトレースは、起こり得るイベントを説明する例です。記録されたツールの出力は含まれていません。
| イベント | 観測できる記録 | 受け入れ確認 |
|---|---|---|
| タスクを受領 | 質問と承認済みの情報源の識別子。 | 質問が、許可された読み取り専用の範囲内にあります。 |
| ツールへの要求 | 検索の名前と文書の識別子。 | 操作とリソースへのアクセスが許可されています。 |
| 観測結果を受領 | 抜粋、該当なしの結果、または技術的な失敗。 | 結果をモデルの推測と区別して保持します。 |
| 次の判断 | 証拠に基づいて回答する、許可された確認を求める、または停止します。 | 観測結果にない証拠があるとは主張しません。 |
抜粋から質問に答えられる場合、最終回答には根拠となる情報源を示します。抜粋にキャンセル条件がない場合は、与えられた証拠が不十分だと伝えます。結果が空でも、ほかの場所に条件が存在しないことまでは証明できません。
要求の失敗は、許可された検索を行って何も見つからなかったこととは意味が異なります。確認時には、両方の結果を明確に区別できるようにします。そうしないと、最終回答でサービス障害が事実についての結論にすり替わるおそれがあります。
次の行動を変える観測結果
この架空の質問に、承認済みの2つの情報源として本文書とキャンセルに関する付録を加えます。最初の検索では、条件は付録に定められているという記述が返されますが、その記述自体には条件がありません。この場合、次に許可される行動は付録の取得です。本文書の検索を繰り返しても、関連する証拠は増えません。付録の検索が許可されるのは、その識別子が最初に承認された情報源の集合に含まれていたためです。
一方、最初の結果が、要求した箇所は黒塗りされていると示した場合を考えます。この観測結果からは、条件も、制限のない版を取得する権限も得られません。次の判断は停止し、アクセス可能な情報源では質問に答えられないと報告することです。この分岐に、単に「検索を続ける」という指示は適しません。
同じ開始時の質問と利用可能なツールを使って、2つの分岐を検証します。最初の要求、最初の観測結果、次に要求した操作を保存します。証拠に関係なく両分岐で同じ2回目の検索を行うなら、そのトレースが示すのは固定された続行であり、観測に基づく選択ではありません。付録から関連する箇所が返された場合、完了の根拠はその箇所です。最初の文書にある参照だけでは不十分でした。これらは評価用の事例であり、観測されたモデルの結果ではありません。
続行・停止・人への確認
| 観測結果 | 次の判断 | 理由 |
|---|---|---|
| 関連する根拠の抜粋 | 回答し、情報源を示します。 | タスクで定めた証拠の条件を満たしています。 |
| 曖昧な情報源の識別子 | 確認を求めます。 | 推測すると、誤った情報源にアクセスするおそれがあります。 |
| 役に立たない検索の繰り返し | 証拠が未解決のまま停止します。 | 同じ観測結果では、新たな裏付けが増えません。 |
| アクセス許可の拒否 | アクセスの試行を停止します。 | プロンプトを変えても、権限は得られません。 |
| 技術的な失敗 | 定めた再試行方針に従って失敗を報告します。 | タスクに使える観測結果がまだありません。 |
ループを実行する前に、処理量の上限を定めます。上限は試行回数を制限できますが、有用な回答を保証するものではありません。外部への書き込みで結果が不確かな場合は、再試行の前に書き込み先を確認する必要があります。この読み取り専用の例では、その種類の行動は一切扱いません。
AI Flowi Workflowとの関係
この設定例のタスク、モデル、ツールのインターフェースは、Agentコンポーネントのリファレンスで説明されています。
カタログはAgentをReActのネイティブ実行機構として位置付けていません。このパターンを評価するには、返された証拠によって、次に許可された行動が変わるかを観測する必要があります。
Flow as Toolには関数呼び出しの取り決めを使い、ループを評価する前に、選択された検索を確認します。
範囲を限定した設定例
設定例であり、記録されたテストではありません
Agent
tools: connect the Tool output
system_prompt: Answer only from returned excerpts.
Stop on denied access or insufficient evidence.
max_iterations: 3
input_value: the synthetic question and approved source reference
これは、意図する行動と停止のルールを示した概略であり、検証済みのループ実装ではありません。例示した反復回数に、測定された信頼性の意味はありません。モデル用にご自身のプロバイダーアカウントとAPIキーを設定し、プロバイダーへの料金を別途お支払いください。説明したコンポーネントはカタログに文書化されていますが、Ai Flowiによる本番環境でのテストは行われていません。
エクスポートされた情報では、handle_parsing_errorsの正確な動作、verboseが表示する内容、反復上限に達したときの終了応答は定められていません。実際に試す際は、これらの不明点を確認項目にしてください。フィールド名を実行の証拠とみなしても、不明点は解消できません。
ReAct・関数呼び出し・オーケストレーションの違いは何ですか?
関数呼び出しは、操作に対する構造化された要求と、アプリケーションによる実行結果の応答を説明するものです。ReActは、結果が次の判断に影響する、より広い行動・観測のパターンを説明します。ツールのインターフェースだけでは、特定のエージェントがそのパターンを実装していることは分かりません。
マルチエージェントのオーケストレーションは、別々のタスク担当とその引き継ぎを調整します。1つのエージェントが複数のツールを使うだけでは、マルチエージェントシステムにはなりません。AIエージェントの状態には、観測済みの内容、未解決の事項、完了が認められるかを記録します。
ループの確認でよくある誤り
実行記録の代わりに、非公開の推論を求めないでください。操作名、引数、結果、根拠となる情報源を確認します。説得力のある説明であっても、不適切なツール呼び出しが行われていることがあります。
取得した指示を、タスクのアクセス制限より優先しないでください。同じ証拠の不足に対して呼び出しを繰り返し、確実性があるかのように扱わないでください。判断に応じた検索を必要としない固定の変換タスクなら、より単純な処理を使います。既存の文書化されたワークフローは、その出発点を見つける助けになります。
ワークフローの利用料金
プラン:Goは年払いで月額USD8から(月払いUSD10)、Plusは月額USD16から(月払いUSD20)、Pro 100は月額USD80から(月払いUSD100)、Pro 200は月額USD160から(月払いUSD200)、Pro 500は月額USD400から(月払いUSD500)。毎月5,000~250,000 Flowi Tokensが含まれ、追加購入も可能です。ノード実行1回につき1トークン。サードパーティのAPIとモデルの利用料金は含まれません。