見出し画像

自律エージェント と エージェントシミュレーション

「LangChain」の以下の記事が面白かったので、簡単にまとめました。

Autonomous Agents & Agent Simulations - LangChain blog

1. 自律エージェント と エージェントシミュレーション

ここ2週間で、「エージェント」で「LLM」を活用する手法が大幅に増えました。具体的には、「AutoGPT」「BabyAGI」「CAMEL」「Generative Agents」などのプロジェクトが発表されました。

自律エージェント  (BabyAGI、AutoGPT)
新しい計画手法やメモリの使い方を必要とする、長期的な目標が斬新。

エージェントシミュレーション  (CAMEL、Generative Agents)
シミュレーション環境とイベントをもとに反映・適応する長期記憶が斬新。

2. LangChainエージェント

LangChainエージェント」は、「LLM」を推論エンジンとして使用し、「ツール」と「メモリ」に接続します。

ツール」は、「LLM」を知識・計算に接続させるものです。「ツール」は最新のデータを取得し、その情報をプロンプトに挿入できます。さらには行動 (コードの実行、ファイルの変更など) を実行し、その結果を「LLM」で観察して、次に何をすべきかの決定することもできます。「ツール」の例としては、「検索エンジン」や「データストア」などが挙げられます。

メモリ」は、エージェントの過去のやり取りを思い出すのに役立ちます。この相互作用は、他の「エンティティ」(人間または他のエージェント) または「ツール」とのいずれかです。この「メモリ」は、短期的なもの (過去5回のツール使用のリストなど) 、または長期的なもの (現在の状況に最も類似していると思われる過去のツール使用など) のいずれかになります。

「エージェント」の処理の流れは、 「ReAct」(Reasoning and Acting)をベースにしています。

(1) Input : ユーザーがエージェントにタスクを与える
(2) Thought : エージェントは何をすべきかを考える
(3) Action : エージェントは使用するツールと、そのツールへの入力を決定。
(4) Observation : ツールの出力を観察
(5) エージェントが完了したと考えるまで、(2)~(4)を繰り返す

他のフレームワークについて議論する時、このアルゴリズムと比較します。

2. AutoGPT

2-1. リンク

リポジトリ
LangChainの実装

2-2. このプロジェクトの斬新なポイント

「AutoGPT」の斬新なポイントは、次のとおりです。

・検索ベースのメモリをエージェントステップに適用

「AutoGPT」と従来の「LangChainエージェント」の違いは、「AutoGPT」が長時間タスクの実行を目的としていることです。これは、従来とは異なる「AgentExecutor」と「メモリ」で実行されることを意味します。どちらも長時間タスクに対してより最適化されています。

従来のLangChainエージェントは、次の2つの形式のメモリを持っていました。

・エージェントステップのメモリ : エージェントステップのリストを記憶し、完全なリストをLLM呼び出しに渡す。
・システムのメモリ : 最終的な入力と出力を記憶するが、中間ステップは忘れる。

「AutoGPT」は長時間タスクの実行を目的としているため、エージェントステップの完全なリストを LLM 呼び出しに渡すことは現実的ではありません。代わりに、検索ベースのメモリ (VectorStore) をエージェントステップに適用しました。LangChainは元からこの種の検索ベースのメモリは持っていますが、エージェントとツールではなく、ユーザーとエージェントの相互作用に利用されていました。

2-3. どのようにLangChainに組み込んだか

「langchain.experimental」に「AutoGPT」のLangChainの実装を追加しました。具体的には、プロンプトのテンプレート化ロジックと、エージェントの実行に使用するwhileループを実装しています。LangChain LLM ラッパー、LangChainベクターストア、LangChainツールと互換性があります。

3. BabyAGI

3-1. リンク

リポジトリ
LangChainの実装
LangChainのツール実装

3-2. このプロジェクトの斬新なポイント

「BabyAGI」の斬新なポイントは、次のとおりです。

・AutoGPTと同様に、検索ベースのメモリをエージェントステップに適用
・計画ステップと実行ステップがあり、(次の行動だけでなく) 一連の行動を一度に計画

従来のLangChainエージェント (およびAutoGPT) では、エージェントは一度に一歩先を考えます。与えられた世界の状態に対して、次の即時行動がどうあるべきかを考え、その行動を実行します。

「BabyAGI」は、一連の行動を一度に計画するという点で異なります。次に、最初のタスクで実行し、その結果を使用して別の計画ステップを実行し、タスクリストを更新します。計画ステップを状態追跡システムとして使用することで、より複雑なタスクをより適切に実行できるようになります。

3-3. どのようにLangChainに組み込んだか

「AutoGPT」と同様に、「langchain.experimental」に追加しました。具体的には、プロンプトのテンプレート化ロジックと、エージェントの実行に使用するwhileループを実装しています。LangChain LLMラッパー、LangChainベクターストア、LangChainツールとの互換性を持たせています。

4. CAMEL

4-1. リンク

論文
リポジトリ
LangChainの実装

4-2. このプロジェクトの斬新なポイント

「CAMEL」の斬新なポイントは、次のとおりです。

・2人のエージェントが協調的に相互作用する
・特定のシミュレーション環境を持つ

2人のエージェントが相互作用するという考えは、新しいものではありません。「CAMEL」の相互作用の新しい点は、2人のエージェントが対等な立場にあるということです。一方が他方を道具として使うのではなく、両エージェントを対等な立場に置くというこのアイデアは、進化する振る舞いを見る上で特に興味深いものです。

シミュレーション環境は、双方向の会話であり、それほど複雑ではありませんが、研究環境でこれを実装しているのを見たのは初めてになります。

4-3. どのようにLangChainに組み込んだか

2人のエージェントが互いにチャットしているシミュレーション環境を反映したノートブックを追加しました。将来的には、このシミュレーション環境をすぐに利用できるようにすることを検討する可能性があります。

5. Generative Agents

5-1. リンク

論文
LangChainのリトリーバー実装
Langchainのメモリ実装

5-2. このプロジェクトの斬新なポイント

「Generative Agents」の斬新なポイントは、次のとおりです。

・25の異なるエージェントで構成されるシミュレーション環境
・これらのエージェントのために作成された長期記憶

エージェントのメモリは次のもので構成されています。

・重要度反映ステップ : 各観察に重要度スコアを与える。このスコアによって、後で検索する際に、特に重要な記憶を取り出し、基本的な記憶を無視することができる。

・リフレクションステップ : エージェントが学習した一般化について「一時停止」して考えるためのステップ。通常の記憶と一緒に呼び出すことができる。情報を凝縮し、最近の記憶のパターンを観察するのに役立つ。

・再利用性、関連性、重要性を兼ね備えたリトリーバー : 現在の状況に似ている、最近起こった、特に重要な記憶を取り出すことができる。人間が記憶を取り出す方法を自然に反映した属性であるように思える。

5-3. どのようにLangChainに組み込んだか

リトリーバーのロジックを「TimeWeightedVectorStoreRetriever」として追加しました。
論文に書かれている設定の一部を再現するために、リフレクションステップ+新型リトリーバーの使い方を紹介するノートを追加しました。
シミュレーション環境は複雑であまり一般化できないように見えたので、そこでは何もしていません。

関連



この記事が気に入ったらサポートをしてみませんか?