# Communicative Agents for Software Development
ใEnglish | Chinese | Japanese | Korean | Filipino | French | Slovakใ
## ๐ ๊ฐ์ - **ChatDev**๋ ๋ค์ํ ์ต๊ณ ๊ฒฝ์์, ์ต๊ณ ๊ธฐ์ ์ฑ ์์, ํ๋ก๊ทธ๋๋จธ, ํ ์คํฐ ๋ฑ ๋ค์ํ ์ญํ ์ ์ํํ๋ **์ง๋ฅํ ์์ด์ ํธ**๋ค์ ํตํด ์ด์๋๋ **๊ฐ์ ์ํํธ์จ์ด ํ์ฌ**์ ๋๋ค. ์ฌ๋ฟ์ด์ ์กฐ์ง ๊ตฌ์กฐ๋ฅผ ํ์ฑํ๊ณ "ํ๋ก๊ทธ๋๋ฐ์ ํตํด ๋์งํธ ์ธ์์ ํ์ ํ๋ค"๋ ์ฌ๋ช ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ChatDev ๋ด ์์ด์ ํธ๋ค์ ๋์์ธ, ์ฝ๋ฉ, ํ ์คํธ, ๋ฌธ์ํ๋ฅผ ์งํํ๋ ์ ๋ฌธ ๊ธฐ๋ฅ ์ธ๋ฏธ๋์ ์ฐธ์ฌํ์ฌ **ํ์ **ํฉ๋๋ค. - ChatDev์ ์ฃผ์ ๋ชฉํ๋ **์ฌ์ฉํ๊ธฐ ์ฝ๊ณ **, **๊ฐ์กฐํ ์ ์์ผ๋ฉฐ**, **ํ์ฅ ๊ฐ๋ฅํ** ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค. ๋๊ท๋ชจ ์ธ์ด ๋ชจ๋ธ(LLM)์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ ์ง๋จ ์ง์ฑ์ ์ฐ๊ตฌํ๋ ๋ฐ ์ด์์ ์ธ ์๋๋ฆฌ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ## ๐ฐ ๋ด์ค * **2023๋ 9์ 1์ผ: Art ๋ชจ๋๊ฐ ์ถ์๋์์ต๋๋ค! ``python3 run.py --config "Art"``๋ก ์ํํธ์จ์ด์์ ์ฌ์ฉ๋๋ ์ด๋ฏธ์ง๋ฅผ ์์ฑํด๋ณด์ธ์.** [์์ ](WareHouse/gomokugameArtExample_THUNLP_20230831122822)๋ฅผ ์ฐธ์กฐํ์ธ์. * 2023๋ 8์ 28์ผ: ์์คํ ์ด ๊ณต๊ฐ๋์์ต๋๋ค. * 2023๋ 8์ 17์ผ: V1.0.0 ๋ฒ์ ์ถ์ ์ค๋น๊ฐ ์๋ฃ๋์์ต๋๋ค. * 2023๋ 7์ 30์ผ: ์ฌ์ฉ์๊ฐ ChatChain, Phase ๋ฐ Role์ ์ค์ ํ ์ ์์ต๋๋ค. ๋ํ, Online Log ๋ชจ๋์ Replay ๋ชจ๋๊ฐ ์ง์๋ฉ๋๋ค. * 2023๋ 7์ 16์ผ: ์ด ํ๋ก์ ํธ์ ๊ด๋ จ๋ [์ถํ ์ ๋ ผ๋ฌธ](https://arxiv.org/abs/2307.07924)์ด ๊ฒ์๋์์ต๋๋ค. * 2023๋ 6์ 30์ผ: `ChatDev` ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ด๊ธฐ ๋ฒ์ ์ด ๊ณต๊ฐ๋์์ต๋๋ค. ## โ ChatDev๋ ๋ฌด์์ ํ ์ ์๋์? ![intro](misc/intro.png) https://github.com/OpenBMB/ChatDev/assets/11889052/80d01d2f-677b-4399-ad8b-f7af9bb62b72 ## โก๏ธ ์์ํ๊ธฐ ์์ํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์: 1. **GitHub ๋ฆฌํฌ์งํฐ๋ฆฌ ๋ณต์ :** ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ณต์ ํ์ธ์: ``` git clone https://github.com/OpenBMB/ChatDev.git ``` 2. **Python ํ๊ฒฝ ์ค์ ํ๊ธฐ:** Python ํ๊ฒฝ์ด ๋ฒ์ 3.9 ์ด์์ธ์ง ํ์ธํ์ธ์. ๊ทธ๋ ๋ค๋ฉด ๊ฐ์ ํ๊ฒฝ์ ์์ฑํ๊ณ ํ์ฑํํ ์ ์์ผ๋ฉฐ, `ChatDev_conda_env`๋ ์ํ๋ ์ด๋ฆ์ผ๋ก ๋์ฒดํด๋ ๋ฌด๋ฐฉํฉ๋๋ค: ``` conda create -n ChatDev_conda_env python=3.9 -y conda activate ChatDev_conda_env ``` 3. **์ข ์์ฑ ์ค์น**: `ChatDev` ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ์ฌ ํ์ํ ์ข ์์ฑ์ ์ค์นํ์ธ์: ``` cd ChatDev pip3 install -r requirements.txt ``` 4. **OpenAI API ํค ์ค์ :** OpenAI API ํค๋ฅผ ํ๊ฒฝ ๋ณ์๋ก ๋ด๋ณด๋ด์ธ์. `"your_OpenAI_API_key"`๋ฅผ ์ค์ API ํค๋ก ๋ฐ๊ฟ์ผ ํฉ๋๋ค. ์ด ํ๊ฒฝ ๋ณ์๋ ์ธ์ ๋ณ๋ก ๋ค๋ฅด๋ฏ๋ก ์ ํฐ๋ฏธ๋ ์ธ์ ์ ์ด๋ฉด ๋ค์ ์ค์ ํด์ผ ํ๋ค๋ ์ ์ ๊ธฐ์ตํ์ธ์. ์ ๋์ค/๋ฆฌ๋ ์ค์ ๊ฒฝ์ฐ: ``` export OPENAI_API_KEY="your_OpenAI_API_key" ``` Windows์ ๊ฒฝ์ฐ: ``` $env:OPENAI_API_KEY="your_OpenAI_API_key" ``` 5. **์ํํธ์จ์ด ๋น๋ํ๊ธฐ:** ์ํํธ์จ์ด ๋น๋๋ฅผ ์์ํ๊ธฐ ์ํด `[description_of_your_idea]`๋ฅผ ์์ด๋์ด์ ์ค๋ช ์ผ๋ก, `[project_name]`์ ์ํ๋ ํ๋ก์ ํธ ์ด๋ฆ์ผ๋ก ๋ฐ๊พธ์ธ์: ์ ๋์ค/๋ฆฌ๋ ์ค์ ๊ฒฝ์ฐ: ``` python3 run.py --task "[description_of_your_idea]" --name "[project_name]" ``` Windows์ ๊ฒฝ์ฐ: ``` python run.py --task "[description_of_your_idea]" --name "[project_name]" ``` 6. **์ํํธ์จ์ด ์คํํ๊ธฐ:** `project_name_DefaultOrganization_timestamp`์ ๊ฐ์ ํน์ ํ๋ก์ ํธ ํด๋ ์๋์ `WareHouse` ๋๋ ํ ๋ฆฌ์์ ์์ฑ๋ ์ํํธ์จ์ด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ํด๋น ๋๋ ํ ๋ฆฌ ๋ด์์ ๋ค์๊ณผ ๊ฐ์ด ์ํํธ์จ์ด๋ฅผ ์คํํ์ธ์: ์ ๋์ค/๋ฆฌ๋ ์ค์ ๊ฒฝ์ฐ: ``` cd WareHouse/project_name_DefaultOrganization_timestamp python3 main.py ``` Windows์ ๊ฒฝ์ฐ: ``` cd WareHouse/project_name_DefaultOrganization_timestamp python main.py ``` ## โจ๏ธ ์ฌํ ์คํฌ [์ํค](wiki.md)์์ ์๋ ๋ ์์ธํ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค: - ๋ชจ๋ ๋ช ๋ น ์คํ ๋งค๊ฐ๋ณ์์ ๋ํ ์๊ฐ - ๋ ๋ณด๊ธฐ ์ข๊ฒ ์๊ฐํ๋ ๋ก๊ทธ, ๋ค์๋ณด๊ธฐ ๋ฐ๋ชจ, ๊ฐ๋จํ ChatChain ์๊ฐํ ๋๊ตฌ๊ฐ ํฌํจ๋ ๋ก์ปฌ ์น ๋ฐ๋ชจ๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ฐ๋จํ ๊ฐ์ด๋ - ChatDev ํ๋ ์์ํฌ์ ๋ํ ๊ฐ์ - ChatChain ๊ตฌ์ฑ์ ๋ชจ๋ ๊ณ ๊ธ ๋งค๊ฐ๋ณ์์ ๋ํ ํฌ๊ด์ ์ธ ์๊ฐ - ChatDev ๊ฐ์กฐ ๊ฐ์ด๋: - ChatChain: ``DemandAnalysis (์์๋ถ์) -> Coding (์ฝ๋ฉ) -> Testing (ํ ์คํธ) -> Manual (๋งค๋ด์ผ)``๊ณผ ๊ฐ์ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค(๋๋ ๋ค๋ฅธ ํ๋ก์ธ์ค)๋ฅผ ์ง์ ์ค๊ณํ์ธ์. - Phase: ChatChain ๋ด์์ ``์์๋ถ์``๊ณผ ๊ฐ์ ์์ ๋ง์ ๋จ๊ณ๋ฅผ ์ค๊ณํ์ธ์. - Role: ``Chief Executive Officier (์ต๊ณ ๊ฒฝ์์)``์ ๊ฐ์ด ํ์ฌ ๋ด ๋ค์ํ ์์ด์ ํธ๋ฅผ ์ ์ํฉ๋๋ค. ## ๐ค ์ํํธ์จ์ด๋ฅผ ๊ณต์ ํ์ธ์! **์ฝ๋**: ์คํ์์ค ํ๋ก์ ํธ์ ๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ฌธ์ ๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ์ฃผ์ ํ์ง ๋ง์๊ณ ์ ๊ณ ํด ์ฃผ์ธ์. ๊ถ๊ธํ ์ ์ด ์๊ฑฐ๋ ์ฌ๋ฌ๋ถ์ ์์ ์ ๊ณต์ ํ ์ค๋น๊ฐ ๋์๋ค๋ฉด ์ผ๋ง๋ ์ง PR์ ์์ฑํด ์ฃผ์ธ์! ์ฌ๋ฌ๋ถ์ ๊ธฐ์ฌ๋ ๋งค์ฐ ์์คํฉ๋๋ค. ๋์์ด ํ์ํ ์ฌํญ์ด ์์ผ๋ฉด ์ธ์ ๋ ์ง ์๋ ค์ฃผ์ธ์! **ํ์ฌ**: ๋น์ ๋ง์ ๋ง์ถคํ "ChatDev ํ์ฌ"๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ์ด ๋ง์ถคํ ์ค์ ์๋ ์ธ ๊ฐ์ง ๊ฐ๋จํ ๊ตฌ์ฑ JSON ํ์ผ์ด ํฌํจ๋ฉ๋๋ค. ``CompanyConfig/Default`` ๋๋ ํ ๋ฆฌ์ ์ ๊ณต๋ ์์ ๋ฅผ ํ์ธํ์ธ์. ๋ง์ถคํ์ ๋ํ ์์ธํ ์ง์นจ์ [์ํค](wiki.md)๋ฅผ ์ฐธ์กฐํ์ธ์. **์ํํธ์จ์ด**: ChatDev๋ฅผ ์ฌ์ฉํ์ฌ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ ๋๋ง๋ค ๋ชจ๋ ํ์ ์ ๋ณด๊ฐ ํฌํจ๋ ํด๋น ํด๋๊ฐ ์์ฑ๋ฉ๋๋ค. PR์ ์์ฑํ๋ ๊ฒ๋งํผ์ด๋ ๊ฐ๋จํ๊ฒ ์์ ์ ๊ณต์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ``python3 run.py --task "design a 2048 game" --name "2048" --org "THUNLP" --config "Default"``๋ผ๋ ๋ช ๋ น์ ์คํํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ํํธ์จ์ด ํจํค์ง๊ฐ ์์ฑ๋๊ณ ``/WareHouse/2048_THUNLP_timestamp``๋ผ๋ ํด๋๊ฐ ์์ฑ๋ฉ๋๋ค. ๊ทธ ์์๋ ๋ค์๊ณผ ๊ฐ์ ํ์ผ๋ค์ด ์์ต๋๋ค: - 2048 ๊ฒ์ ์ํํธ์จ์ด์ ๊ด๋ จ๋ ๋ชจ๋ ํ์ผ ๋ฐ ๋ฌธ์ - ``CompanyConfig/Default``์์ ๊ฐ์ ธ์จ 3๊ฐ์ JSON์ ํฌํจํ, ์ํํธ์จ์ด๋ฅผ ๋ด๋นํ๋ ์ด ํ์ฌ์ ๊ตฌ์ฑ ํ์ผ๋ค - ๋ค์๋ณด๊ธฐ์์ ์ํํธ์จ์ด์ ๋น๋ ํ๋ก์ธ์ค๋ฅผ ์์ธํ ์ค๋ช ํ๋ ํฌ๊ด์ ์ธ ๋ก๊ทธ(``timestamp.log``) - ์ด ์ํํธ์จ์ด๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋ ์ด๊ธฐ ํ๋กฌํํธ(``2048.prompt``) **์ปค๋ฎค๋ํฐ์์ ๊ธฐ์ฌํ ์ํํธ์จ์ด๋ฅผ ๋ณด๋ ค๋ฉด [์ฌ๊ธฐ](Contribution.md)๋ฅผ ์ฐธ์กฐํด์ฃผ์ธ์!** ### ์ํํธ์จ์ด ๊ธฐ์ฌ์ ## ๐ ์ธ์ฉ ๋ฌธ๊ตฌ ``` @misc{qian2023communicative, title={Communicative Agents for Software Development}, author={Chen Qian and Xin Cong and Wei Liu and Cheng Yang and Weize Chen and Yusheng Su and Yufan Dang and Jiahao Li and Juyuan Xu and Dahai Li and Zhiyuan Liu and Maosong Sun}, year={2023}, eprint={2307.07924}, archivePrefix={arXiv}, primaryClass={cs.SE} } ``` ## โ๏ธ ๋ผ์ด์ ์ค - ChatDev์ ๋ชฉ์ ์ ์ค๋ก์ง ์ฐ๊ตฌ ๋ชฉ์ ์ ๋๋ค. - ์์ค ์ฝ๋๋ Apache 2.0์ ๋ฐ๋ผ ๋ผ์ด์ผ์ค๊ฐ ๋ถ์ฌ๋ฉ๋๋ค. - ๋ฐ์ดํฐ ์ธํธ๋ ๋น์์ ์ ์ฉ๋๋ก๋ง ์ฌ์ฉํ ์ ์๋ CC BY NC 4.0์ ๋ฐ๋ผ ๋ผ์ด์ผ์ค๊ฐ ๋ถ์ฌ๋ฉ๋๋ค. ํด๋น ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ต๋ ๋ชจ๋ธ์ ์ฐ๊ตฌ ๋ชฉ์ ์ด์ธ์ ์ฉ๋๋ก ์ฌ์ฉํด์๋ ์ ๋๋ค๋ ์ ์ ์ ์ํ์ธ์. ## Star History [![Star History Chart](https://api.star-history.com/svg?repos=openbmb/chatdev&type=Date)](https://star-history.com/#openbmb/chatdev&Date) ## ์ฐ๋ฝ์ฒ ์ง๋ฌธ, ํผ๋๋ฐฑ ๋๋ ์ ํฌ์ ์ฐ๋ฝ์ ์ํ์๋ฉด ์ธ์ ๋ ์ง ์ด๋ฉ์ผ๋ก ์ฐ๋ฝ ์ฃผ์ญ์์ค: [chatdev.openbmb@outlook.com](mailto:chatdev.openbmb@outlook.com)