このチュートリアルでは、ChatDevフレームワークを活用してコラボレーション型AIシステムを構築する方法を解説し、ChatDevのロールベースのエージェント間コミュニケーション構造であるChatChainの詳細をご紹介します。ChatDevは、それぞれ割り当てられた役割を担うAIエージェントを使用し、仮想のソフトウェア会社をシミュレートします。各インテリジェント・エージェントは、ソフトウェア開発ライフサイクルの段階に基づいた一連のワークフローに従い、構造化されたコミュニケーションを通じて他のエージェントとコラボレーションします。
これらのエージェントを強化するために、IBM watsonx.aiアプリケーション・プログラミング・インターフェース(API)をモデル・バックエンドとして統合しました。watsonx.aiとHugging Faceの統合を活用し、 Llama-4-Maverickを 使用するようにフレームワークを構成して、シンプルなソフトウェア・ソリューションを生成します。この例は、ワークフローを通じてエージェントの行動と意思決定をガイドするChatChainやその他の内部エージェント通信メカニズムを検討するための基礎となります。
このチュートリアルが終了するまでには、ChatDevのセットアップと実行を実際に経験し、エージェント通信プロトコルが効果的で信頼性の高いマルチエージェントコラボレーションをどのように可能にするかをより明確に理解できるでしょう。
コラボレーションAI :人間やAIエージェントと連携して動作するように設計された人工知能システムで、多くの場合深層学習やその他の高度な技術を使用しています。協調行動、共同での意思決定、共同での問題解決を可能にし、共通の目標を達成します。
マルチエージェント・コラボレーション: 情報を共有し、共通の目的を達成するために連携する複数の自律エージェント。エージェントは多くの場合考証、計画、調整されたアクションを含めたさまざまなレベルの知識、能力、視点を持っています。
ロールプレイング・エージェント :特定の役割またはペルソナをシミュレートし、目標主導型で対話と連携を行うAIエージェント。これらの役割には、現実世界の職業や登場人物を反映させることができるため、より文脈に沿った、目的に基づいたやりとりが可能になります。
エージェント・コミュニケーション・プロトコル: AIエージェントが構造化したデータ・メッセージを交換し相互に対話する方法を定義する、基準またはフレームワーク。これらのプロトコルが、マルチエージェント・システム内で連携するエージェントのコミュニケーション形式、セマンティクス、ルールを管理します。
ChatDev は、コラボレーションAIのロールベース実装であり、個々のエージェントが専門の役割を引き受け、共通の目的に向かって取り組みます。この設計は、集合知の原則(本質的に効果的なコラボレーション)を反映しており、ChatDevはこの分野の研究と推進のための貴重なリソースとなっています。
ChatDevは、AIツールと汎用人工知能(AGI)の進歩に焦点を当てた研究主導の取り組みであるOpenBMBによって開発された、オープンソースのマルチエージェント・フレームワークです。このフレームワークでは、コラボレーションを行うAIエージェントを研究するための実践的な領域として、ソフトウェア開発プロセスを使用します。各エージェントは大規模言語モデル(LLM)を搭載しており、CEO、CTO、デザイナー、テスター、プログラマーなどの特定の役割を引き受けるよう、プロンプトで指示を受けます。1
最初は短く説明的なユーザーインプットから、エージェントは互いに協力し合い、ソフトウェア・プロジェクト全体の設計、実装、テストを繰り返します。各エージェントは、構造化された自然言語プロンプトを使用して順番にコミュニケーションを行うPythonクラスとして実装されます。プロンプトはエージェントの役割、タスク固有の指示、および以前の対話からの関連するコンテキストを含む、事前定義されたテンプレートに従います。プロンプト自体にロールIDと共有メモリーを埋め込むことで、このストラテジーは継続性と一貫性の確保に役立ちます。
ChatDevの専門エージェントのチームは協力し合い、アイデアを説明する1行のユーザーインプットからシンプルなソフトウェア・ソリューションを生成します。
ユーザー入力:「ToDoリストのアプリを制作してください」 → CEOがCTOに委任 → CTOが開発者に割り当て → 開発者がコードを作成 → テスターが検証
エージェント同士のインタラクションは、ChatDev Orchestrateフレームワーク内のカスタム調整ロジック、ChatChainによってオーケストレーションされます。エージェント間のコミュニケーションは、構造化されたJSONメッセージをエージェントが順番に交換する、マルチターン・ダイアログないしはメッセージ・パッシング・システムを通じて実行されます。これらのメッセージはアウトプットとコンテキストの更新を表現し、共通のメモリ・バッファとして機能するため、エージェントは開発フェーズ全体にわたって互いのアウトプットを基に新しいアウトプットを積み上げることができます。
プロジェクトを最初から最後まで完了させるために自然言語とプログラミング言語を融合させることで、このアーキテクチャーは一貫したコミュニケーションとコンテキストを踏まえたコラボレーションを可能にします。このプロセスは協調的なマルチエージェント・コミュニケーションに依存しており、各フェーズを完了するために、内部メカニズムは効果的なAIエージェントのコミュニケーションを調整するプロトコルとして機能します。
ユーザーは、実行後の分析とリアルタイム監視の両方をサポートするFlaskベースのWebインターフェースである、ChatDevのVisualizerツールを使用して、エージェントのワークフローを監視およびレビューできます。Visualizerには、リアルタイムのエージェントの対話を検査するログ・ビューアー、保存されたマルチエージェントの会話ログを視覚化する再生・ビューアー、タスクの調整フローを調べるChatChainビューアーなど、いくつかのモードが用意されています。このインタラクティブなインターフェイスにより、ユーザーはローカル・ブラウザーを使用して構造化された環境を通じてマルチエージェント・コラボレーションをデバッグ、実験、および研究できます。
このチュートリアルでは、IBM watsonx.ai API専用にカスタマイズされたバージョンのChatDevを使用しています。コアのChatDev自体は複数のモデル・プロバイダーをサポートしていますが、このバージョンには実用的な「vibecoding」アプローチを使用した改変が加えられており、問題なく機能するものの、すべてのシナリオにわたる網羅的なテストは受けていません。
主な導入事例には以下が含まれます。
IBM watsonx.ai API をラップして、予想されるChatDevのLLMインターフェイスに準拠させる
IBM watsonx.ai APIのトークンとフォーマット要件に合わせて、プロンプト・テンプレートを調整する
IBM watsonx.aiをモデルのバックエンド・オプションとしてサポートするためにモデル選択ロジックを変更する
この実装では、ChatDevを拡張して代替LLMプロバイダーをサポートする方法を示します。他のモデル・プロバイダー(OpenAI、Ollamaなど)は、このカスタマイズされたバージョンのChatDevではテストされておらず、コードレベルの調整が必要となります。
生成AIワークフローと同様、アウトプットは実行ごとに異なる可能性があります。エージェントは通常、一貫した適切に構造化されたコードとドキュメンテーションを生成しますが、結果として得られるアプリケーションを完全に機能させるためには、手動での改良が必要になる場合があります。プロンプト設計、タスクの複雑さ、LLM応答の固有の変動性など、さまざまな要因がこの予測不可能性につながっています。
このチュートリアルでは、協調的なマルチエージェント・システムに関する実践的なイントロダクションとして、ChatDev内でのエージェントのコミュニケーションと連携の仕組みに焦点を当てます。これは実稼働対応のソリューションではなく、LLMによるエージェント・コラボレーションの学習、実験、探求の基盤となることを意図したものです。研究をオープンソース化し、このような探求を可能にしたChatDevの研究者たちに感謝を申し上げます。
ChatDevはクロスプラットフォームとして設計されていますが、セットアップまたは実行中にプラットフォーム固有の問題が発生する可能性があります。例えばWindows上のPowerShellでは、Unixベースのシステム向けのシェル・コマンドの調整が必要になる場合があります。OS、Pythonのバージョン、CPUアーキテクチャーの違いも性能や動作に影響する場合があります。スムーズなセットアップと使いやすさを実現するために、ユーザーはChatDevの公式ドキュメンテーションとインストール・ガイドで、トラブルシューティングと環境固有の手順を確認する必要があります。
以上を念頭に、アプリケーションを実行するための環境をセットアップすることから始めましょう。この手順は、GitHub のプロジェクト・フォルダー 内のマークダウン・ファイル、またはこのページの解説に沿って実行できます。
チュートリアルのプロジェクトディレクトリから、Python 3.11 を使用して仮想環境を作成します。
これにより、プロジェクトの依存関係がインストールされます。
変数は、現在の端末セッションに対して設定されます(端末を閉じるとリセットされます)。
このチュートリアルでは、モデルのバックエンドとしてIBM watsonx.aiを使用していますが、ChatDevの基盤となるフレームワークは当初、デフォルトのOpenAIを含む複数のLLMプロバイダーをサポートするように設計されていました。コードベースの一部の部分(モデル選択ロジックや共有インターフェイスなど)は、引き続き
オプションで、FlashベースのGUIであるChatDevのVisualizerを実行できます。これにより、エージェント・ログをリアルタイムで検査し、ChatChainのワークフローを確認したり、保存されたエージェント・ダイアログを再生できます。このツールは、エージェントのインタラクションをデバッグ、監視、または研究するのには便利ですが、ChatDevの中核となるマルチエージェント・ワークフローの実行には必要ありません。
Visualizerを起動するには、まずFlaskをインストールします。
次に、アプリを実行します。
実行したら、ブラウザを開いて次の場所に移動します。
注:このチュートリアルでは、モデルのバックエンドとしてIBM watsonx.ai APIを使用するように事前構成されたChatDevのバージョンを使用します。このチュートリアルを正しく機能させるためには、追加のセットアップやモデル構成の変更は必要ありません。カスタマイズは可能ですが、LLM構成を変更すると、不完全で不正確な、ばらついたアウトプットとなる可能性があります。
ChatDevは、エージェントのロール、タスク、言語モデルとのやりとりを管理するCAMELフレームワークの上に構築されています。元の実装では、GPT-4などのChatGPTモデルとのインターフェイスとなるモデル・バックエンドとしてOpenAI APIを使用し、デフォルトでGPT-3.5-turboを使用します。このオープンソース・プロジェクトは、統合されたモデル・インターフェイスを通じて複数のLLMプロバイダー・モデルをサポートするように設計されています。
デフォルトのIBM watsonx.ai設定を使用する予定の場合は、この手順をスキップしてください。実験の場合は、モデルの種類、パラメーター、およびトークンの制限を調整して、IBM watsonx.ai APIで動作させることができます。
異なるモデルタイプを
モデルパラメータは、
モデルのトークン制限は以下で可能です。
このステップでは、コアChatDevワークフローが実行されます。このスクリプトを実行すると、エージェントはインプットに基づいて共同ソフトウェア開発プロセスをシミュレートします。生成されたコード、ドキュメンテーション、および関連アーティファクトは、プロジェクトのWareHouseディレクトリに保存されます。Visualizerを使用して、ログの検査や会話の再生が可能です。
このスクリプトは次の引数を受け取ります。
スクリプトの例:
注:ChatDevのアーキテクチャは拡張可能ですが、このチュートリアル・バージョンは
最終的なソフトウェア製品は、
一般的なアウトプットは次のとおりです。
生成AIツールは確率的な性質を持っているため、アウトプットは実行ごとに異なる場合があります。
このディレクトリには、AIエージェントによって生成された完全なソフトウェア・プロジェクトが含まれています。アプリケーション・コードおよびドキュメンテーションと一緒に、以下を定義する構成ファイルがあります。
エージェントの役割 (RoleConfig.json)
開発フェーズ (PhaseConfig.json)
エージェント ワークフロー (ChatChainConfig.json)
ChatDevのVisualizerで再表示できる会話ログ
アプリを実行するには、
エージェントの相互運用性とは、複数の自律エージェントが共通のプロトコルまたは標準を使用して効果的に理解、コミュニケーション、コラボレーションを行う能力を指します。この機能は、タスク全体でエージェント型AIシステムを拡張し、大規模なデータセットを統合し、複雑な問題を協力して解決するために不可欠です。
マルチエージェント・システムでは、KQMLやFIPA-ACLなどのエージェント通信言語(ACL)などの内部通信メカニズムを使用するエージェントからエージェントへの通信デバイスの標準を提供するエージェント通信プロトコル(ACP)がよく使用されます。これらは、動的な環境で構造化された対話と調整を可能にする標準的な「コミュニケーション行動」(情報提供、要求、クエリなど)を定義します。
ただし、ChatDevでは別のアプローチを採用しています。エージェントの調整ワークフローを構造化する通信メカニズムであるChatChainを通じて、エージェントの相互運用性を実現します。ChatChainは、ソフトウェア開発プロセスのすべての段階を通じて、エージェント間でのターンベースの同期的な情報の流れを管理します。ChatChainは正式なACLを基にしたものではありませんが、LLM最適化規則を使用することで、プロトコルと同様の情報交換を促進しています。
ChatDevのエージェントコミュニケーションは以下に依存します。
プロンプト・テンプレート :各フェーズの開始時に、参加するエージェントはそれぞれ、役割、現在のタスク、関連する会話履歴で構造化されたプロンプトを受け取ります。ChatDevは、開始プロンプトを使用して、この情報をプロンプトに直接埋め込み、インタラクション全体で一貫性と目標の整合性を維持できるようにします。
構造化されたメッセージ形式 :エージェントは、出力とコンテキストの更新をエンコードする構造化されたJSONメッセージを通じて通信します。これにより、ワークフロー全体にわたる一貫したデータ交換とトレーサビリティが可能になります。
役割の条件づけ:各エージェントは、初期化時に責任、目標、行動上の期待など、割り当てられた役割を強化するプロンプトを使用します。これは、コミュニケーションを通じたハルシネーションのカギとなるストラテジーです。
これらのメカニズムを組み合わせることで、軽量でスケーラブルな通信フレームワークが形成され、ChatDevは単一のユーザー・プロンプトからソフトウェアを共同で生成することができます。これは、構造化されたLLMベースのコラボレーションが従来のマルチエージェント・ワークフローをどのように強化できるかを示すものです。
ChatChainはChatDevのコア通信メカニズムであり、ソフトウェア開発ワークフロー全体にわたる一連のエージェントの対話を調整します。コラボレーションを、それぞれに特定の目標とコミュニケーション・パターンを持った個別のフェーズで構成される、反復的なチェーンのようなプロセスに構造化します。
各フェーズで、ChatChainは役割固有の2つのエージェント(例えば、CEOとCTO、プログラマーとレビュー担当者)間で、デュアル・エージェント・ダイアログを開始します。通常、片方がインストラクターとして、もう片方がアシスタントとして振る舞います。これらの複数のターンによる構造化されたやり取りにより、役割と担当責任に関する定義の明確性を維持しつつ、共同の意思決定を合理化します。各フェーズのプロンプトには、タスクの指示、ロールID、関連するコンテキストが埋め込まれ、やり取りをガイドします。
ChatDevの全体的なワークフローは、設計、コーディング、テストという3つの連続フェーズにタスクを分割する、伝統的なソフトウェア・エンジニアリング手法「ウォーターフォール・モデル」に従っています。コーディングとテストのフェーズは、反復的な開発プロセスを反映するため、さらにサブタスクに分割されます。
デフォルトでは、ChatChainはワークフローを以下のの順序付けられた自動ステップに分割します。
Demand analysis :アプリケーションの構造と主要コンポーネントを定義します。
Language selection: ソフトウェアの構築と実行に使用するプログラミング言語を選択します。
Coding: エージェントがアプリケーションを構築するコードを書きます。
CodeCompleteAll: 欠落している関数/クラスを含むすべてのコードを完成させます。
CodeReview :機能するようコードをレビューし、変更します。
Test: ソフトウェアを実行し、テスト報告書に基づいてコードを修正します。
EnvironmentDoc: 環境を文書化します。
Manual :アプリケーションのマニュアルを文書化して作成します。
各フェーズは、その動作とプロパティーを定義する属性を指定する構成オブジェクトによって定義されます。たとえば、
エージェント間の適切なコミュニケーションを導くために、ChatDevは、各サブタスク・ラウンドの前に、エージェントの初期化ストラテジーとして、インセプション・プロンプトを使用します。開始プロンプトは、効果的なエージェントコミュニケーションのための役割、目標、責任を組み込むために使用できるプロンプト・エンジニアリング手法です。
開始プロンプトが2人のエージェントをサブタスクを開始、維持、終了するようにガイドする例を見てみましょう。
各サブタスクの前に、各エージェントはロール固有の指示、特性、責任、目標を定義するパラメーターとしてプロンプトを受け取ります。2つの例としては、
LanguageChooseフェーズにおけるインストラクターとアシスタント・エージェントのエージェント・ロールに基づくシステム・ロール・プロンプトは次のとおりです。
これら2つのプロンプトは、エージェントの役割、専門知識、責任を説明することで、希望する動作を初期化します。また、プロンプト戦略は、割り当てられたタスクを完了する方法についてカスタマイズされた指示を与えることで、対話中のそれぞれの役割の行動と応答をガイドします。
エージェントのコミュニケーションは、慎重なプロンプトによって効果的に導かれ、両方の役割が明確な期待値を持ち、効果的に連携できるようになります。
コーディング・ハルシネーション(不完全または不正確なコード生成)に対処するために、ChatDevはコミュニケーションによるハルシネーション除去と呼ばれるコミュニケーションのパターンを使用します。このパターンは、コードレビューのプロセス中に会話を構造化するために不可欠です。
コードレビューのプロセスには、
この例では、コードレビュー・エージェントがプログラマ・エージェントのアウトプット内のエラーを検知し、ソースコードの問題を修正する提案とともにそれを伝えます。プログラマ・エージェントは、そのフィードバックに基づいて元の出力を修正します。
コードレビュー担当エージェントのアウトプットの一部を以下に示します。
プログラマ・エージェントは、次のフェーズでは修正したコードで応答します。
コードレビュアーとプログラマーは、最大10回の反復にわたってコードを改良し続けるか、同一の変更フェーズが2回繰り返された後にコンセンサスに到達します。
コミュニケーションによるハルシネーション除去のパターンは、反復的な改良を通じて、最終コードが正確かつ完全で、意図した要件と一致していることを保証すると同時に、サブタスクの効果的な完了も促進します。
このチュートリアルでは、ChatDevがロールベースのAIエージェントで構成される仮想ソフトウェア会社をシミュレートすることで、コラボレーションAIを実現する仕組みを解説します。IBM watsonx.ai APIをモデルのバックエンドとして使用するChatDevは、自然言語とプログラミング言語の両方で構造化された通信を使用して、ソフトウェア開発ライフサイクルのエージェントをガイドします。
ChatDevは正式なエージェント通信プロトコルを使用していませんが、ChatChain、インセプト・プロンプト、コミュニケーションによるハルシネーション除去などのエージェント間コミュニケーション手法を使用して、LLMの自然な能力によるエージェントの相互運用性を実現します。これは、コラボレーションを成功させてアウトプット品質を向上させるために、効果的なエージェント間コミュニケーションのオーケストレーションの重要性を際立たせています。
エージェントの対話を監視および再生するための視覚化ツールが組み込まれたChatDevは、マルチエージェント・ワークフローおよびLLM主導のTeamworks® のダイナミクスを研究するための強力なプラットフォームを提供します。これは、ソフトウェアの開発やそれ以外の分野におけるコラボレーティブAIの現実的な可能性を示しています。
業界をリードするIBMのAI専門知識とソリューション製品群を使用すれば、ビジネスにAIを活用できます。
AIの導入で重要なワークフローと業務を再構築し、エクスペリエンス、リアルタイムの意思決定とビジネス価値を最大化します。