# Communicative Agents for Software Development

ใ€๐Ÿ“š Wiki | ๐Ÿš€ Visualizer | ๐Ÿ‘ฅ Community Built Software | ๐Ÿ”ง Customizationใ€‘

## ๐Ÿ“– ๊ฐœ์š” - **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)๋ฅผ ์ฐธ์กฐํ•ด์ฃผ์„ธ์š”!** ### ์†Œํ”„ํŠธ์›จ์–ด ๊ธฐ์—ฌ์ž Contributor Contributor Contributor Contributor Contributor Contributor Contributor Contributor Contributor Contributor Contributor Contributor Contributor ## ๐Ÿ“‘ ์ธ์šฉ ๋ฌธ๊ตฌ ``` @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} } @misc{qian2023experiential, title={Experiential Co-Learning of Software-Developing Agents}, author={Chen Qian and Yufan Dang and Jiahao Li and Wei Liu and Weize Chen and Cheng Yang and Zhiyuan Liu and Maosong Sun}, year={2023}, eprint={2312.17025}, archivePrefix={arXiv}, primaryClass={cs.CL} } ``` ## โš–๏ธ ๋ผ์ด์„ ์Šค - ChatDev์˜ ๋ชฉ์ ์€ ์˜ค๋กœ์ง€ ์—ฐ๊ตฌ ๋ชฉ์ ์ž…๋‹ˆ๋‹ค. - ๋ฐ์ดํ„ฐ ์„ธํŠธ๋Š” ๋น„์ƒ์—…์  ์šฉ๋„๋กœ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” CC BY NC 4.0์— ๋”ฐ๋ผ ๋ผ์ด์„ผ์Šค๊ฐ€ ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•™์Šต๋œ ๋ชจ๋ธ์€ ์—ฐ๊ตฌ ๋ชฉ์  ์ด์™ธ์˜ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”. ## ์—ฐ๋ฝ์ฒ˜ ์งˆ๋ฌธ, ํ”ผ๋“œ๋ฐฑ ๋˜๋Š” ์ €ํฌ์™€ ์—ฐ๋ฝ์„ ์›ํ•˜์‹œ๋ฉด ์–ธ์ œ๋“ ์ง€ ์ด๋ฉ”์ผ๋กœ ์—ฐ๋ฝ ์ฃผ์‹ญ์‹œ์˜ค: [chatdev.openbmb@outlook.com](mailto:chatdev.openbmb@outlook.com)