2023年12月11日
ITジャーナリスト
生活とテクノロジー、ビジネスの関係を考えるITジャーナリスト、中国テックウォッチャー。著書に「Googleの正体」(マイコミ新書)、「任天堂ノスタルジー・横井軍平とその時代」(角川新書)など。
ChatGPTが「働く」ソフトウェア開発企業「ChatDev」が設立された。このChatDevの「CEO」に、どのようなソフトウェアが欲しいかを発注すると、ChatGPTが演じるCEO、CTO、CPO、プログラマー、デザイナー、テスターなどが議論をしあって、実際の開発手順に沿って設計し、ソースコードを生成、テストを実施、ドキュメントまでまとめてくれるというものだ。すでにGitHubには、いくつもの開発されたソフトウェアが共有されており、ソフトウェア開発に必要な平均時間は4.26分だという。
「ChatDev」は、清華大学、北京郵電大学などによる共同研究の成果。その成果は論文『Communicative Agents for Software Development』にまとめられている。そのソースコードや成果物などはGitHubにて公開されている。
ChatGPTがさまざまな分野で活用できることはすでによく知られ、実践も進んでいるが、大きな課題になっているのが、まるで実在したかのように虚偽な回答を生成する「ハルシネーション(幻覚)」だ。
例えば、ChatGPT-3.5では、過去に次のような会話が発生した(現在は対策をされて、架空の質問については回答を生成しない仕様になっているようだ)。
問:川崎密室放屁事件とはなんですか?
答:川崎密室放屁事件とは、2019年11月に日本の川崎市内のワンルームマンションで発生した、男性が密室で放屁をしたことが原因で、女性が窒息死した事件のことを指します。
当時、男性は女性と同居しており、女性が男性の放屁の臭いに耐えかねて口を押さえ、窒息してしまいました。事件後、男性は業務上過失致死罪で逮捕され、2021年に横浜地方裁判所で有罪判決が言い渡されました。
この事件は、密室での空気の循環が悪くなることで発生した事故であり、社会的な議論を呼び起こしました。また、放屁によって窒息死が起こるという極めて稀なケースであるため、一部で驚きとともに注目された事件となりました。
もちろん、川崎密室放屁事件などという事件はこの世に存在しない。ChatGPTのようなLLMでは、プロンプト文の中から注目すべき単語を抽出し、その単語に連なる確率の高い単語を接続していくという方式で回答文を生成していく。そのため、でたらめなことを質問すると、もっともらしいでたらめな回答を生成してしまったり、事実であることを質問しても部分的にまったくのでたらめを忍び込ませてしまう可能性がある。
また、特定のコーディングを依頼するという比較的ハルシネーションが起こりづらいタスクでも、誤ったコードが忍び込む可能性があるのだ。そこでどのようにプロンプトを指定するかは依頼者のリテラシ―が試されるところとなり、LLM利用のハードルをあげてしまっている。研究チームは、ハルシネーション解消のために3つの機構をChatDevに組み込んだ。
1つ目は、役割特化(Role Specialization)だ。
ChatGPTにCEO(最高責任者)、CTO(技術責任者)、CPO(製品責任者)、プログラマー、デザイナー、テスターなどの役割を持たせ、複数のエージェントが議論をすることにより、仕様や作業を決定し、作業を実行していく。議論の過程で、合理的な結論に収束をしていくことで、ハルシネーションが排除されていくことになる。
2つ目は、記憶の流れ(Memory Stream)だ。議論した内容は記録をされ、記憶として維持される。これにより、エージェントたちの議論は過去の議論に基づいて行われるため、合理的な結論に早く収束され、ハルシネーションが生まれる余地を減らしている。
3つ目は、自己投影(Self-Reflection)だ。技術的な問題で、議論が終了条件に達しても終了しない問題に対応したものだ。エージェント同士の議論は、次の作業が決まるという終了条件を満たしても、その終了条件を満たしたことを認識できずに、延々と議論を続けてしまうことがあった。そこで、エージェントのコピーを生成し、過去の議論から要約を生成して、議論が終了条件に達していることを確認させるというものだ。
エージェントたちは、次のような議論をして、仕様を決定し、議論を進めていく。
会話例1:
CEO:ユーザーの要求を満足させるために、具体的なプログラミング言語を提案してください。
CTO:PythonとPygameライブラリが五目並べを開発するには最も適した選択だと思います。
CEO:素晴らしい!Pythonは多機能で広く使われているプログラミング言語です。五目並べを開発するのにも適しています。そのわかりやすさと読みやすさが、初心者や経験のある開発者にとっても一般的な選択肢になっています。
CTO:五目並べゲームをPythonとPygmameライブラリを使って開発することにしましょう!
会話例2:
CEO:ユーザーの要求を満足させるには、Pythonでプログラミングすべきですが、プロダクトをどのようなものにするか、私と議論しましょう。
CPO:この五目並べのゲームはデスクトップアプリとして設計することを提案します。コンピューター上で遊べる視覚的なゲームをつくることができるからです。ユーザーフレンドリーなインタフェースとインタラクティブなゲーム体験を提供することになるでしょう。さらに、デスクトップアプリとして開発することは、私たちのノウハウをプログラミングに活かすことができ、Pythonを使ってプロダクトを完成させることを保証してくれます。
CEO:あなたの提案に感謝をし、五目並べをデスクトップアプリとして開発する提案に同意をします。この手法は、私たちのノウハウと合致をし、私たちの顧客に視覚的なアピールとインタラクティブなゲームを開発することができます。オブジェクト指向プロブラミング言語を活用することで、プロダクトを実現可能で、長期のメンテナンスが可能になることが保証されます。五目並べをデスクトップアプリとして開発することにしましょう。
CPO:素晴らしい!五目並べをデスクトップアプリとして開発することを嬉しく思います。
CTO:Pythonを使って実装された複数のファイルからなる実行可能なソフトウェアをつくることで、私たちのタスクを遂行することに決めました。複数のファイルを作成し、アーキテクチャのすべてがコードとして実装されていることを確認する必要があります。ソフトウェアにはGUIも必要であるため、適切なGUIフレームワークを選んでください。ひとつずつ考え、正しいことを行うために正しい決断をする必要があります。まずは、コアクラス、関数、メソッドの名前が必要であり、目的に応じて簡単なコメントも必要になります。
この仮想のソフトウェア開発会社「ChatDev」では、「設計」「コーディング」「テスト」「ドキュメント作成」という順で作業が進む。典型的なウォーターフォール方式だ。この中では、ビジュアルを含むインタフェースも数度にわたって改善されていく。このような作業は、すべてエージェントが議論をしながら進めていき、人間が関わるのは、最初にどのようなゲームを欲しいのか、クライアントとしてChatDevのCEOに告げるところだけで、あとはすべて人間の介在なしに、エージェントがゲームを完成させる。
この研究は、エージェントの動きを可視化するツールのビジュアルが魅力的であり、ソフトウェアを自動生成できるという点が注目をされているが、学術的にも価値が高いものだ。このChatDevの仕組みを応用することで、ゲームや実用的なソフトウェアを開発したり、書籍や解説ビデオ、企画書など、ゴールが明確で実用性のあるコンテンツを自動生成できる可能性があるからだ。
また、個人用のバトラーエージェント(執事)としても応用できる可能性がある。人間が「次の休みに旅行に行きたい」とエージェントに告げるだけで、エージェントたちが議論をしながら、ご主人の嗜好を加味した提案をし、日程を確定し、適切な旅行商品と不足している携行品を購入し、スケジュール帳に組み込んでくれる。そんなSF的世界が手の届くところまできている。
人気記事