AIがシステム開発を一貫して行うマルチエージェントフレームワーク、MetaGPTが登場!
3つの要点
✔️ 実世界の専門知識を組み込んだSOPsをLLMエージェントにエンコードするマルチエージェントフレームワークであるMetaGPTを提案
✔️ 実験により、既存手法と比較してより一貫性のある包括的なソリューションを生成できることを証明
✔️ MetaGPTを用いることで、従来のソフトウェアエンジニアリングにかかるコストを1000分の1以下に削減
MetaGPT: Meta Programming for Multi-Agent Collaborative Framework
written by Sirui Hong, Xiawu Zheng, Jonathan Chen, Yuheng Cheng, Jinlin Wang, Ceyao Zhang, Zili Wang, Steven Ka Shing Yau, Zijuan Lin, Liyang Zhou, Chenyu Ran, Lingfeng Xiao, Chenglin Wu
(Submitted on 1 Aug 2023 (v1), last revised 17 Aug 2023 (this version, v4))
Comments: Published on arxiv.
Subjects: Artificial Intelligence (cs.AI); Multiagent Systems (cs.MA)
code:
本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。
はじめに
近年、大規模言語モデル(LLM)によって生成されるマルチエージェントを利用したタスク解決において、著しい進歩が見られる一方で、既存研究は主に単純なタスクのみに焦点を当てており、hallucination(LLMが事実とは異なるもっともらしいウソを出力する現象)が起こりやすい複雑なタスクの調査は行われてきませんでした。
このようなhallucinationは、複数の知的エージェントが相互に作用するにつれて起こりやすくなるため、複雑な問題に取り組む際の課題となっていました。
こうした課題を解消するために、本論文の筆者は人間同士での作業に広く用いられている標準作業手順書(Standardized Operating Procedures, SOPs)に注目しました。
SOPsはタスクの分解と効率的な調整を支援する上で重要な手順書であり、例えばソフトウェア工学では、ウォーターフォールモデルにより要求分析・システム設計・コーディング・テスト・成果物の各フェーズが定義されます。
本稿では、実世界の専門知識を組み込んだSOPsをLLMエージェントにエンコードすることで複雑な問題解決能力を拡張するマルチエージェントフレームワークであるMetaGPTを提案し、実験により既存手法と比較してより一貫性のある包括的なソリューションを生成できることを示した論文について紹介します。
Framework Overview
MetaGPTの設計はFoundational Components LayerとCollaboration Layerの2つのレイヤーに分かれており、それぞれがシステム機能をサポートする役割を持っています。
Foundational Components Layer
このレイヤーは、個々のエージェントの操作とシステム全体の情報交換に必要なEnvironment・Memory・Role・Action・Toolsを含むコアとなる構成要素を詳細に定義し、共同作業に必要な基礎的な能力を開発します。
全体像は下図のようになります。
各構成要素の説明は以下のとおりです。
- Environment: エージェントのための共同ワークスペースとコミュニケーションプラットフォームを提供
- Memory: エージェントが過去のメッセージやコンテキストを保存したり検索したりするのを容易にする
- Role: ドメインの専門知識に基づいて、専門的なスキル・振る舞い・ワークフローをカプセル化する
- Action: サブタスクを達成し、アウトプットを生成するためにエージェントが実行する手順
- Tools: エージェントの能力を高めるために利用できるユーティリティやサービスの集合体
MetaGPTフレームワークでは、ProductManagerやArchitectなどの様々なRoleのエージェントを生成し、例えば、ソフトウェア会社のエンジニアは、以下のようにRole固有の設定を使って初期化します。
MetaGPTフレームワークが提供するRoleの設定により、各々が特定のドメインや目的に合わせて高度に専門化されたLLMエージェントを作成することができます。
Collaboration Layer
Foundamental Components Layerの上に構築されたこのレイヤーは、複雑なタスクを共同作業で解決するためにKnowledge Sharing(知識の共有)とEncapsulating Workflows(ワークフローのカプセル化)という2つのメカニズムを構築します。
- Knowledge Sharing(知識の共有): このメカニズムによりエージェントは効率的に情報を交換し、様々な粒度でデータを保存・検索・共有することができる。協調性を高めるだけでなく、冗長なコミュニケーションを減らし、全体的な運用効率を高める効果ももたらす。
- Encapsulating Workflows(ワークフローのカプセル化): このメカニズムはSOPsを利用して、複雑なタスクをより小さく、管理しやすいサブタスクに分解する。これらのサブタスクを適切なエージェントに割り当て、標準化されたアウトプットによってそのパフォーマンスを監視する。
このように、Foundational Components LayerとCollaboration Layerを分けることで、エージェントの個別の能力と集団での能力の両方を確保しつつ、モジュール化を促進します。
Core Component Design
MetaGPTのアプローチは、高レベルのタスクを様々なRoleのエージェント(ProductManager・Architect・ProjectManager・Engineer・Quality Assurance Engineer)によって処理される詳細な構成要素であるSOPsに分解し、Role固有の専門知識による処理を促進する構造になっています。
下図は、MetaGPTフレームワークにおけるソフトウェア開発プロセスの概略図になります。
初めにMetaGPTが人間からの要求を受け取ると、ProductManagerエージェントが要求分析と実現可能性の分析を行うことでプロセスを開始します。
次に、Architectエージェントが下図に示すように、ソフトウェアアーキテクチャを示す詳細なシステム設計図を生成します。
この図には、User・CollaborativeFilteringModel・Recommenderのような重要なモジュールの定義および各モジュールのフィールドとメソッドの詳細が含まれています。
一方、エンジニアが複雑なシステムコーディングを実装するにはシステム設計図だけでは不十分であり、設計を機能的なコードに変換するためには、モジュール内およびモジュール間でどのようにオペレーションが実行されるかについてさらなる詳細が必要になります。
そのためArchitectエージェントは下図にように、システム・インターフェース設計を基に、機能を実行するために必要なプロセス・関係するオブジェクト・それらの間で交換されるメッセージのシーケンスを描いたシーケンス・フロー図も作成します。
このように詳細を捕捉することで、Engineerエージェントや詳細なコード設計を担当するProductManagerエージェントなどの作業が容易になります。
最後に、Engineerエージェントが実際のコード開発を行い、Quality Assurance Engineerによって包括的なテストが実施されます。
このように、MetaGPTにおける標準化されたアウトプットの設計と実装は複雑なタスクを処理するために非常に有効であり、特に自然言語だけでは伝えることが難しい構造的な情報を、明確かつ安全に表現することができていることが分かります。
Experiments
本論文では、ゲーム開発・ウェブ開発・データ解析などの様々なシナリオでMetaGPTの有用性を実証するため、既存手法であるAutoGPT、AgentVerseとの比較実験を行いました。
初めに各手法の機能を比較した結果が下の表になります。
図の通りMetaGPTは、その豊富な機能が既存手法より際立っており、特にPRD(製品要求仕様書)とテクニカルデザインが生成できる点で、既存手法より大幅なアドバンテージがあると言えます。
次に、各手法の様々なフレームワークのパフォーマンスを評価するために、ゲーム生成やコード生成、単純なデータ分析といった7つの多様なタスクを用いた比較実験が行われました。
結果を下の表に示します。(0=失敗, 1=実行可能, 2=ほぼ期待通りの実行, 3=完全な成功)
表から読み取れるように、MetaGPTは多様なタスクセットで有効な性能を発揮し、2つのタスクを除くすべてのタスクで実行に成功しました。(Flapy bird gameとTank battle gameは実験上の制約と限られたリソースのために成功しませんでした)
これとは対照的に、既存手法であるAutoGPTとAgentVerseはどのタスクでも成功しておらず、ここでもMetaGPTの有用性が実証される結果となりました。
最後に、ソフトウェア開発におけるMetaGPTの統計分析を行いました。
前述した様々なタスクを用いた実験において、1タスクあたり平均4.71個のコードファイルが存在し、1ファイルあたりのコード行数は平均42.99行でした。
この実験で最も注目すべきはCost statisticsであり、従来のソフトウェアエンジニアリングにかかるコストと比較すると、MetaGPTの金銭的なコストを1000分の1以下(平均$1.09)に削減できていることが分かりました。
まとめ
いかがだったでしょうか。今回は、実世界の専門知識を組み込んだSOPsをLLMエージェントにエンコードすることで複雑な問題解決能力を拡張するマルチエージェントフレームワークであるMetaGPTを提案し、実験により既存手法と比較してより一貫性のある包括的なソリューションを生成できることを示した論文について紹介しました。
MetaGPTはエンドツーエンドのプロセスを自動化する上で非常に大きな可能性を秘めていますが、画像や音声のような存在しないリソースファイルを参照することがあったり、複雑なタスクの実行中に未定義またはインポートされていないクラスや変数を呼び出すなどの問題点も見られます。
これらの現象は大規模言語モデルに内在するhallucinationに起因しており、筆者たちはより明確で効率的なワークフローによって処理することができると述べているため、今後の進展が非常に楽しみです。
今回紹介したデータセットやベースラインモデルのアーキテクチャの詳細は本論文に載っていますので、興味がある方は参照してみてください。
この記事に関するカテゴリー