多様な役割のAIエージェント達に協力してソフトウェアを開発してもらう『ChatDev』登場。論文内容&使い方を解説

   

ソフトウェア開発の世界では、AIエージェントの活用が着々と現実のものになりつつあります。

今回新たに、「仮想のLLM駆動型ソフトウェア開発会社」というコンセプトの論文とツールが発表されました。さまざまな役割を持つエージェントたちが協力して、ソフトウェア開発の各フェーズを効率的に進めるアーキテクチャです。

この画期的な研究は、Chen Qian氏らによって発表された論文「Communicative Agents for Software Development」で報告されました。北京大学などの研究グループがこのプロジェクトに関与しており、その成果はすでにGitHubで公開されています。

編集部でも実際にChatDevを試してみたので、使い方を含めて解説していきます。

参照論文情報

  • タイトル:Communicative Agents for Software Development
  • 著者:Chen Qian, Xin Cong, Wei Liu, Cheng Yang, Weize Chen, Yusheng Su, Yufan Dang, Jiahao Li, Juyuan Xu, Dahai Li, Zhiyuan Liu, Maosong Sun
  • 所属:Tsinghua University, Beijing University of Posts and Telecommunications, Dalian University of Technology, Brown University, Modelbest Inc.
  • URL:https://doi.org/10.48550/arXiv.2307.07924
  • GitHub:https://github.com/OpenBMB/ChatDev

ChatDevのコンセプトは、さまざまなAIエージェントが働くソフトウェア会社です。
--- 重要なお知らせ---

AIスキル人材と企業をつなぐマッチングサービス「AIDB HR」を開始しました!現在、期間限定で、ギフト券が必ずもらえる新規登録キャンペーンも行っています。


------

ソフトウェア開発の心強い新パートナー

ソフトウェア開発の現状と課題

ソフトウェア開発は、設計からコーディング、テスト、そして文書化まで、多くのフェーズと手続きを必要とする複雑なプロセスです。これには多くの人手と時間、そして資源が必要であり、効率化が求められています。特に、スタートアップ企業や中小企業にとっては、開発コストと時間は重要な要素となります。

新しいパラダイムの登場

この状況を打破するために、研究者らは新しいパラダイムを提案しています。その核心には、大規模言語モデル(LLM)の活用があります。LLMは、自然言語処理NLP)の分野で急速に進化しており、その応用範囲も広がっています。この研究では、LLMをソフトウェア開発の各フェーズに適用し、全体のプロセスを効率化する新しいアーキテクチャ、「ChatDev」が開発されました。

LLMとは何か?

大規模言語モデル(LLM)は、数百GB以上のテキストデータから学習されるAIモデルです。このモデルは、人間のようにテキストを理解し、生成する能力を持っています。そのため、コードの生成やレビュー、さらにはプロジェクト管理まで、多くのタスクで活用することができます。

なぜLLMが重要なのか?

LLMの最大の利点は、その多機能性と拡張性です。従来のソフトウェア開発ツールやフレームワークは、特定のタスクに特化していることが多く、その結果、複数のツールを組み合わせて使用する必要がありました。しかし、LLMを活用することで、一つのモデルで多くのタスクを効率よくこなすことが可能となります。

ChatDevで実現すること

ソフトウェア開発プロセスの高速化

ChatDevの最も注目すべき特性の一つは、全体のソフトウェア開発プロセスを劇的に高速化する能力です。研究によれば、ChatDevは平均でソフトウェアを約410秒で生成することができます。コストや品質など、重視すべき項目が他にあるとはいえ、注目すべき速さです。

開発コストの大幅な削減

ChatDevは開発コストを大幅に削減することも可能です。論文によると、平均的なソフトウェア生成コストは約0.3ドルとされています。これは、従来のソフトウェア開発プロジェクトに比べて非常に低いコストであり、多くの企業や個人開発者にとって大きなメリットとなるでしょう。

ただし、生成するソフトウェアの複雑さによってはこの限りではありませんので、コストや速度の数値は参考程度になるかと思われます。

コードの品質向上

ChatDevはコードの品質も向上させます。研究によれば、ChatDevはコードの脆弱性や潜在的なバグを効率的に特定し、修正することができました。これは、エージェント間の効果的なコミュニケーションと相互検証によって実現されています。

アーキテクチャの要旨

ChatDevのアーキテクチャは、シンプルかつ画期的です。以下でその詳細を解説します。

4つのフェーズで構成される仮想ソフトウェア会社

ChatDevは、設計(Designing)、コーディング(Coding)、テスト(Testing)、文書化(Documenting)の4つのフェーズでソフトウェア開発を行います。このフェーズ分けは、業界で広く採用されているウォーターフォールモデルに基づいています。ウォーターフォールモデルは、各フェーズが順番に進行することで、開発プロセス全体がスムーズに進むよう設計されています。

ChatDevの提案アーキテクチャを示す図。

サブタスクへの細分化とチャットチェーン

各フェーズはさらに、より具体的なサブタスクに分解されます。この分解は「チャットチェーン」と呼ばれる独自のフレームワークによって行われます。チャットチェーンは、各サブタスクにおいて特定の役割を持つエージェントが協力して作業を進めるための仕組みです。この仕組みにより、各サブタスクが明確に定義され、それぞれがどのように進行するべきかが明確になります。

エージェント間の協力とデータ駆動型意思決定

各サブタスクでは、特定の役割を持つエージェントが協力して作業を進めます。エージェントは過去の対話や行動をデータとして蓄積し、これを基に効率的な意思決定を行います。このデータ駆動型のアプローチにより、エージェントはより賢く、効率的な行動が可能になります。

各チャットで利用される3つの主要メカニズム。役割の特化、メモリー・ストリーム、自己省察。





役割の反転による品質向上

ChatDevでは、コードの品質向上のために「役割の反転」が行われます。「役割の反転」とは、エージェントが一時的に役割を交換することで、より多角的な視点からコードを評価する仕組みです。特にコードの生成、レビュー、テストのフェーズで行われます。

コーディングとテストの段階でコードの幻覚を軽減するためのステップ

完成品の総合的なフォルダ生成

最終的に、ChatDevは完成したソフトウェアに関連する全ての必要な情報を一つのフォルダにまとめて出力します。これには、ソースコードから依存環境の設定、さらにはユーザーマニュアルまでが含まれます。このようにして、ChatDevは開発からデプロイメントまでを一貫してサポートします。

外部依存仕様書やユーザーマニュアルなどの関連文書も作成する。

ChatDevを稼働させた実験の結果

平均的なソフトウェア生成時間

研究者らの実験では、ChatDevは平均で約410秒(約6.8分)でソフトウェアを生成することができました。この時間は、ソフトウェアの複雑性や明確性によって変動する可能性があります。例えば、レビュアーとプログラマーが詳細な修正スキームについて広範な対話を行った場合、ソフトウェア生成に最大で1030秒(約17.2分)かかったケースもありました(※論文9ページ目)。

実験で実際に作成されたソフト例。GitHubレポジトリをクローンすれば試すことができる。

平均的なソフトウェア生成コスト

実験における、ChatDevの平均的なソフトウェア生成コストは約0.3ドルでした。この低コストは、多くの企業や個人開発者にとって非常に魅力的な点であり、大規模なプロジェクトでもコストを大幅に削減できる可能性があります。

コードの脆弱性とバグの特定・修正

実験では、レビュアーとプログラマーの対話によって約20種類のコード脆弱性が特定・修正されました。また、テスターとプログラマーの対話によって10種類以上の潜在的なバグが特定・解消されました。これは、ChatDevがコードの品質を確保しながら効率的にソフトウェア開発を行えることを示しています。

エージェントの役割(ロール)は柔軟

役割の多様性とカスタマイズ

ChatDevの魅力の一つは、多様なエージェントが協力してソフトウェア開発を行う点です。CEO(最高経営責任者)、CTO(最高技術責任者)、プログラマー、テスターなど、多くの役割が存在します。これらのエージェントは、各フェーズやサブタスクで特定の責任を担い、効率的なソフトウェア開発を実現します。

フェーズごとの役割分担

例えば、設計フェーズでは、CEO、CPO(最高製品責任者)、CTOが主要な役割を果たします。このフェーズでは、目標とするソフトウェアの形態や使用するプログラミング言語に関する決定が行われます。

タスク指向のロールプレイ

ChatDevのアーキテクチャでは、各フェーズをさらに「細分化されたチャット」に分解します。これらの細分化されたチャットは、特定のサブタスクに焦点を当て、エージェント同士が協力してそのサブタスクを解決します。このようにして、各エージェントはその特定の役割に特化した貢献を行い、全体として効率的なソフトウェア開発が可能になります。

柔軟なカスタマイズ

さらに重要なのが、ChatDevはユーザーがエージェントの役割を柔軟にカスタマイズできるように設計されていることです。特定のプロジェクトやチームのニーズに合わせて、エージェントの役割や動作を調整することが可能です。

実際の使い方

当サイトの利用にはAIDBのアカウントが必要です。
また記事の購読には、アカウント作成後の決済が必要です。



※ログイン/初回登録後、下記ボタンを押してください。

AIDBとは
プレミアム会員(記事の購読)について




■サポートのお願い
AIDBを便利だと思っていただけた方に、任意の金額でサポートしていただけますと幸いです。






PAGE TOP