生成AIエージェントはシステム開発をどこまで変えるのか? (original) (raw)
はじめに
こんにちは!昨年9月からInsight Edgeの開発チームに参画した広松です。Insight Edgeでは生成AI案件を担当しています。 2024年11月現在でも生成AIの進化は止まらず、日に日に技術的な課題を克服しています。各社のLLMが頻繁に大型アップデートされるので付いていくだけでも大変な日々を送っています。
さて、前回は 生成AIエージェントを使ったデータ分析の記事を書いたので、今回は生成AIエージェントを使ったシステム開発について書こうと思います。ただ、この技術は非常に進化が早くすぐに記事が古くなり役に立たなくなってしまうので、2024年11月現在で実現できていることと、長期的な将来像の考察について論文紹介も含めて書いていきます。
昨今では、生成AIがコーディングの補助をしてくれることが常識になりつつありますが、システム開発の様々な工程をAIエージェントがどの程度自動でやってくれるのでしょうか?その点を確認しつつ、解決されるべき課題についても記載していきます。
目次
- はじめに
- 目次
- 概要
- 現在(※2024年11月)までの生成AIでのシステム開発補助の経緯
- 現在のAIエージェントによるシステム開発が抱える課題
- AIエージェントを使ったシステム開発の将来
- 最後に
- 参考文献
概要
2024年11月現在までの生成AI及び生成AIエージェントによるシステム開発の補助について説明し、長期的な将来、生成AIエージェントがシステム開発にどう関わるのかについての予想を論文をベースに説明します。
現在(※2024年11月)までの生成AIでのシステム開発補助の経緯
チャット形式でコード生成をさせる時代
2023年までのシステム開発での主要な生成AIの活用方法は、チャットベースで生成AIに質問を投げるだけでした。
ChatGPTやGitHub Copilotに実装したい内容を伝えてコードを生成させる使い方がほとんどでした。コーディング補助以外ではドキュメント作成に使われることが大半でした。要求分析や要件定義、設計などでドキュメント作成に活用していた方もいると思いますが、方法が確立されておらずコーディング補助のように劇的な効果は得られていなかったと思います。
ただ、生成AIはそもそも論理的な思考ができないので、複雑な内容や中規模以上のコードを一気に生成させることは現実的ではありませんでした。 複雑な内容やある程度の規模のコードをまとめて生成させた事がある方は、それっぽいでたらめなコードが生成されるのを見てきたと思います。
また、生成AIはコードを生成するだけで、出力されたコードを実行して結果を確認する作業は人間の開発者が行なっていました。
AIエージェントでコーディング計画を立てたりエラーの自己解決を試みる時代
上述したような課題から、AIエージェントを使ったサービスが出てきました。 推論を繰り返すことで論理的な思考を誘導したり、コードの実行環境を操作できるようにしてエラーを自己解決させるアプローチが取られ始めました。
具体的なサービスだと、GitHubがissueからAIエージェントにコーディング計画を立てさせてコーディングをさせる GitHub Copilot Workspace が発表された他、フロントエンド開発をAIエージェントで支援する bolt.new などがリリースされました。
課題1. 論理的な思考が難しい
生成AIは確率的に出力を生成しているので、論理的な思考ができません。推論を繰り返すことで論理的な思考のような出力を誘導させる事が限界です。2024年前半までは CoT(段階的に思考させて論理的な出力を誘導する手法) や ReAct(推論・実行・結果の観察をループさせることで論理的な出力を誘導する手法) が有力な手法でしたが、精度としてはそれほど高くありませんでした。
しかし、現在はこの論理的な思考のような出力を誘導させる技術が飛躍的に進歩しており、OpenAIが最近発表した o1-preview などは理系博士課程の学生に匹敵もしくは超えるほど高難度の問題が解けるようになっています。 推論を繰り返す方法は非常に威力があるので今後、この方法が進化していけば大抵のソフトウェアエンジニアよりも"論理的"な思考が出力されるようになるかもしれません。
課題2. 推論や対話を繰り返すと指示を忘却してしまう
課題1の論理的思考は今後の技術的な進歩である程度問題ないように思えます。しかし、推論を繰り返すことで別の問題が生じます。 それは推論を繰り返すうちに内容が要約されて、詳細な内容や初期の指示が忘れられてしまうことです。そのため詳細な長文の仕様などを伝えても正確な指示が残らない事があります。
課題3. ハルシネーションが連鎖する
エージェントは内部でかなりの推論や対話を繰り返すので、一度のハルシネーションが連鎖して大きな混乱を発生させ、最終結果に大きな影響を与えてしまいます。
課題4. 人間と協業しづらい
エージェントが自律的にどんどん開発を進めてしまうため、人間が介入しづらいです。 エージェントから必要な情報を人間に問うようなサービスもありますが、エージェントが勝手に判断してあらぬ方向に開発をどんどん進めてしまうことも多々あります。
課題5. 様々な専門家ロールの視点によるチェックがない
エージェントは設計からテストまで自動で行ってくれますが、様々な専門家ロールの視点でチェックしてくれるわけではありません。 PM、アーキテクト、エンジニア、品質管理者など様々な視点で成果物をチェックしてくれるわけではありません。
AIエージェントを使ったシステム開発の将来
複数ロール(例:PM、アーキテクト、エンジニア、品質管理者)のマルチエージェントでシステム開発をする時代
先ほどあげた課題の中で、課題1, 課題2はLLMそのものの問題です。課題3, 4, 5については仕組み自体を工夫することで解決できると思います。 今回はシステム開発としては必須となるであろう課題5についての解決策とその未来について考察しようと思います。
実際のシステム開発ではPM、アーキテクト、エンジニア、品質管理者など様々なロールの専門家が協力してシステム開発を行います。 この実際のシステム開発のやり方を踏襲したアプローチで代表的なものが2つあります。MetaGPT や ChatDev と呼ばれる手法です。
今回はより実際のシステム開発会社での開発に近いMetaGPTについて紹介します。
MetaGPTとは
MetaGPT とは以下の図のように各専門家のエージェントをマルチエージェントで動かし、協業してシステム開発を行う手法です。
MetaGPTの概要の図
この手法で特徴的なのは、エージェント同士の会話でハルシネーションを連鎖させないために、SOP(標準化された作業手順書)を使用していることです。これはシステム開発会社などで用いられている実際の手順書を用いています。例えばウォータフォールであれば、要件定義、設計、実装、テストなどの一連の作業の流れを標準化したものです。 これにより標準化されたやり方でタスクを細分化でき、ハルシネーションの連鎖を発生させにくくできます。
また、このような人間によるシステム開発の標準に沿っているため各ロールのエージェントの成果物も人間が確認しやすいものとなっています。 例えば、アーキテクトのエージェントが出力するものは以下で、人間のアーキテクトやエンジニアでも簡単にレビューできるものとなっています。
アーキテクトのエージェントが出力したクラス図
アーキテクトのエージェントが出力したシーケンス図
上記だけでなくMetaGPTの興味深いところは、冗長な会話をする事なく知識の共有ができることです。 各エージェントが様々な情報を共有(Publish)しておき、他のエージェントは共有された情報を検索して必要な情報を取得(Subscribe)します。このPub/Sub形式での知識の共有を行うことで効率的で効果的な開発が可能になっているようです。
ロールごとに成果物の形式を標準化したり、知識のPub/Sub形式での共有は、人間による開発とかなり似ていますね。
最後に
生成AIの進化は凄まじいですが、システム開発の現場においてはコーディング補助以上に適用する方法はまだまだ確立されていないのが現状です。
しかし、要求分析から要件定義・設計・実装・テスト・品質チェックまでをマルチエージェントで自動で行う手法なども登場しています。各専門家ロールのエージェントが人間と同じ形式の成果物を出力して作業を進めていくので人間にもトレースでき、協業することも難しくないでしょう。
今後は同じロールの人を大勢集めたチームで働くのではなく、各ロールの専門家を集めた比較的小規模のチームでの開発が主流になっていくのではないでしょうか?そのためには今以上に他のロールの視点を理解しながら仕事をしていく必要がありそうですね。
参考文献
- Jason Wei, Xuezhi Wang, Dale Schuurmans, et al., "Chain of Thought Prompting Elicits Reasoning in Large Language Models," arXiv, 2022. DOI: https://doi.org/10.48550/arXiv.2201.11903
- Shunyu Yao, Jeffrey Zhao, Dian Yu, et al., "ReAct: Synergizing Reasoning and Acting in Language Models," arXiv, 2022. DOI: https://doi.org/10.48550/arXiv.2210.03629
- Sirui Hong, Mingchen Zhuge, Jiaqi Chen et al., "MetaGPT: Meta Programming for a Multi-Agent Collaborative Framework," arXiv, 2023. DOI: https://doi.org/10.48550/arXiv.2308.00352
- Chen Qian, Wei Liu, Hongzhang Liu, et al., "ChatDev: Communicative Agents for Software Development," arXiv, 2023. DOI: https://doi.org/10.48550/arXiv.2307.07924