# Communicative Agents for Software Development
ใEnglish | Chinese | Japanese | Koreanใ
## ๐ ๊ฐ์ - **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๋ ๋ฌด์์ ํ ์ ์๋์?  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)๋ฅผ ์ฐธ์กฐํด์ฃผ์ธ์!** ### ์ํํธ์จ์ด ๊ธฐ์ฌ์