マルチエージェントでソフトウェア開発を自動化しようとすると、たいてい最初にエージェントの数を増やす方向に倒れる。役割を細かく分け、会話のラウンドを重ねても、出力の質はなかなか安定しない。この壁に一度でも当たったことがあるなら、MetaGPTが立てた問いは他人事ではないはずだ。会話を増やすほど、なぜ誤りは検出されないまま下流の工程へ伝わっていくのか。論文の答えは、エージェントを賢くすることでも、会話量を増やすことでもない。中間成果物の型と、それを受け渡す順序を先に固定することだ。
この記事は、Swarm解説の続きとして書いている。あちらでは、multi-agent設計で最初に決めるべきはagentを何人並べるかではなく、どこでhandoffの境界を引くかだと書いた。MetaGPTは、その境界を越える瞬間、つまり工程が変わり責任が変わる瞬間に、何を渡すかという型を与える側の文献として読める。役職の数え方より、境界に流すものの型を決める視点で読むのが私の立場だ。
本記事は論文が示した設計思想と評価結果に絞る。GitHubのスター数や資金調達、派生プロダクトの現況のような変化しやすい話題は扱わない。
本記事のスコープ
- 論文が示す設計思想と評価結果を中心に解説する
- GitHubのスター数、資金調達、派生プロダクトの現況のような変化しやすい話題は扱わない
- ベンチマーク値は「論文が報告した結果」として読む
関連記事: 本記事は「AIエージェント開発に役立つ一次文献11選」の詳細解説記事です。
主張を検証可能にするため、先に二つの言葉を定義しておく。
対象は Hong et al. が発表し、ICLR 2024 で公開された MetaGPT(arXiv 2308.00352)である。
MetaGPT の核心は、役割ごとに責務を分割したチームへソフトウェア開発を変換することにある。重要なのは役職名そのものよりも、誰がどのartifactを作り、次に誰がそれを消費するかという受け渡しの順序だ。
| 役割 | 主な責務 | 次に渡すもの |
|---|---|---|
| PM | 要求を整理し、PRD を作る | 要件定義書 |
| Architect | 技術選定とシステム設計 | 設計書、インターフェース定義 |
| Project Manager | 実装タスクを分割する | タスク一覧 |
| Engineer | コードを書く | 実装ファイル |
| QA Engineer | テストとレビューを行う | テスト結果、修正指示 |
この構成を、役職が5つあるから複雑だと読む必要はない。MetaGPTが役割を増やすより先に固定しているのは、工程間のhandoffをartifactとして明示することだ。PMが作るPRDは、単なる感想文ではなく、次工程が読める形に機能要件と非機能要件をそろえる。
{
"title": "Snake Game",
"features": [
{ "id": "F001", "description": "キーボード操作" },
{ "id": "F002", "description": "スコア表示" },
{ "id": "F003", "description": "衝突判定とゲームオーバー" }
],
"tech_requirements": ["HTML5 Canvas", "JavaScript"]
}
役職名を入れ替えても、この型さえ保てば同じ設計は成立する。逆に、役職だけを増やしてartifactの型を決めなければ、MetaGPTの本質は再現できない。
論文が問題にしているのは、エージェント同士が自然言語で会話すると、情報が曖昧になりやすく、cascading hallucinationが起きやすいことだ。自由会話では、次の3つが起きやすい。
artifact handoffがこれを変えるのは、成果物の型を先に決めることで、工程の境界がそのまま検証可能な点になるからだ。PRDに機能要件の項目が抜けていれば、次工程を担うArchitectはPRDを読んだ時点でそれに気づける。会話のログを遡って確認する必要はない。型が決まっているからこそ、抜けや矛盾がその場で見える。これが、MetaGPTがhandoffをartifactに固定する理由だ。
MetaGPT は、人間のソフトウェア会社にある標準作業手順(SOP)をAIチームへ写し取る。論文が繰り返し使う定式化が Code = SOP(Team) だ。
User Requirement
-> PRD
-> System Design
-> Task Breakdown
-> Code
-> Test / Review
論文は、反復的な会話を増やすより、工程を区切って成果物を固定する方が品質を保ちやすいと見ている。これは人間の開発方法一般の優劣を論じているわけではない。少なくとも当時のLLMを使った自動開発では、線形のhandoffが有効だったという主張だ。
このトレードオフは見落としやすい。
線形パイプラインが有効なのは、要求がある程度固まっている場合に限られる。
MetaGPTの発想が効きやすいのは、要求をいったん文書化し、設計やタスク分解を経由してから実装したい仕事だ。小規模なWebアプリ、CLIツール、単純なAPIサービスのように、工程をartifactに落としやすい題材では学びが多い。
一方、次の場面ではそのまま適用しない方がよい。
論文のbenchmarkが良くても、実運用ではテスト、監査、運用設計、障害対応が残る。MetaGPTは人間を不要にする議論をしていない。与えているのは、どこまでをartifactと役割分担で前処理できるかを考えるための材料だ。
MetaGPTが注目された理由のひとつは、単独のモデル呼び出しより、役割分担とartifact handoffを入れた方がコード生成ベンチマークで高い値を報告した点にある。
| 手法 | Pass@1 |
|---|---|
| GPT-4(単独) | 67.0% |
| ChatGPT + CoT | 65.2% |
| MetaGPT | 85.9% |
| 手法 | Pass@1 |
|---|---|
| GPT-4(単独) | 80.1% |
| MetaGPT | 87.7% |
これらの数字は、論文内の実験設定と使用モデルに依存した報告値である。ここから言えるのは、artifact-drivenな分業がベンチマーク改善に寄与し得るという一つの証拠にとどまる、ということだ。いま最強のフレームワークは何かを直接決める数字としては使わない方がいい。私はこの報告値を、現行の実装比較には持ち込まない。
私たちNexaflowは以前、この手の論文を学術的な到達点としてではなく、調査・見積もり・リサーチ業務を自動化する道具として使う側の立場で読むと書いた(ReAct解説)。同じ立場に立つなら、multi-agentの設計で最初に見るべきなのは役割の名前ではなく、工程が切り替わる場所にどんな型のartifactを流すかだと私は考えている。記事制作や調査業務のように設計・執筆・検証で担当が変わる工程があるなら、そこを自然言語の申し送りで済ませず、次工程が検証できる中間成果物、たとえば採用した情報源や結論の骨子を先にそろえた設計メモのような型に固定できないかをまず問うべきだ、というのが私の立場だ。どこまで型にできているかを検証したわけではなく、この記事の主張を自分たちの仕事にも同じ強さで当てはめるとどうなるかという意見にとどまる。
冒頭で触れたSwarm解説の話を、ここでもう一段掘り下げる。あちらで定義したのは、承認者・正データ・実行できる操作・失敗時の担当という4条件のどれかが変わる場所にhandoffを置くべきだ、という境界の引き方だった。MetaGPTが扱うのは、その境界を越えるものに型を与えることだ。PRD・設計書・タスク一覧というartifactの型を先に決めておけば、境界を越えた瞬間に何が渡ったかを後から検証できる。Swarmが境界の「置き場所」を定義し、MetaGPTが境界を越える「中身」を定義する。同じ問いの、隣り合う2つの答えだと私は読んでいる。
「AIエージェント開発に役立つ一次文献11選」では、エージェントの事故はモデルの賢さではなく、インターフェース設計・停止条件・評価の粒度のどこかで起きると書いた。同じ記事は、MetaGPTを壊れる3か所に直接効く文献としてではなく、役割とartifactの受け渡し設計を学ぶ教材として位置づけている。この整理は正確だと思う。MetaGPTが固定しているのは、工程と工程の間のインターフェースだ。toolとagentの間のインターフェースとは層が違う。層が違うだけで、モデルの賢さより設計という同じ原則がここでも成り立っている。
同じ立場でReAct解説と比べるなら、ReActが扱ったのは単一エージェント内のThought-Action-Observationループで、3〜5ステップの定型タスクという境界を持っていた。MetaGPTが扱うのはその外側、複数の工程と複数のエージェントをまたぐ分業だ。単体ループの限界を、役割分担とartifactで補う関係として読める。
だから私はMetaGPTを「AI会社のロールプレイ」の原型としては読まない。役職名を写経する価値は低いと考えている。写経する価値があるのは、artifactの型と受け渡す順序を先に決めるという設計原則の方だ。
評価値についても距離を置く理由は同じだ。85.9%という数字は、当時のGPT-4ベースの実験設定に依存した報告値であり、覚える価値があるのは数字そのものより、なぜ改善したと著者が考えたかという機構だ。今日のマルチエージェント実装は、イベント駆動、並列化、レビューloop、tool-callingのような別の工夫を重ねている。それでも、中間成果物を曖昧にしないという原則は古びていない。
この原則は、基盤モデルの大小を問わず使えるはずだ。ただしartifactの質そのものは、基盤モデルの能力に強く依存する。役割を細かく分けても、各工程が要求する出力品質を満たせなければ、全体の精度は安定しない。役割を増やすことは、品質の低い工程を隠さない。むしろ露出させる。
ここまでの整理を、MetaGPTの評価としてではなく、自分の業務への持ち帰りとして組み替える。
自分の業務を思い浮かべたとき、どの工程ならartifactの型に落とせるだろうか。要求整理、設計、タスク分解のように、いったん文書化してから次工程に渡せる作業であれば、型を先に決める価値が大きい。逆に、探索的なデバッグや、要件が途中で変わり続ける往復調整のような工程は、線形のhandoffにそのまま乗せると壊れる。そこは人間のレビューか、もっと軽いhandoffの設計、たとえばSwarmが扱うような最小限の境界の方が向いている。
この記事の整理を自分の業務に当てはめるなら、候補になるのは調査レポートを作る工程だと考えている。Swarm解説で定義した境界の引き方——承認者・正データ・実行できる操作・失敗時の担当のどれかが変わる場所にhandoffを置く——と、「AIエージェント開発に役立つ一次文献11選」が指摘する「エージェントの事故はインターフェース設計で起きる」という整理を重ねると、調査から執筆へ工程が切り替わる場所は、正データ(何を一次情報として採用したか)と実行できる操作(どこまで書き足してよいか)の両方が変わる境界に当たる。だとすれば、そこにMetaGPTのPRDに相当する型、たとえば採用した情報源と結論の骨子を先に固定した中間成果物を挟むことは、この記事の原則から素直に導ける自己適用先だと考えている。実際にどこまで型化できているかを検証した結果ではなく、既存の整理を重ねて導いた見立てにとどまる。
MetaGPTが与えているのは、役割を増やす前にまず何を誰から誰へ渡すのかを決めるという一つの判断材料だ。それを自分の業務のどこに当てはめるかは、読んだ人自身の設計次第だと思う。