はじめに
「PhaseConfig.json」は、ChatDevというシステム内で特定のフェーズ(Phase)の設定を管理するために使用されます。ここでの「フェーズ」とは、開発プロセスの特定のステップやタスクを指します。
以下は、各セクションの解説です。
ChatDev日本語版 Wiki
AIエージェント達の仮想ソフトウェア開発会社【ChatDev】公式Wikiの日本語版 作ってみた
Quick Start元のWIKIInstall ChatDev(ChatDev のインストール ):設置説明書に記載されているクイックスタートセクション を参照してください。Start building software in one c...
各セクションの解説
1. DemandAnalysis
- 役割 :
Chief Product Officer
(アシスタントの役割)とChief Executive Officer
(ユーザーの役割)。 - プロンプト : 製品のモダリティ(画像、ドキュメント、パワーポイントなど)に関する討論を行い、最終的に製品モダリティを決定する。
2. LanguageChoose
- 役割 :
Chief Technology Officer
(アシスタントの役割)とChief Executive Officer
(ユーザーの役割)。 - プロンプト : プロジェクトに適したプログラミング言語(Python、Java、C++など)を選択するための討論を行う。
3. Coding
- 役割 :
Programmer
(アシスタントの役割)とChief Technology Officer
(ユーザーの役割)。 - プロンプト : 選択されたプログラミング言語を使用して、ソフトウェアの実装を行う。コードの形式と内容に関する詳細な指示が含まれる。
4. ArtDesign
- 役割 :
Programmer
(アシスタントの役割)とChief Creative Officer
(ユーザーの役割)。 - プロンプト : ソフトウェアのグラフィカルユーザーインターフェース(GUI)のデザインに関する議論。異なるGUI要素のための画像デザインについて話し合う。
5. ArtIntegration
- 役割 :
Programmer
(アシスタントの役割)とChief Creative Officer
(ユーザーの役割)。 - プロンプト : GUIにデザインされた画像を統合する方法についての討論。画像のスケーリングや配置に関する指示が含まれる。
6. CodeComplete
- 役割 :
Programmer
(アシスタントの役割)とChief Technology Officer
(ユーザーの役割)。 - プロンプト : ソフトウェアの未完成部分を完成させるためのコーディング作業に関する指示。
7. CodeReviewComment
- 役割 :
Code Reviewer
(アシスタントの役割)とProgrammer
(ユーザーの役割)。 - プロンプト : コードレビューと修正提案に関する指示。コードの品質や要件適合性に関する評価を行う。
8. CodeReviewModification
- 役割 :
Programmer
(アシスタントの役割)とCode Reviewer
(ユーザーの役割)。 - プロンプト : コードレビューのコメントに基づいて、コードの修正を行う。
9. TestErrorSummary
- 役割 :
Programmer
(アシスタントの役割)とSoftware Test Engineer
(ユーザーの役割)。 - プロンプト : テストレポートに基づいて、コードのバグを特定し、まとめる。
10. TestModification
- 役割 :
Programmer
(アシスタントの役割)とSoftware Test Engineer
(ユーザーの役割)。 - プロンプト : テストレポートのエラーサマリーに基づいて、コードの修正を行う。
11. EnvironmentDoc
- 役割 :
Programmer
(アシスタントの役割)とChief Technology Officer
(ユーザーの役割)。 - プロンプト : プロジェクトの依存関係を指定する
requirements.txt
ファイルを作成する。
12. Manual
- 役割 :
Chief Product Officer
(アシスタントの役割)とChief Executive Officer
(ユーザーの役割)。 - プロンプト : ソフトウェアの使用方法に関する詳細なユーザーマニュアル(
manual.md
ファイル)を作成する。
このPhaseConfig.json
ファイルは、各フェーズで期待されるアウトプット、役割の分担、および議論の焦点を明確にすることで、ソフトウェア開発プロセスを構造化し、整理するために使用されます。
日本語版 PhaseConfig.json
https://github.com/Sunwood-ai-labs/ChatDev/blob/main/CompanyConfig/DefaultJP2/PhaseConfig.json
{
"DemandAnalysis": {
"assistant_role_name": "Chief Product Officer",
"user_role_name": "Chief Executive Officer",
"phase_prompt": [
"ChatDevは,以前に次の形式の製品を作成しています:",
"画像:折れ線グラフ,棒グラフ,フローチャート,クラウドチャート,ガントチャートなどで情報を表示できます.",
"ドキュメント:.docxファイルを介して情報を提示できます.",
"パワーポイント:.pptxファイルを介して情報を提示できます.",
"エクセル:.xlsxファイルを介して情報を提示できます.",
"PDF:.pdfファイルを介して情報を提示できます.",
"ウェブサイト:.htmlファイルを介して,個人の履歴書,チュートリアル,製品,またはアイデアを提示できます.",
"アプリケーション:Pythonを介して視覚化されたゲーム,ソフトウェア,ツールなどを実装できます.",
"ダッシュボード:リアルタイム情報を視覚化するパネルを表示できます.",
"マインドマップ:関連する概念を中心概念の周りに配置して,アイデアを表現できます.",
"{assistant_role}として,新しいユーザーの要求を満たし,製品が実現可能であるために,どの製品モダリティを望むか決定するために私と議論を続ける必要がありますか?",
"製品モダリティのみについて議論し,他のことについては議論しないことに注意してください!私たち全員が意見を述べ,議論の結果に全員が同意したら,私たちの誰かが <INFO> で始まる1行だけで議論を積極的に終了する必要があります.その後,最終的な製品モダリティを他の言葉なしで続けます.例えば,\"<INFO> PowerPoint\"などです."
]
},
"LanguageChoose": {
"assistant_role_name": "Chief Technology Officer",
"user_role_name": "Chief Executive Officer",
"phase_prompt": [
"以下の新しいユーザーのタスクといくつかの創造的なブレインストーミングアイデアに基づいて:",
"タスク:\"{task}\".",
"モダリティ:\"{modality}\".",
"アイデア:\"{ideas}\".",
"我々は,プログラミング言語を介して実行可能なソフトウェアを実装することで,このタスクを完了することに決めました.",
"{assistant_role}として,新しいユーザーの要求を満たし,ソフトウェアを実現可能にするために,具体的なプログラミング言語を提案する必要があります.Pythonでこのタスクを完了できる場合はPythonと回答してください.それ以外の場合は,別のプログラミング言語(例:Java,C++など)を回答してください.",
"対象となるプログラミング言語についてのみ議論し,他のことについては議論しないことに注意してください!私たち全員が意見を述べ,議論の結果に全員が同意したら,私たちの誰かが議論を積極的に終了し,議論した最良のプログラミング言語を他の言葉や理由なしに結論づけ,次の形式を使用して1行だけ返す必要があります:\"<INFO> *\" ここで \"*\" はプログラミング言語を表します."
]
},
"Coding": {
"assistant_role_name": "Programmer",
"user_role_name": "Chief Technology Officer",
"phase_prompt": [
"新しいユーザーのタスクと私たちのソフトウェア設計に従って:",
"タスク: \"{task}\".",
"モダリティ: \"{modality}\".",
"プログラミング言語: \"{language}\"",
"アイデア:\"{ideas}\"",
"{language}を介して複数のファイルで実装される実行可能なソフトウェアを通じてタスクを完了することに決定しました.{assistant_role}として,新しいユーザーの要求を満たすために,一つまたは複数のファイルを記述し,最終的にすべてのアーキテクチャの詳細がコードとして実装されていることを確認する必要があります.{gui}",
"ステップバイステップで考え,正しい決定に至る理由を自分自身で考え,正しくやることを確認してください.",
"まず,必要なコアクラス,関数,メソッドの名前と,それらの目的についての簡単なコメントを示します.",
"次に,完全なコードを含む各ファイルの内容を出力します.各ファイルは,以下のトークンが置き換えられたマークダウンコードブロック形式に厳密に従う必要があります.ここで「FILENAME」はファイル拡張子を含む小文字のファイル名,「LANGUAGE」はプログラミング言語,「DOCSTRING」は特定のコードセグメントを文書化するためにソースコードで指定された文字列リテラル,「CODE」は元のコードです:",
"FILENAME",
"```LANGUAGE",
"'''",
"DOCSTRING",
"'''",
"CODE",
"```",
"「main」ファイルから始めて,そのファイルにインポートされるもの,その後に続くものへと進んでください.",
"コードは完全に機能するものであるべきです.すべての関数を実装してください.Pythonの「pass」のようなプレースホルダーは使用しないでください."
]
},
"ArtDesign": {
"assistant_role_name": "Programmer",
"user_role_name": "Chief Creative Officer",
"phase_prompt": [
"開発されたソースコードと対応するテストレポートは以下の通りです: ",
"タスク: \"{task}\".",
"プログラミング言語: \"{language}\"",
"ソースコード:",
"\"{codes}\"",
"各ファイルはマークダウンコードブロック形式に厳密に従う必要があり,以下のトークンは「FILENAME」がファイル拡張子を含む小文字のファイル名,「LANGUAGE」がプログラミング言語,「DOCSTRING」が特定のコードセグメントを文書化するためにソースコードで指定された文字列リテラル,「CODE」が元のコードになるように置き換えられる必要があります:",
"FILENAME",
"```LANGUAGE",
"'''",
"DOCSTRING",
"'''",
"CODE",
"```",
"{assistant_role}として,新しいユーザーの要求に応え,ソフトウェアに美しいグラフィカルユーザーインターフェース(GUI)を装備するために,GUI装飾のための多くの装飾画像の設計と議論を行います.現在,異なる画像で装飾されることを検討されているGUI内の機能的に独立した要素をリストアップすることによってGUIの美化について議論を続けています.例えば,電卓の10桁(0-9)は機能的に独立しています.",
"回答する際には,「FILENAME.png: DESCRIPTION」の形式を使用してください.ここで「FILENAME」は画像のファイル名で,「DESCRIPTION」は独立要素の詳細な説明を示します.例えば:",
"'''",
"button_1.png: 「1」という数字のボタン.",
"button_multiply.png: 乗算記号(\"*\")のボタン.",
"background.png: 囲碁の背景色を装飾する",
"'''",
"可能な限り多くの機能的に独立した要素をリストアップしてください."
]
},
"ArtIntegration": {
"assistant_role_name": "Programmer",
"user_role_name": "Chief Creative Officer",
"phase_prompt": [
"開発されたソースコードと対応するテストレポートは以下の通りです: ",
"タスク: \"{task}\".",
"プログラミング言語: \"{language}\"",
"ソースコード:",
"\"{codes}\"",
"各ファイルはマークダウンコードブロック形式に厳密に従う必要があり,以下のトークンは「FILENAME」がファイル拡張子を含む小文字のファイル名,「LANGUAGE」がプログラミング言語,「DOCSTRING」が特定のコードセグメントを文書化するためにソースコードで指定された文字列リテラル,「CODE」が元のコードになるように置き換えられる必要があります:",
"FILENAME",
"```LANGUAGE",
"'''",
"DOCSTRING",
"'''",
"CODE",
"```",
"{assistant_role}として,新しいユーザーの要求に応え,ソフトウェアに美しいグラフィカルユーザーインターフェース(GUI)を装備するために,私たちのデザインした画像をGUI装飾に取り入れます.ここにはいくつかの高品質な既製の画像と対応する説明があります:",
"{images}",
"デザインされた画像は256x256ピクセルの固定サイズであり,画像はすべてのPythonファイルと同じディレクトリに配置されています.これらの画像をGUIのサイズに応じて動的にスケーリングし,「self.*」を使用して自動ガベージコレクションによって引き起こされる表示関連の問題を避けてください.例えば:",
"```",
"self.image = ImageTk.PhotoImage(Image.open(\"./image.png\").resize((50, 50)))",
"```",
"今,GUIをより美しく創造的にするために,いくつかまたはすべての画像をGUIに取り入れてください.上記の必要な形式に厳密に従ってコードを出力します."
]
},
"CodeComplete": {
"assistant_role_name": "Programmer",
"user_role_name": "Chief Technology Officer",
"phase_prompt": [
"以下にリストアップされている新しいユーザーのタスクと私たちのソフトウェア設計に従って:",
"タスク: \"{task}\".",
"モダリティ: \"{modality}\".",
"プログラミング言語: \"{language}\"",
"コード:",
"\"{codes}\"",
"未実装ファイル:",
"\"{unimplemented_file}\"",
"私たちのソフトウェアでは,各ファイルはマークダウンコードブロック形式に厳密に従い,以下のトークンは「FILENAME」がファイル拡張子を含む小文字のファイル名,「LANGUAGE」がプログラミング言語,「DOCSTRING」が特定のコードセグメントを文書化するためにソースコードで指定された文字列リテラル,「CODE」が元のコードになるように置き換えられる必要があります:",
"FILENAME",
"```LANGUAGE",
"'''",
"DOCSTRING",
"'''",
"CODE",
"```",
"{assistant_role}として,開発されたソフトウェアの完全な機能を満たすために,未実装クラスを含む{unimplemented_file}ファイルのすべてのメソッドを実装する必要があります.現在,{unimplemented_file}のすべてのメソッドと必要な他のコードを実装し,必要な形式に厳密に従って完全に実装されたコードを出力してください."
]
},
"CodeReviewComment": {
"assistant_role_name": "Code Reviewer",
"user_role_name": "Programmer",
"phase_prompt": [
"新しいユーザーのタスクと私たちのソフトウェア設計に従って:",
"タスク: \"{task}\".",
"モダリティ: \"{modality}\".",
"プログラミング言語: \"{language}\"",
"アイデア: \"{ideas}\"",
"コード:",
"\"{codes}\"",
"{assistant_role}として,ソフトウェアをさらなるコーディングなしで直接操作可能にするために,ChatDevは以下の規則を定めました:",
"1) 参照されるすべてのクラスをインポートすること;",
"2) すべてのメソッドを実装すること;",
"3) すべてのメソッドに必要なコメントを付けること;",
"4) 潜在的なバグがないこと;",
"5) プロジェクト全体がユーザーによって提案されたタスクに適合していること;",
"6) 最も重要なことは,コードのエラーだけでなく,コードのロジックもチェックし,ユーザーが要件の機能を失うことなく生成されたソフトウェアと対話できるようにすること;",
"現在,上記の規則を一つずつチェックし,コードを詳細にレビューし,コードに関する最も優先度の高いコメントを提案し,修正方法についての指示を出してください.最も優先度の高いコメントと修正に関する提案を教えてください.コードが完璧でコメントがない場合は,「<INFO> Finished」という1行だけを返してください."
]
},
"CodeReviewModification": {
"assistant_role_name": "Programmer",
"user_role_name": "Code Reviewer",
"phase_prompt": [
"新しいユーザーのタスク,私たちが設計した製品モダリティ,言語,アイデアに基づき,開発された初版ソースコードは以下の通りです:",
"タスク: \"{task}\".",
"モダリティ: \"{modality}\".",
"プログラミング言語: \"{language}\"",
"アイデア: \"{ideas}\"",
"コード: ",
"\"{codes}\"",
"コードに対するコメント:",
"\"{comments}\"",
"ソフトウェアでは,各ファイルはマークダウンコードブロック形式に厳密に従い,以下のトークンは「FILENAME」がファイル拡張子を含む小文字のファイル名,「LANGUAGE」がプログラミング言語,「DOCSTRING」が特定のコードセグメントを文書化するためにソースコードで指定された文字列リテラル,「CODE」が元のコードになるように置き換えられる必要があります.形式:",
"FILENAME",
"```LANGUAGE",
"'''",
"DOCSTRING",
"'''",
"CODE",
"```",
"{assistant_role}として,新しいユーザーの要求に応え,ソフトウェアを創造的で実行可能かつ堅牢にするために,コメントに従って対応するコードを修正する必要があります.その後,コメントに基づいてすべてのバグを修正した完全で完全なコードを出力します.必要な形式に厳密に従ってすべてのコードを返してください."
]
},
"TestErrorSummary": {
"assistant_role_name": "Programmer",
"user_role_name": "Software Test Engineer",
"phase_prompt": [
"開発されたソースコードと対応するテストレポートは以下の通りです: ",
"プログラミング言語: \"{language}\"",
"ソースコード:",
"\"{codes}\"",
"ソースコードのテストレポート:",
"\"{test_reports}\"",
"私のテストレポートによると,問題を引き起こすバグを特定し,まとめてください."
]
},
"TestModification": {
"assistant_role_name": "Programmer",
"user_role_name": "Software Test Engineer",
"phase_prompt": [
"開発されたソースコードと対応するテストレポートは以下の通りです: ",
"プログラミング言語: \"{language}\"",
"ソースコード:",
"\"{codes}\"",
"ソースコードのテストレポート:",
"\"{test_reports}\"",
"テストレポートのエラーサマリー:",
"\"{error_summary}\"",
"各ファイルはマークダウンコードブロック形式に厳密に従う必要があり,以下のトークンは「FILENAME」がファイル拡張子を含む小文字のファイル名,「LANGUAGE」がプログラミング言語,「DOCSTRING」が特定のコードセグメントを文書化するためにソースコードで指定された文字列リテラル,「CODE」が元のコードになるように置き換えられる必要があります:",
"FILENAME",
"```LANGUAGE",
"'''",
"DOCSTRING",
"'''",
"CODE",
"```",
"{assistant_role}として,新しいユーザーの要求を満たし,ソフトウェアをスムーズかつ堅牢に実行させるために,エラーサマリーに基づいてコードを修正する必要があります.現在,上記で例示された形式を使用し,エラーサマリーに基づいて問題のあるコードを修正してください.テストレポートと対応する説明に基づいて修正したコードを出力してください(FILENAME,LANGUAGE,DOCSTRING,CODEを含む上記で定義された形式に厳密に従ってください.不完全な「TODO」コードは厳禁です).バグが報告されていない場合は,「<INFO> Finished」という1行だけを返してください."
]
},
"EnvironmentDoc": {
"assistant_role_name": "Programmer",
"user_role_name": "Chief Technology Officer",
"phase_prompt": [
"新しいユーザーのタスクと開発されたコードは以下の通りです: ",
"タスク: \"{task}\".",
"モダリティ: \"{modality}\".",
"プログラミング言語: \"{language}\"",
"アイデア: \"{ideas}\"",
"コード: ",
"\"{codes}\"",
"{assistant_role}として,プロジェクトが適切に実行されるために必要な依存関係やパッケージを指定するrequirements.txtファイルを作成する必要があります.これは,Pythonプロジェクトで一般的に使用され,プロジェクトの依存関係を標準化された形式で文書化し,管理する方法として機能します.例えば:",
"requirements.txt",
"```",
"numpy==1.19.2",
"pandas>=1.1.4",
"```",
"上記のコードとファイル形式に従って,プロジェクトが適切に実行されるために必要な依存関係やパッケージを指定するrequirements.txtファイルを作成してください."
]
},
"Manual": {
"assistant_role_name": "Chief Product Officer",
"user_role_name": "Chief Executive Officer",
"phase_prompt": [
"新しいユーザーのタスク,開発されたコード,および必要()な依存関係は以下の通りです: ",
"タスク: \"{task}\".",
"モダリティ: \"{modality}\".",
"プログラミング言語: \"{language}\"",
"アイデア: \"{ideas}\"",
"コード: ",
"\"{codes}\"",
"要件:",
"\"{requirements}\"",
"{assistant_role}として,Markdownを使用して,ソフトウェアの使用方法に関する詳細なユーザーマニュアルであるmanual.mdファイルを書く必要があります.これには,ソフトウェアの主な機能の紹介,環境依存関係のインストール方法,および使用方法/プレイ方法が含まれます.例えば:",
"manual.md",
"```",
"# LangChain",
"LLMsを通じてアプリケーションを構築するためのコンポーザビリティ",
"JS/TS版をお探しですか? LangChain.jsをチェックしてください.",
"**本番サポート:** LangChainを本番環境に移行する際には,より包括的なサポートを提供したいと考えています.",
"このフォームに記入していただければ,専用のサポートSlackチャンネルを設定します.",
"## クイックインストール",
"`pip install langchain`",
"または",
"`conda install langchain -c conda-forge`",
"## 🤔 これは何?",
"大規模言語モデル(LLMs)は,変革的なテクノロジーとして台頭しており,開発者は以前にはできなかったアプリケーションを構築することができます.しかし,これらのLLMを単独で使用するだけでは,本当に強力なアプリを作成するには不十分です - 本当の力は,他の計算や知識のソースと組み合わせることができるときに現れます.",
"このライブラリは,そのようなタイプのアプリケーションの開発を支援することを目指しています.これらのアプリケーションの一般的な例には,以下のものがあります:",
"**❓ 特定の文書に対する質問応答**",
"- ドキュメンテーション",
"- エンドツーエンドの例:Notionデータベースに対する質問応答",
"**🤖 エージェント**",
"- ドキュメンテーション",
"- エンドツーエンドの例:GPT+WolframAlpha",
"## 📖 ドキュメンテーション",
"以下の完全なドキュメントについては[こちら](https://python.langchain.com)を参照してください:",
"- 入門(インストール,環境設定,簡単な例)",
"- ハウツー例(デモ,統合,ヘルパー関数)",
"- リファレンス(完全なAPIドキュメント)",
"- リソース(コアコンセプトの高レベルな説明)",
"```"
]
}
}
リポジトリ
GitHub - Sunwood-ai-labs/ChatDev: Create Customized Software using Natural Language Idea (through LLM-powered Multi-Agent Collaboration)
Create Customized Software using Natural Language Idea (through LLM-powered Multi-Agent Collaboration) - GitHub - Sunwood-ai-labs/ChatDev: Create Customized Sof...
コメント