AIエージェント活用実践編 / 単一エージェント実装 — ReAct ループの基本
ReAct ループとは何か
無料公開レッスン / 読了目安 6 分
学習のねらい
前章では、LLM を活用したシステム設計のパターンを学びました。特に「自律エージェント」は、LLM 自身が状況判断して動的に行動を決定する、人間のような振る舞いを特徴とします。 この自律エージェントの基盤となるのが、ReAct (Reason+Act) ループ です。 本レッスンでは、ReAct ループの基本的な仕組みを理解し、LLM がどのように「思考 (Thought) → 行動 (Action) → 観察 (Observation)」を繰り返してタスクを遂行するのかを学びましょう。
ReAct ループの概要
ReAct ループは、LLM が複雑なタスクをこなすための強力なフレームワークです。 人間が問題解決する過程に似ており、具体的には以下の3つのステップを繰り返します。
- Thought (思考): LLM が現在の状況を分析し、次に何をすべきかを考えます。タスクの目標達成に向けて、どのような情報が必要か、どのツールを使うべきか、といった推論を行います。
- Action (行動): Thought で決定した内容に基づき、LLM が具体的な行動を起こします。これは、外部のツール (例: 検索エンジン、API、計算機など) を呼び出すことを指します。
- Observation (観察): Action の結果、ツールから返ってきた情報や、行動によって生じた変化を LLM が受け取ります。この観察結果が、次の Thought の入力となり、ループが続きます。
この「Thought → Action → Observation」のサイクルを繰り返すことで、LLM は与えられたタスクを段階的に解決していきます。
ReAct ループの例
例えば、「今日の東京の天気予報を教えて」というタスクがあった場合、ReAct ループは以下のように進行するでしょう。
- Thought: 「今日の東京の天気予報を知る必要がある。そのためには、天気予報ツールを使うのが適切だろう。」
- Action: 天気予報ツールを呼び出す。引数として「東京」を渡す。
- Observation: 天気予報ツールから「今日の東京の天気は晴れ、最高気温25度です」という結果が返ってくる。
- Thought: 「天気予報ツールから情報が得られた。この情報をユーザーに伝えればタスク完了だ。」
- Action: ユーザーに「今日の東京の天気は晴れ、最高気温25度です」と伝える (内部的な最終回答アクション)。
- Observation: (ユーザーに伝えた結果、タスクが完了したことを確認)
このように、LLM は外部ツールと対話しながら、自律的に情報を収集し、問題を解決していくことができます。
なぜ ReAct ループが必要なのか
LLM は非常に強力ですが、いくつかの限界があります。
- 最新情報の欠如: LLM の学習データは過去のものであり、リアルタイムの情報 (例: 今日の天気、最新ニュース) を直接知ることはできません。
- 計算能力の限界: 複雑な計算や厳密な論理推論は苦手です。
- 幻覚 (Hallucination): 事実に基づかない情報を生成してしまうことがあります。
ReAct ループは、これらの LLM の限界を補うために、Tool Use (ツール利用) の仕組みと組み合わせて使われます。 LLM は「思考」を通じてこれらの限界を認識し、適切な「行動」として外部ツールを呼び出し、その「観察」結果を元に次の思考を進めることで、より正確で最新の情報を扱えるようになります。
ループ終了条件の設計
ReAct ループは、無限に続くわけではありません。タスクが完了したと判断できる条件が必要です。 一般的な終了条件としては、以下のようなものが考えられます。
- 最終回答の生成: LLM がユーザーへの最終的な回答を生成したと判断したとき。
- 最大イテレーション (繰り返し) 回数の到達: 無限ループを防ぐため、あらかじめ設定した Thought-Action-Observation の最大繰り返し回数に達したとき。
- 特定のツールの呼び出し: 例えば、タスク完了を宣言する特別なツールを呼び出したとき。
- エラーの発生: ツールが繰り返し失敗したり、回復不能なエラーが発生したりした場合。
これらの終了条件を適切に設計することで、エージェントは効率的かつ安全にタスクを完了できるようになります。
まとめ
ReAct ループは、LLM が「Thought (思考) → Action (行動) → Observation (観察)」のサイクルを繰り返すことで、複雑なタスクを自律的に解決するためのフレームワークです。 LLM の限界を補い、外部ツールと連携することで、より高度なエージェントを構築する基盤となります。 次のレッスンでは、この Action の核となる「Tool 定義」について詳しく見ていきましょう。