https://github.com/princeton-nlp/SWE-agent



LLM ๊ธฐ๋ฐ˜์˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์ž๋ฅผ ๋งŒ๋“ค๋ ค๋Š” ๋…ธ๋ ฅ์ด ๊ฐ€์‹œ์ ์ธ ์„ฑ๊ณผ๋ฅผ ๋ณด์ด๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ตœ์ดˆ์˜ AI ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด๋ผ๋Š” ๋ณ„๋ช…์œผ๋กœ ํ™๋ณด๋ฅผ ํ•˜๊ณ  ์žˆ๋Š” Devin 1์ด ๊ณต๊ฐœ๋œ๋ฐ ์ด์–ด OpenDevin 1๋„ ์ตœ๊ทผ ์„ ์„ ๋ณด์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜ ์†Œ๊ฐœํ•œ SWE-agent ๋˜ํ•œ ์ด๋Ÿฌํ•œ ๋…ธ๋ ฅ์˜ ์ผํ™˜์œผ๋กœ, GitHub ์ €์žฅ์†Œ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ํŽธ์ง‘ ๋ฐ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”, ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ SWE(Software Engineer) Agent๋ฅผ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.



SWE-agent๋Š” ์–ธ์–ด ๋ชจ๋ธ์ด GitHub ์ €์žฅ์†Œ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ , ์ฝ”๋“œ ํŒŒ์ผ์„ ๋ณด๊ณ , ํŽธ์ง‘ํ•˜๋ฉฐ, ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” Agent-Computer Interface(ACI)๋ฅผ ํ†ตํ•ด ๊ฐ€๋Šฅํ•œ ํ•œ ์‰ฝ๊ฒŒ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์ด ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ €์žฅ์†Œ ์ˆ˜์ค€์—์„œ ์ฝ”๋”ฉ ์—์ด์ „ํŠธ์˜ ACI ๋””์ž์ธ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ
Linting: ํŽธ์ง‘ ๋ช…๋ น์ด ๋ฐœํ–‰๋  ๋•Œ ๋ฆฐํ„ฐ๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ์ฝ”๋“œ๊ฐ€ ๋ฌธ๋ฒ•์ ์œผ๋กœ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ฒฝ์šฐ ํŽธ์ง‘ ๋ช…๋ น์„ ํ†ต๊ณผ์‹œํ‚ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํŠน์ˆ˜ ์ œ์ž‘๋œ ํŒŒ์ผ ๋ทฐ์–ด ๋ฐ ์—๋””ํ„ฐ: ๋‹จ์ˆœํžˆ ํŒŒ์ผ์„ 'cat'ํ•˜๋Š” ๋Œ€์‹ , ํŒŒ์ผ์„ ๋ณด์—ฌ์ค„ ๋•Œ ํ•œ ๋ฒˆ์— 100์ค„์”ฉ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด ์ตœ์ ์ž„์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ํŒŒ์ผ ๋‚ด์—์„œ ์Šคํฌ๋กค ์—…/๋‹ค์šด์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ช…๋ น์„ ๊ฐ€์ง„ ํŒŒ์ผ ์—๋””ํ„ฐ๋ฅผ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ „์ฒด ๋””๋ ‰ํ† ๋ฆฌ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ ๋ช…๋ น: ์ด ๋„๊ตฌ๋Š” ์ตœ์†Œํ•œ ํ•˜๋‚˜์˜ ์ผ์น˜ ํ•ญ๋ชฉ์ด ์žˆ๋Š” ๊ฐ ํŒŒ์ผ์„ ๊ฐ„๋‹จํžˆ ๋‚˜์—ดํ•จ์œผ๋กœ์จ ์ค‘์š”ํ•œ ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ๋ชจ๋ธ์—๊ฒŒ ๊ฐ ์ผ์น˜ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ๋” ๋งŽ์€ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์€ ๋ชจ๋ธ์—๊ฒŒ ํ˜ผ๋ž€์Šค๋Ÿฌ์› ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๋ฐฉ๋ฒ•
SWE-agent์˜ ์„ค์ •๊ณผ ์‚ฌ์šฉ์€ ๋ช‡ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ๋‹จ๊ณ„๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค:

1. Docker ์„ค์น˜ ํ›„ ๋กœ์ปฌ์—์„œ Docker ์‹œ์ž‘
2. Miniconda ์„ค์น˜ ํ›„ conda env create -f environment.yml๋กœ SWE-agent ํ™˜๊ฒฝ ์ƒ์„ฑ
3. conda activate swe-agent๋กœ ํ™˜๊ฒฝ ํ™œ์„ฑํ™”
4. ./setup.sh๋ฅผ ์‹คํ–‰ํ•˜์—ฌ SWE-agent Docker ์ด๋ฏธ์ง€ ์ƒ์„ฑ


SWE-agent๋Š” GitHub ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ž…๋ ฅ์„ ๋ฐ›์•„ ์ด๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๋Š” pull request๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋‘ ๋‹จ๊ณ„์˜ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ์ถ”๋ก ์ด๋ฉฐ, ๋‘ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” ์ƒ์„ฑ๋œ pull request๊ฐ€ ์‹ค์ œ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ํ‰๊ฐ€ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.


๋น„๊ต



SWE-agent๋ฅผ SWE-bench ํ…Œ์ŠคํŠธ์…‹์—์„œ ํ‰๊ฐ€ํ•ด๋ดค์„ ๋•Œ, 12.29%์˜ ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ฑ๋Šฅ์€ GPT-4, RAGClaude 3 Opus, RAGClaude 2, RAGGPT-4์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์–ธ์–ด ๋ชจ๋ธ์„ ํฌํ•จํ•œ ์„ฑ๋Šฅ ๋น„๊ต์—์„œ % Resolved ์ง€ํ‘œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋†’์€ ํ•ด๊ฒฐ ๋Šฅ๋ ฅ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.