본문 바로가기

AI들이 차린 게임회사🕹️ chatdev 리뷰

참고 자료

들어가며

 ▶️   리뷰 영상

 

AI 에이전트들끼리 모여서 차린 게임 회사는 어떤 모습일까요? 자기들끼리 아이디어 회의도 하고, 개발도 하고, 코드 리뷰와 디버깅을 하면서 완성한 소프트웨어는 어떠한 모습일까요?

 

오늘은 칭와대에서 최근 공개한 Communicative Agent for Software Development 논문을 리뷰해보았습니다. 논문 제목 답게 저자들은 에이전트끼리 협업을 통해서 소프트웨어를 개발하는 시스템을 연구하였습니다.

 

AI들이 모여있는 게임회사는 어떻게 일하는지 함께 리뷰해보시죠!

 

Commnicative Agent 논문 3 요약

  • 게임 회사 CEO, CTO, 개발자, 디자이너 역할을 가진 아바타를 LLM으로 만들었다.
  • 소프트웨어 개발 회사가 일하는 방식을 본따, 아바타들이 협업해서 게임을 만드는 시스템을 만들었다.
  • 그랬더니 자기들끼리 의사결정도 하고, 코드도 짜고, 디버깅도 하고, 문서화도 하더라

 

본격적인 리뷰에 들어가기 앞서서, 논문의 핵심은 LLM 통해 만든 Agent들이 협업하면서 소프트웨어를 개발하는 것입니다. 여기서 LLM으로 Agent 만드는 방식을 Generative Agent 논문에서 상당 부분 가져왔습니다. 때문에 이전에 작성한 generative agent 리뷰를 먼저 보시고 오시길 권장합니다!

📄 Generative Agent 리뷰

 

Communicative Agent

개발 회사를 차리려면 먼저 구성원들을 agent로 만들어주어야겠죠? generative agent 논문에서처럼 아바타의 직업과 역할, 성격 등을 자연어 형태로 묘사해주어서 게임 회사의 CEO, CTO, CPO, 개발자, 리뷰어, 테스터, 디자이너를 만들어줍니다.

 

 

그 다음, memory stream을 추가해서 다른 아바타와 대화도 나누고 스스로 회고도 할 수 있는 기억을 추가해줍니다. memory stream에 관련된 자세한 내용은 generative agent 논문 리뷰를 참고해주세요!

 

이렇게 게임회사의 구성원 7명의 에이전트를 모두 만들어줍니다.

(7명인 회사에 개발자가 한명이라니…!)

Waterfall 협업 방식

Chatdev 임직원들은 소프트웨어 개발 방법 하나인 Waterfall 방식을 본따서 협업하며 소프트웨어를 개발합니다. Waterfall 방식은 크게 기획, 개발, 테스트, 문서화 단계로 이루어집니다. 단계별로 참여하는 에이전트들이 달라집니다.

 

 단계는 다시  에이전트 간의 대화들로 구성됩니다. 예를들어 Designing 단계는 CEO CPO 간의 대화, CEO와 CTO 간의 대화로 진행됩니다. 이러한 대화를 Atomic Chat이라고 부릅니다.

 

그러면 각 단계별로 어떻게 LLM 에이전트들이 대화를 통해서 게임을 개발하는지 살펴볼까요?

 

기획 단계

기획 단계에서는 CEO, CPO, CTO 대화를 통해 어떤 앱을 개발할지, 언어는 어떤걸 사용할 결정합니다.

오목 게임을 개발하라는 요구사항을 주고, 에이전트끼리 어떤 대화를 나누는지 지켜보겠습니다.

약간의 초월 번역(?)과 요약을 추가하면 아래와 같은 대화를 나눕니다. 이런식으로 AI끼리 토론을 하면서 각 단계별로 필요한 의사 결정을 내리게 됩니다.

 

(이후에는 지면을 아끼기 위해 원문은 생략하고 초월 번역만 넣겠습니다. 원문이 궁금하신 분들은 논문의 appendix를 참고해주세요.)

어떤 형태로 개발할지 결정했다면 이제 CEO와 CTO가 어떤 언어로 개발할지를 토론합니다. 사실 LLM으로 토론까지 시켜야 하나 싶을만큼 크게 영양가 있는 대화는 아닌 것 같습니다.

언어를 결정했으면 CEO와 CPO가 아이디어 회의에 들어갑니다. 이전에 결정된 사항을 바탕으로 CEO가 CPO에게 아이디어를 짜보라고 요청합니다. 여기서 재미있는데, CPO가 오목 게임에 적용할 수 있는 여러가지 창의적인 아이디어를 제시해줍니다. 바로 이렇게 사람이 미처 생각하지 못한 창의적인 아이디어를 내줄 수 있는게 AI를 접목한 시스템의 묘미이지 싶습니다.

개발단계

기획 단계에서 결정된 사항을 바탕으로 개발에 들어갑니다. 여기서는 CTO와 개발자, 디자이너가 게임 로직과 GUI를 개발합니다.

 

먼저 CTO 개발자에게 코드를 작성하라고 지시합니다. , 전체를 한번에 구현하라고 지시하는 것이 아니라, 어느 부분을 구현하라고 명확하게 지시합니다. 이를 Thougth Instruction in Coding 이라고 부릅니다.

마찬가지로 CTO의 지시도 대화를 통해서 이루어집니다. CTO는 기획 단계에서의 결정사항과 함께 파일을 나누어서 개발하라고 개발자에게 전달합니다.

실제로 개발된 소스코드입니다.

그 다음, 개발자와 디자이너간에 대화를 통해서 GUI를 개발합니다.

디자이너는 생성 AI를 이용해서 이미지들을 만들어서 폴더에 넣어주고, 개발자는 이미지 파일을 불러오도록 소스코드를 수정합니다.

테스팅

개발된 코드와 GUI 테스트 단계로 전달됩니다. 테스트 단계는 개발자, 리뷰어, 테스터가 버그를 수정하고 코드의 품질을 향상시킵니다.

 개발자와 리뷰어는 대화를 통해서 소스 코드에서 개선해야할 점을 진단하고, 이를 코드에 반영합니다.

 

그 다음 테스터는 코드를 실행해보고 에러가 나면 개발자에게 수정을 요청합니다. , 단순히 에러 메세지만 전달하는 것이 아니라 어떻게 수정할지를 함께 제안해줍니다. (오... 이런 테스터 좋네요)이를 Though Instruction in Testing이라고 부릅니다.

문서화

테스트 단계가 완료된 코드는 이제 문서화 단계로 넘어갑니다. CEO, CPO, CTO, 개발자가 환경 설정, 설치, 코드 실행 등의 문서를 작성합니다. 먼저 CTO와 개발자가 코드 실행이나 환경 셋팅 문서를 작성합니다.

그 다음 CEO와 CPO가 유저 메뉴얼을 작성합니다.

완성된 게임

7마리의 에이전트들이 4단계에 걸친 협업의 결과로 완성한 오목 게임입니다. 사실상 3단계까지가 AI가 만든거고, 마지막 단계는 인간이 개입해서 이미지를 갈아끼운 것이니 무시해주세요.

남은건 양산이다!

이런 방식으로 게임을 개발했을 때 들어간 토큰 비용은 약 0.3달러라고 합니다. 실제 게임 개발 비용을 생각해보면 어마어마하게 적죠? 저자들은 같은 방식으로 총 70개의 소프트웨어를 개발해보았고, 86.66% 문제 없이 동작했다고 합니다. 하나의 소프트웨어는 평균 4.26개의 파일과 131줄의 코드로 구성되었다고 합니다.

 

흥미로운 에이전트들끼리 개발을 하면서 평균 13번의 버전업을 진행하기도 하고 처음부터 다시 개발하는 경우도 있다고 합니다.

(고증이 참 잘되었네요 ㅎㅎ)

아쉬운 점

겉으로 보면 개발자의 시대가 종말한 것 처럼 보이지만 사실 이 논문은 읽으면서 실망을 많이 한 논문입니다. 제가 실망했던 포인트들을 좀 짚고 넘어가겠습니다.

1. Chatdev 개발한 소프트웨어 소스 코드를 공개하지 않음

chatdev를 통해서 개발했다는 소프트웨어 70개의 소스코드를 공개하지 않았습니다. 오로지 오목 예제만 논문을 통해서 확인할 수 있었습니다.

2. 기본적인 기능만 구현, 창의적인 기능 구현의 누락

논문에서 확인할 수 있는건 오목 예제가 유일합니다. 그마저도 CPO가 제안했었던 아바타 꾸미기, 테마 설정하기, 스페셜 무브 만들기와 같은 창의적인 기능은 구현에서 모두 빠져 있었습니다. 아마도 구현에 실패했을 것으로 추측합니다. 

3. 소스코드 파일 수와 라인 수로 보아 간단한 프로그램만 개발했을 거로 추측

마지막으로 개발했다고 주장하는 소프트웨어들의 구성이 간단합니다. 이런 식이라면 굳이 7마리의 에이전트를 만들고, waterfall 방식으로 개발했어야 하나 의문이 들었습니다.

 

정리

해당 논문은 자극적인 소재와 귀여운 캐릭터로 화제가 되었습니다. 그러나 막상 뚜껑을 열어보면 새로운 발견이나 깊은 인사이트를 찾아보기는 어려워서 아쉬움이 남았습니다.

 

다만 최근 LLM 분야 논문들을 보면 LLM 에이전트들을 만들고, 토론을 시킨 후에 답안을 생성하는 기법이 유행하고 있습니다. 이 논문도 이런 트렌드의 하나라고 생각하고, 이런 시도가 있구나 정도로 가볍게 알고 넘어가면 좋겠습니다.

 

저는 더 재밌고 유익한 논문 리뷰로 돌아오겠습니다. 🐧 펭바!