AutoGen論文
https://scrapbox.io/files/668cb15fc2da01001c9660b1.png
論文情報
タイトル:AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Conversation
発行日:2023年8月
著者:Qingyun Wu et al
所属:Microsoft Research
1 はじめに
大規模言語モデル(LLM)は、LLMを使用して推論、ツールの使用、新しい観察への適応を行う強力なエージェントを開発する上で重要な構成要素となりつつあります。LLMが恩恵をもたらす可能性のあるタスクが拡大し、タスクの複雑さが増大していることを考えると、エージェントの能力を拡張するための直感的なアプローチは、協力する複数のエージェントを使用することです。先行研究によれば、複数のエージェントは発散的思考を促進し(Liang et al., 2023)、事実性と推論を改善し(Du et al., 2023)、検証を提供する(Wu et al., 2023)のに役立つ可能性があります。
hiroya_iizuka.icon エージェントが多いと発散が加速。3人よれば文殊の知恵。
この直感と初期の有望な証拠を踏まえると、次のような疑問が浮かびます:マルチエージェントアプローチに基づいて、幅広い領域と複雑さにわたる可能性のあるLLMアプリケーションの開発をどのように促進できるでしょうか?
私たちの洞察は、マルチエージェント会話を使用してそれを達成することです。LLMの最近の進歩のおかげで、その一般的な実現可能性と有用性を確認する少なくとも3つの理由があります:
第一に、チャット最適化されたLLM(例:GPT-4)がフィードバックを取り入れる能力を示しているため、LLMエージェントは互いに、あるいは人間と会話を通じて協力できます。例えば、エージェントが推論、観察、批評、検証を提供し、求める対話などです。
第二に、単一のLLMが幅広い能力を示すことができるため(特に正しいプロンプトと推論設定で構成された場合)、異なる構成のエージェント間の会話は、これらの幅広いLLM能力をモジュール式で相補的な方法で組み合わせるのに役立ちます。
第三に、LLMはタスクをより単純なサブタスクに分解すると複雑なタスクを解決できることを実証しています。マルチエージェント会話は、この分割と統合を直感的な方法で可能にします。
LLM、人間、またはツールによってサポートされる可能性のある複数のエージェントを調整するという共通の要件を持つ異なるアプリケーションをサポートするために、上記の洞察をどのように活用できるでしょうか?私たちは、異なるアプリケーションのニーズを満たす柔軟性を持つ、一般的な抽象化と効果的な実装を備えたマルチエージェント会話フレームワークを望んでいます。
hiroya_iizuka.icon いいね、グッジョブ👍
これを達成するには、2つの重要な質問に取り組む必要があります:
(1)マルチエージェントコラボレーションにおいて有能で、再利用可能で、カスタマイズ可能で、効果的な個々のエージェントをどのように設計できるでしょうか?
(2)幅広いエージェント会話パターンに対応できる、簡単で統一されたインターフェースをどのように開発できるでしょうか?実際には、様々な複雑さのアプリケーションには、特定の能力を持つ異なるエージェントのセットが必要であり、単一または複数のターンの対話、異なる人間の関与モード、静的対動的な会話など、異なる会話パターンが必要になる可能性があります。さらに、開発者は自然言語やコードでエージェントの対話をプログラムする柔軟性を好む場合があります。これら2つの質問に適切に対処できなければ、フレームワークの適用範囲と一般性が制限されてしまいます。
マルチエージェントアプローチの同時期の探索がある中で、私たちはAutoGenを提示します。これは、以下の新しい概念に基づく一般化されたマルチエージェント会話フレームワークです(図1)。
https://scrapbox.io/files/668df23eb0cf3b001c1c19b1.png
左: マルチエージェントで会話することで多様なLLMベースのアプリを可能に
上中央: 会話が可能で、カスタマイズが可能であり、LLM、ツール、人間、またはそれらの組み合わせに基づくことができます。
右: エージェントは会話してタスクを解決することができます。
下中央: 彼らはチャットを形成することができ、人間がその中に入る可能性もあります。このフレームワークは柔軟な会話パターンをサポートしています。
hiroya_iizuka.icon ミソは、自律的に会話可能で、それに基づきタスクの実行・コードの実行ができ、それらがカスタマイズが容易で柔軟に組み合わせられるということか。
カスタマイズ可能で会話可能なエージェント
AutoGenは、LLM、人間の入力、ツール、またはそれらの組み合わせを活用できるエージェントの一般的な設計を使用します。
その結果、開発者は組み込み機能のサブセットを選択および構成することで、異なる役割を持つエージェント(例:コードを書くエージェント、コードを実行するエージェント、人間のフィードバックを組み込むエージェント、出力を検証するエージェントなど)を簡単かつ迅速に作成できます。
エージェントのバックエンドも容易に拡張でき、より多くのカスタム動作を可能にします。これらのエージェントをマルチエージェント会話に適したものにするために、すべてのエージェントは会話可能になっています
つまり、メッセージを受信し、反応し、応答することができます。
適切に構成されると、エージェントは他のエージェントと自律的に複数のターンの会話を行うことができ、特定のラウンドで人間の入力を求めることができ、人間の関与と自動化を可能にします。
会話可能なエージェントの設計は、チャットを通じてフィードバックを受け取り、進歩する最も高度なLLMの強力な能力を活用し、また、LLMの能力をモジュール式で組み合わせることを可能にします。(セクション2.1)
会話プログラミング
AutoGenの基本的な洞察は、複雑なLLMアプリケーションのワークフローをマルチエージェント会話として簡素化し統一することです。
そのため、AutoGenはこれらのエージェント間の会話を中心としたプログラミングパラダイムを採用しています。我々はこのパラダイムを会話プログラミングと呼び、これは主に2つのステップを通じて複雑なアプリケーションの開発を簡素化します:
(1)特定の能力と役割を持つ一連の会話可能なエージェントを定義する(上記のように);
(2)会話中心の計算と制御を通じてエージェント間の相互作用行動をプログラムする。
両方のステップは、自然言語とプログラミング言語の融合を通じて達成でき、幅広い会話パターンとエージェント行動を持つアプリケーションを構築できます。AutoGenは両方のステップのための準備済みの実装を提供し、また容易な拡張と実験を可能にします。(セクション2.2)
2 AutoGenフレームワーク
開発者が様々な領域にわたる複雑なLLMアプリケーションを作成するために必要な労力を減らすために、AutoGenの中核的な設計原則は、マルチエージェント会話を使用してマルチエージェントワークフローを簡素化し統合することです。このアプローチはまた、実装されたエージェントの再利用性を最大化することを目指しています。このセクションでは、AutoGenの2つの主要な概念である会話可能なエージェントと会話プログラミングを紹介します。
2.1 Conversable Agents
AutoGenでは、会話可能なエージェントは、他の会話可能なエージェントに情報を送受信するためにメッセージを渡すことができる、特定の役割を持つエンティティです。例えば、会話を開始または継続するためにです。エージェントは送受信されたメッセージに基づいて内部コンテキストを維持し、LLM、ツール、人間の入力などによって可能になる一連の能力を持つように構成できます。エージェントは、次に説明するプログラムされた行動パターンに従って行動できます。
LLM、人間、ツールによって強化されたエージェントの能力
エージェントの能力は、メッセージの処理と応答方法に直接影響を与えるため、AutoGenはそのエージェントに様々な能力を付与する柔軟性を提供します。AutoGenは、エージェントのための多くの一般的な組み合わせ可能な能力をサポートしています。
エージェントのカスタマイズと協力
アプリケーション固有のニーズに基づいて、各エージェントは基本的なバックエンドタイプを組み合わせて、マルチエージェント会話で複雑な動作を示すように構成できます。
AutoGenは、組み込みエージェントを再利用または拡張することで、特殊な能力と役割を持つエージェントを簡単に作成することを可能にします。
図2の黄色で影付けされた領域は、AutoGenの組み込みエージェントの概要を示しています。
https://scrapbox.io/files/668f2fb69a3f3d001d061da4.png
ConversableAgentクラスは最高レベルのエージェント抽象化であり、デフォルトではLLM、人間、ツールを使用できます。
AssistantAgentとUserProxyAgentは、2つの事前設定されたConversableAgentのサブクラスで、それぞれ一般的な使用モード、つまりAIアシスタント(LLMによってサポートされる)として行動すること、および人間の代理として行動して人間の入力を求めたりコード/関数呼び出しを実行したりすること(人間やツールによってサポートされる)を表しています。
2.2 会話プログラミング
上記の問題の解決策として、AutoGenは会話プログラミングを利用します。
図2は簡単な例を示しています。下部の副図は、個々のエージェントが役割に特化した会話中心の計算を実行して応答を生成する方法を示しています(例:LLM推論呼び出しとコード実行を通じて)。
https://scrapbox.io/files/668f314fca3a31001c9b994d.png
3 AutoGenのアプリケーション
AutoGenを使用した6つのアプリケーション(図3参照)を示し、高性能なマルチエージェントアプリケーションの開発を簡素化する可能性を説明します。これらのアプリケーションは、実世界との関連性(A1, A2, A4, A5, A6)、問題の難しさとAutoGenによって実現される解決能力(A1, A2, A3, A4)、革新的な可能性(A5, A6)に基づいて選択されています。これらの基準を合わせて、AutoGenがLLMアプリケーションの領域を前進させる役割を示しています。
https://scrapbox.io/files/668f31737cc1d8001c366739.png
図3: AutoGenを使用して構築された多様なアプリケーションの6つの例。それらの会話パターンは、AutoGenの柔軟性と力を示しています。
4 議論
セクション3で詳述した我々の実験は、このアプローチが多くの利点を提供することを示しています。AutoGenの採用により、既存のアプリケーションのパフォーマンスが向上し(最先端のアプローチを上回り)、開発コードが削減され、手動の負担が減少しました。A1(シナリオ3)、A5、A6で実証されているように、開発者に柔軟性を提供し、AutoGenにより、マルチエージェントチャットが固定の往復ではなく動的なパターンに従うことを可能にしました。人間が複数のAIエージェントと会話形式で活動に参加することを可能にします。これらのアプリケーションの複雑さにもかかわらず(ほとんどが2つ以上のエージェントまたは動的なマルチターンエージェント協力を含む)、AutoGenに基づく実装は簡単なままです。タスクを別々のエージェントに分割することでモジュール性が促進されます。さらに、各エージェントを個別に開発、テスト、維持できるため、このアプローチは全体的な開発とコード管理を簡素化します。
この作業はまだ初期の実験段階ですが、多くの将来の方向性と研究機会への道を開きます。例えば、既存のエージェント実装を我々のマルチエージェントフレームワークに効果的に統合する方法や、マルチエージェントワークフローにおける自動化と人間の制御のバランスを最適に取る方法を探ることができます。AutoGenをさらに開発し精緻化する中で、どの戦略(エージェントトポロジーや会話パターンなど)が最も効果的なマルチエージェント会話につながるか、全体的な効率性などの他の要因を最適化しながら調査することを目指しています。エージェントの数や他の自由度を増やすことは、より複雑な問題に取り組む機会を提供しますが、追加の研究と慎重な検討が必要な新しい安全性の課題も引き起こす可能性があります。