見出し画像

LangGraph の マルチエージェントワークフロー

以下の記事が面白かったので、かるくまとめました。

LangGraph: Multi-Agent Workflows


1. マルチエージェント

マルチエージェント」では、各エージェントは他のエージェントと連携するために、独自の「プロンプト」「LLM」「ツール」「カスタムコード」を持つことができます。つまり、さまざまなマルチエージェントワークフローを考える際には、主に2つの考慮事項があります。

(1) 複数の独立したエージェントとは何か
(2) エージェントはどのように接続されているか

この考え方は、「LangGraph」で提供されるグラフ表現に非常に適しています。各エージェントはグラフの「ノード」であり、それらの接続は「エッジ」として表します。

2. マルチエージェントの利点

「マルチエージェント」の利点は、次のとおりです。

・ツール / 責任をグループ化することで、より良い結果を得る
「エージェント」は、数十のツールから選択するよりも、焦点を絞った方が、成功する可能性が高くなります。

・個別のプロンプトで、より良い結果を得る
各プロンプトには、独自の手順とFew-Shotの例を含めることができます。各エージェントは、個別にファインチューニングしたLLMで強化することもできます。

・各エージェントを個別に評価および改善できる
より大きなアプリケーションを中断することなく、各エージェントを個別に評価および改善できます。

「マルチエージェント」は、複雑な問題を、専門エージェントやLLMプログラムが扱いやすい作業単位に分割できるようになります。

3. マルチエージェントの例

3つのマルチエージェントの例を「langgraph」リポジトリに追加しました。

3-1. Multi Agent Collaboration

複数のエージェントがメッセージの共有スクラッチパッドで共同作業します。これは、どちらかが行うすべての作業がもう一方にも見えることを意味します。これには、他のエージェントが完了した個々のステップをすべて確認できるという利点があります。これには、冗長すぎてすべての情報を渡す必要がない場合や、エージェントからの最終回答のみが必要な場合があるという欠点があります。共有される性質のため、このコラボレーションをスクラッチパッドと呼んでいます。

・複数の独立したエージェントとは何か
独立したエージェントは単一の LLM 呼び出しです。具体的には、特定のプロンプトテンプレートとLLM呼び出しになります。

・エージェントはどのように接続されているか
以下は、エージェントがどのように接続されているかを視覚化したものです。

状態遷移を制御する主なものはルーターですが、これはルールベースのルーターなので、かなり単純です。基本的に、各LLM 呼び出しの後に出力が調べられます。ツールが呼び出されると、そのツールが呼び出されます。ツールが呼び出されず、LLM が「FINAL ANSWER」と応答した場合は、ユーザーに戻ります。それ以外の場合、他のLLMに進みます。

Python
JS

3-2. Agent Supervisor

複数のエージェントが接続されていますが、上記と比較すると、スクラッチパッドを共有していません。各エージェントは独立したスクラッチパッドを持ち、最終応答はグローバルスクラッチパッドに追加されます。

・複数の独立したエージェントとは何か
独立したエージェントは「LangChain」エージェントです。 これは、独自の「プロンプト」「LLM」「ツール」があることを意味します。 呼び出されると、それは単なる1つのLLM呼び出しではなく、「AgentExecutor」 の実行になります。

・エージェントはどのように接続されているか
エージェントスーパーバイザー (監督者) は、個々のエージェントへのルーティングを担当します。

このようにスーパーバイザーは、他のエージェントをツールとするエージェントと考えることができます。

Python
JS

3-3. Hierarchical Agent Teams

エージェントは他の「LangGraph」オブジェクト自体になります。 これにより、「AgentExecutor」をエージェントとして使用するよりも高い柔軟性が得られます。サブエージェントはある意味チームとして考えることができるため、これを「Hierarchical Agent Teams」と呼びます。

・複数の独立したエージェントとは何か
他の「LangGraph」エージェントです。

・エージェントはどのように接続されているか
スーパーバイザ ーエージェントがそれらを接続します。

Python
JS

4. YouTubeのチュートリアル

これら3つの例を説明するYouTubeビデオを追加しました。

5. マルチエージェントのアプリケーション

LangGraph上に構築されたマルチエージェントのアプリケーションを紹介します。

5-1. GPT-Newspaper

GPT-Newspaper」は、「GPT-Researcher」による新プロジェクトです。ユーザーの好みに合わせてパーソナライズされた新聞を作成するように設計された革新的な自律エージェントです。

AIの力を活用して個人の好みや興味に基づいてコンテンツを厳選、執筆、デザイン、編集することで、ニュースの消費方法に革命をもたらします。このアーキテクチャは6つの特殊なサブエージェントで構成されています。

重要なステップが1つあります。それは、「ライター <> 批評」のループであり、有益なサイクルを追加します。

5-2. Crew AI example

Joao Mouraは、「CrewAI」と「LangChain」「LangGraph」を使用して、
メールの自動チェックと下書きの作成プロセスを自動化する素晴らしい例「Crew AI example」を作成しました。「CrewAI」は自律型AIエージェントを調整し、連携して複雑なタスクを効率的に実行できるようにします。

この例のグラフは次のようになります。

6. その他のフレームワーク

「LangGraph」以外のマルチエージェントのフレームワークを紹介します。

6-1. Autogen

Autogen」は、おそらく最初のマルチエージェントフレームワークです。「LangGraph」と「Autogen」のメンタルモデルの最大の違いは、エージェントの構築にあります。「LangGraph」は、さまざまなエージェントと遷移確率を明示的に定義し、それをグラフとして表現するアプローチを好みます。「Autogen」はそれを「会話」として捉えています。 この「グラフ」フレーム構成により、より直感的になり、ノード間の遷移確率を実際に制御したい、より複雑で独自のワークフローを構築するための開発者エクスペリエンスが向上すると考えられます。

6-2. CrewAI

CrewAI」は、マルチエージェントの「チーム」を作成する一般的な方法として最近登場しました。「LangGraph」と比較すると、「CrewAI」はより上位のフレームワークです。CrewAI チームと積極的に協力して、「LangGraph」を「CrewAI」に統合しています。

関連



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