이 튜토리얼에서는 ChatDev 프레임워크를 사용하여 협업 AI 시스템을 구축하는 방법을 보여주고 역할 기반 에이전트 의사소통 구조인 ChatChain을 살펴봅니다. ChatDev는 역할이 할당된 AI 에이전트를 사용하여 가상 소프트웨어 회사를 시뮬레이션합니다. 지능형 에이전트 각각은 소프트웨어 개발 수명 주기의 단계를 기반으로 하는 순차적 워크플로에 따라 구조화된 의사소통을 하면서 다른 에이전트와 협업합니다.
이러한 에이전트를 지원하기 위해 IBM® watsonx.ai 애플리케이션 프로그래밍 인터페이스(API)를 모델 백엔드로 사용합니다. watsonx.ai와 Hugging Face의 통합을 활용하여, Llama-4-Maverick을 사용해 간단한 소프트웨어 솔루션을 생성하는 프레임워크를 구성했습니다. 이 예제는 워크플로 전반에서 에이전트 행동과 의사 결정을 안내하는 ChatChain과 그 밖의 내부 에이전트 통신 메커니즘을 탐색하는 기반이 됩니다.
이 튜토리얼을 통해 ChatDev를 설정하고 실행하는 실무 경험을 쌓고, 에이전트 통신 프로토콜이 효과적이고 안정적인 다중 에이전트 협업을 가능하게 하는 방법을 명확하게 이해하세요.
협업 AI: 인간이나 AI 에이전트와 함께 작동하도록 설계된 인공 지능 시스템입니다. 공동의 목표를 달성하기 위한 협력과 의사 결정, 합동 문제 해결을 가능하게 하는 딥 러닝이나 고급 기술을 주로 사용합니다.
다중 에이전트 협업: 공동의 목표 달성을 위해 정보를 공유하고 협력하는 여러 자율 에이전트들입니다. 이들 에이전트는 지식, 기능, 관점 수준이 제각각일 수 있으며 협상, 계획, 공동 작업 등의 협업을 주로 합니다.
롤 플레잉 에이전트: 목표 지향적 방식으로 상호 작용하고 협업하기 위해 특정 역할이나 페르소나를 시뮬레이션하는 AI 에이전트입니다. 이때 현실 세계의 직업이나 인물을 반영하여 맥락을 더 깊이 인식하고 목적에 맞는 상호 작용이 이루어지게 합니다.
에이전트 통신 프로토콜: AI 에이전트가 구조화된 데이터 메시지를 교환하여 상호 작용하는 방식을 정의하는 표준 또는 프레임워크로서, 다중 에이전트 시스템 안에서 협력하는 에이전트들의 통신 형식, 의미 체계, 규칙을 제어합니다.
ChatDev는 역할을 기반으로 구현한 협업용 AI로, 개별 에이전트들이 전문화된 역할을 맡아 공동의 목표를 위해 움직입니다. 이 디자인은 집단 지성(본질적으로 효과적인 협업 방식)의 원칙을 보여주며, ChatDev가 이 분야를 연구하고 발전시키는 데 유용한 리소스로 자리매김하게 합니다.
ChatDev는 AI 도구 및 인공 일반 지능(AGI) 발전에 초점을 맞춘 연구 중심 이니셔티브 OpenBMB에서 개발한 오픈 소스 다중 에이전트 프레임워크로서 협업 AI 에이전트를 연구하기 위한 실용적인 영역으로서 소프트웨어 개발 프로세스를 사용합니다. 각 에이전트는 대규모 언어 모델(LLM)을 기반으로 하며 CEO, CTO, 디자이너, 테스터, 개발자 등의 역할을 맡습니다.1
이러한 에이전트는 짧고 설명적인 사용자 인풋에서 출발해, 협업을 통해 소프트웨어 프로젝트 전체를 반복적으로 설계, 구현, 테스트합니다. 각 에이전트는 구조화된 자연어 프롬프트를 사용하여 순차적으로 소통하는 Python 클래스로 구현됩니다. 이 프롬프트들은 에이전트의 역할, 작업별 지침, 과거 상호 작용에서 갖온 관련 컨텍스트를 포함해 사전 정의된 템플릿을 따릅니다. 이 템플릿 전략은 프롬프트 자체 안에 역할 정체성과 공유 메모리를 임베딩하여, 연속성과 일관성을 지키는 데 도움이 됩니다.
ChatDev 전문 에이전트들은 협력을 통해, 자신의 아이디어를 설명하는 한 줄짜리 사용자 인풋으로부터 간단한 소프트웨어 솔루션을 생성합니다.
사용자 인풋: '할 일 목록 앱 구축' → CEO가 CTO에게 위임 → CTO가 개발자에게 할당 → 개발자가 코드 작성 → 테스터가 검증
에이전트 상호 작용은 ChatDev 프레임워크 내의 맞춤형 조정 논리인 ChatChain이 조율합니다. 에이전트 간의 통신은 에이전트가 구조화된 JSON 메시지를 순차적으로 교환하는 멀티턴 대화 또는 메시지 전달 시스템을 통해 이루어집니다. 이 메시지들은 아웃풋과 컨텍스트 업데이트를 나타내고 공유 메모리 버퍼 역할을 하여 에이전트가 개발 단계에서 서로의 아웃풋을 기반으로 구축될 수 있게 합니다.
이 아키텍처는 자연 언어와 프로그래밍 언어를 혼합하여 프로젝트를 엔드투엔드로 완료함으로써 의사소통과 컨텍스트 인식 협업이 일관성있게 이루어지도록 합니다. 이 프로세스는 조정된 다중 에이전트 소통에 의존하며, 각 단계를 완료하기 위해 AI 에이전트 의사소통을 효과적으로 조율하는 프로토콜 기능의 내부 메커니즘이 있습니다.
사용자는 ChatDev의 Visualizer 툴을 사용하여 에이전틱 워크플로를 모니터링하고 검토할 수 있습니다. 이 툴은 실행 후 분석과 실시간 모니터링을 모두 지원하는 Flask 기반 웹 인터페이스입니다. Visualizer는 실시간 에이전트 상호 작용을 검사하는 Log Viewer, 저장된 다중 에이전트 대화 로그를 시각화하는 Replay Viewer, 작업 조정 플로를 검사하는 ChatChain Viewer 등 여러 모드를 제공합니다. 이 대화형 인터페이스를 통해 사용자는, 로컬 브라우저를 통해 구조화된 환경을 통해 다중 에이전트 협업을 디버깅, 실험, 연구할 수 있습니다.
이 튜토리얼에서는 IBM watsonx.ai API에 맞게 특별히 조정된 맞춤형 버전의 ChatDev를 사용합니다. 핵심 ChatDev는 여러 모델 공급업체를 지원하지만, 이 버전은 실용적인 "vibecoding" 방식으로 수정되어 있어, 기능이 작동하지만 모든 시나리오에서 철저하게 테스트되지는 않았습니다.
주요 조정 사항:
ChatDev의 예상 LLM 인터페이스를 준수하도록 IBM watsonx.ai API 래핑
IBM watsonx.ai API의 토큰 및 형식 요건에 맞게 프롬프트 템플릿 조정
IBM watsonx.ai를 모델 백엔드 옵션으로 지원하도록 모델 선택 로직 수정
이 구현은 대체 LLM 공급자를 지원하기 위한 ChatDev 확장 방법을 보여줍니다. OpenAI, Ollama 등 다른 모델 공급업체는 이 ChatDev 버전에서 테스트되지 않았으며 코드 수준의 조정이 필요할 수 있습니다.
생성형 AI 워크플로와 마찬가지로 아웃풋은 실행할 때마다 다를 수 있습니다. 에이전트는 일관되고 구조화된 코드와 문서를 생성하는 것이 일반적이지만, 결과물로 나온 애플리케이션이 온전하게 작동하려면 수동 세부 작업이 필요할 수 있습니다. 프롬프트 설계, 작업 복잡성, LLM 응답 특유의 가변성 같은 요소도 이러한 예측 불가능성에 기여합니다.
이 튜토리얼은 ChatDev 안에서 에이전트들이 소통하고 협력하는 방법에 초점을 맞춘 협업 다중 에이전트 시스템 실습을 소개합니다. 이는 생산 준비를 마친 솔루션이 아니라 LLM 기반 에이전트 협업을 학습, 실험, 탐색하는 기반입니다. 자신의 작업물을 오픈 소스로 공개해 이런 탐구를 할 수 있게 해주신 ChatDev 연구진께 감사드립니다.
ChatDev는 크로스 플랫폼으로 기능하도록 설계되었지만 사용자는 설정 또는 실행 과정에서 플랫폼에 특화된 문제를 마주할 수 있습니다. 예를 들어 Windows의 PowerShell에서는 Unix 기반 시스템용 셸 명령을 조정해야 할 수 있습니다. OS, Python 버전과 CPU 아키텍처의 변형도 성능이나 동작에 영향을 미칠 수 있습니다. 원활한 설치와 사용을 위해서는 ChatDev 공식 문서와 설치 안내서에서 문제 해결 방법과 환경별 설명을 참고해야 합니다.
이 점을 염두에 두고 애플리케이션을 실행하기 위한 환경 설정부터 시작합시다. GitHub에 있는 프로젝트 폴더에 있는 마크다운 파일이나 여기에서 방법을 확인하세요.
튜토리얼의 프로젝트 디렉토리에서 Python 3.11을 사용하여 가상 환경을 생성합니다.
이렇게 하면 프로젝트 종속성이 설치됩니다.
현재의 터미널 세션에 대해 변수가 설정됩니다(터미널을 닫으면 초기화).
이 튜토리얼에서는 모델 백엔드로 IBM watsonx.ai를 사용하지만, ChatDev의 기본 프레임워크는 원래 기본 OpenAI를 포함한 여러 LLM 제공업체를 지원하도록 설계되었습니다. 코드베이스의 일부(모델 선택 로직, 공유 인터페이스 등)는 여전히
ChatDev의 Visualizer를 선택적으로 실행할 수 있습니다. 이 Flask 기반 GUI를 사용하면 에이전트 로그를 실시간으로 확인하고, ChatChain 워크플로를 탐색하거나 저장된 에이전트 대화를 다시 볼 수 있습니다. 에이전트 상호 작용 디버깅, 모니터링, 연구에 유용한 도구이지만 ChatDev의 핵심 다중 에이전트 워크플로 실행에는 필요하지는 않습니다.
Visualizer를 시작하려면 먼저 Flask를 설치합니다.
그런 다음 앱을 실행합니다.
실행되면 브라우저를 열고 이동:
참고: 이 튜토리얼에서는 IBM watsonx.ai를 모델 백엔드로 사용하도록 사전 구성된 ChatDev 버전을 사용합니다. 튜토리얼이 정확하게 실행하기 위해 모델 구성을 추가로 설정하거나 변경할 필요가 없습니다. 맞춤 설정은 가능하지만 LLM 구성을 수정하면 아웃풋이 불완전하고 부정확하면서 다양하게 변형될 수 있습니다.
ChatDev는 에이전트 역할, 작업, 언어 모델과의 상호 작용을 관리하는 CAMEL 프레임워크를 기반으로 구축되었습니다. 원래는 OpenAI API를 모델 백엔드로 사용하여 GPT-4와 같은 ChatGPT 모델과 인터페이스하며, GPT-3.5-turbo를 기본값으로 사용합니다. 이 오픈 소스 프로젝트는 통합된 모델 인터페이스를 통해 여러 LLM 공급자 모델을 지원하도록 설계되었습니다.
기본 IBM watsonx.ai 구성을 사용할 계획이시면 이 단계를 건너뛰세요. 실험을 위해 모델 유형, 매개변수, 토큰 한도를 IBM watsonx.ai API와 함께 작동하도록 조정할 수 있습니다.
다양한 모델 유형으로 실험을 해보고 Camel/typing.py에서
모델 매개변수는
모델에 대한 토큰 한도는
이 단계에서는 ChatDev 핵심 워크플로를 실행합니다. 이 스크립트를 실행하면 에이전트가 인풋을 기반으로 소프트웨어 개발 협업 프로세스를 시뮬레이션합니다. 생성된 코드, 문서, 관련 아티팩트는 프로젝트의 WareHouse 디렉토리에 저장됩니다. Visualizer를 사용하여 로그를 검사하거나 대화를 다시 볼 수 있습니다.
스크립트에 사용하는 인수:
스크립트 예시:
참고: ChatDev의 아키텍처는 확장 가능하지만 이 튜토리얼 버전은
최종 소프트웨어 제품은 프로젝트 이름, 조직의 기본 이름, 타임스탬프로 이루어진 하위 디렉터리의
일반적인 아웃풋은 다음과 같습니다.
생성형 AI 툴의 확률적 특성상 실행할 때마다 아웃풋이 다를 수 있습니다.
이 디렉터리에는 AI 에이전트가 생성한 소프트웨어 프로젝트 전체가 들어있습니다. 애플리케이션 코드, 문서와 함께 다음을 정의하는 구성 파일을 찾아볼 수 있습니다.
에이전트 역할(RoleConfig.json)
개발 단계(PhaseConfig.json)
에이전트 워크플로(ChatChainConfig.json)
ChatDev의 Visualizer에서 재현할 수 있는 대화 로그
manual.md에 있는 안내에 따라
에이전트 상호 운용성은 자율 에이전트가 공유 프로토콜 또는 표준을 사용하여 효과적으로 이해, 통신, 협업하는 능력을 의미합니다. 이 기능은 작업 전반에 걸쳐 에이전틱 AI 시스템을 확장하고, 대규모 데이터 세트를 통합하고, 복잡한 문제를 협력적으로 해결하는 데 필수적입니다.
다중 에이전트 시스템은 KQML이나 FIPA-ACL 등 에이전트 통신 언어(ACL)와 같은 내부 통신 메커니즘을 사용하여 에이전트 간 통신에 대한 표준을 제공하는 에이전트 간 통신 프로토콜(ACP)을 사용하는 경우가 많습니다. 이는 동적 환경에서 구조화된 대화와 조정을 가능하게 하는 표준 "의사소통 행위(정보, 요청, 쿼리 등)"를 정의합니다.
그러나 ChatDev는 다른 접근 방식을 취합니다. 에이전트 조정 워크플로를 구성하는 통신 메커니즘인 ChatChain을 통해 에이전트 상호 운용성을 구현하는 것입니다. ChatChain은 소프트웨어 개발 프로세스의 모든 단계에서 에이전트 간의 턴 기반 동기식 정보 흐름을 관리합니다. 공식적인 ACL을 기반하지 않고 LLM에 최적화된 관례를 사용해 프로토콜과 유사한 교환을 용이하게 합니다.
ChatDev의 에이전트 커뮤니케이션의 의존 대상:
프롬프트 템플레이팅: 각 단계가 시작될 때, 참여하는 에이전트 각각이 자신의 역할, 현재 진행하는 작업, 관련 대화 내역으로 구성된 프롬프트를 받습니다. ChatDev는 개시 프롬프팅을 사용하여 이 정보를 프롬프트에 직접 삽입함으로써, 상호 작용 내내 일관성이 유지되고 목표가 일치되도록 도와줍니다.
체계적인 메시지 형식: 에이전트는 아웃풋과 컨텍스트 업데이트를 인코딩하는 체계적인 JSON 메시지를 통해 통신합니다. 이렇게 하면 워크플로 전반에 걸쳐 일관되게 데이터를 교환하고 추적할 수 있습니다.
역할 조절: 각 에이전트는 할당된 역할이 강화되도록 책임, 목표, 기대 행동 프롬프트로 초기화됩니다. 이는 의사소통 과정의 환각 해소를 위한 핵심 전략입니다.
이 메커니즘은 가볍고 확장가능한 커뮤니케이션 프레임워크를 형성하여 ChatDev가 단일 사용자 프롬프트에서 공동으로 소프트웨어를 생성할 수 있도록 합니다. 이것은 구조화된 LLM 기반 협업이 기존 다중 에이전트 워크플로를 어떻게 활성화하는지 보여줍니다.
ChatChain은 ChatDev의 핵심 커뮤니케이션 메커니즘으로, 워크플로 전반에 걸쳐 에이전트 상호 작용의 순서를 조율합니다. 협업을 각기 다른 단계들로 구성된 반복적이고 연쇄적인 프로세스로 구성하며, 각 단계에는 구체적인 목표와 커뮤니케이션 패턴이 있습니다.
각 단계에서 ChatChain은 두 명의 역할 에이전트(예: CEO와 CTO, 프로그래머와 검토자) 간의 이중 에이전트 대화를 시작합니다. 주로 한 명은 지시자 역할을, 다른 한 명은 보조 역할을 합니다. 이렇게 구조화된 멀티턴 대화는 역할과 책임을 명확하게 유지하면서 협업을 통한 의사 결정 과정을 간소화합니다. 각 단계에 대한 프롬프트에는 상호 작용의 방향을 제시하는 작업 지침, 역할 정체성과 관련 컨텍스트가 있습니다.
ChatDev의 워크플로 전반은 수정된 폭포수 모델을 따릅니다. 폭포수 모델은 작업을 설계, 코딩, 테스트의 순차적 3단계로 나누는 종래의 소프트웨어 엔지니어링 방법론입니다. 코딩 및 테스트 단계는 반복적인 개발 프로세스에 맞춰 하위 작업으로 세분화됩니다.
ChatChain은 기본적으로 워크플로를 다음 순서의 자동화된 단계로 나눕니다.
수요 분석: 애플리케이션의 구조와 핵심 구성 요소를 정의합니다.
언어 선택: 소프트웨어를 빌드하고 실행하는 데 사용할 프로그래밍 언어를 결정합니다.
코딩: 에이전트가 애플리케이션을 구축하기 위한 코드를 작성합니다.
CodeCompleteAll: 누락된 함수 또는 클래스를 비롯한 코드를 완성합니다.
CodeReview: 코드의 기능을 검토하고 수정합니다.
테스트: 소프트웨어를 실행하고 테스트 보고서를 바탕으로 코드를 수정합니다.
EnvironmentDoc: 환경을 문서화합니다.
설명서: 애플리케이션 설명서를 작성합니다.
각 단계를 정의하는 것은 동작과 성질을 정의하는 속성을 명시하는 구성 개체입니다. 예를 들어
에이전트들 간에 적절한 의사소통이 이루어지도록 ChatDev는 하위 작업 라운드가 시작될 때마다 시작 프롬프트를 에이전트 초기 설정 전략으로 사용합니다. 시작 프롬프트는 에이전트들이 효과적으로 소통할 수 있도록 역할, 목표, 책임을 삽입하는 데 사용하는 프롬프트 엔지니어링 기법입니다.
시작 프롬프트가 두 에이전트에 하위 작업을 시작, 유지, 종료하도록 안내하는 예를 살펴봅시다.
하위 작업에 앞서 각 에이전트는 역할별 지침, 특성, 책임, 목표를 정의하는 매개변수로 프롬프트를 받습니다. 그 중 두 가지를 예로 들어보면
다음은 LanguageChoose 단계에서 지시자와 보조자 에이전트에 대한 에이전트 역할을 기반으로 하는 시스템 프롬프트입니다.
두 프롬프트는 역할, 전문 지식, 책임을 설명하여 원하는 에이전트 동작을 초기에 설정합니다. 이러한 프롬프트 전략은 할당된 작업을 완료하기 위한 맞춤형 지침을 제공하여, 역할 각각이 상호 작용 중에 어떻게 행동하고 반응해야 하는지 안내하기도 합니다.
두 역할 모두 기대치를 명확하게 파악하고 효과적으로 협력할 수 있도록 세심하게 작성된 프롬프트를 통해 에이전트 간의 의사소통을 주도합니다.
코딩 할루시네이션(불완전하거나 잘못된 코드 생성)이 생길 가능성을 해소하기 위해 ChatDev는 의사소통 할루시네이션 해소라는 의사소통 패턴을 사용합니다. 이 패턴은 코드 리뷰 과정에서 대화를 구조화하는 데 필수적입니다.
코드 검토 프로세스에는
이 예제에서 Code Review 에이전트는 Programmer 에이전트의 아웃풋에서 오류를 감지하고, 소스 코드의 문제를 수정하기 위한 제안과 함께 전달합니다. 그러면 개발자 에이전트는 해당 피드백을 기반으로 기존 아웃풋을 수정합니다.
Code Review 에이전트가 CodeReviewModification 단계의 반복 과정에서 내놓은 아웃풋 일부를 함께 봅시다.(
프로그래머 에이전트는 다음 CodeReviewModification 단계에서 정정된 코드로 응답합니다.(
코드 검토자와 개발자는 10회 이내로, 또는 2회 연속의 동일한 수정 단계 후 합의에 도달할 때까지 코드 개선을 반복합니다.
의사소통 할루시네이션 해소 패턴은 반복적인 개선 작업을 통해 최종 코드가 정확하고 완전하며 의도한 요구 사항에 부합하는지 확인하는 동시에, 하위 작업이 효과적으로 완수되도록 도와줍니다.
이 튜토리얼에서는 ChatDev가 역할 기반 AI 에이전트로 구성된 가상 소프트웨어 회사를 시뮬레이션하여 협업 AI를 지원하는 방법을 살펴보았습니다. ChatDev는 IBM watsonx.ai API를 모델 백엔드로 사용하여, 소프트웨어 개발 라이프사이클 전반에 걸쳐 자연어와 프로그래밍 언어로 구조화된 소통을 하면서 에이전트를 안내합니다.
ChatDev는 공식적인 에이전트 통신 프로토콜을 사용하지 않지만 ChatChain, 개시 프롬프팅, 의사소통 환각 해소와 같은 에이전트 통신 기술을 동원해 LLM의 자연어 능력을 발휘하며 에이전트 상호 운용성을 구현합니다. 이는 성공적으로 협력하고 아웃풋 품질을 개선하려면 에이전트 커뮤니케이션을 효과적으로 조율하는 것이 중요하다는 점을 강조합니다.
에이전트 상호 작용을 모니터링하고 다시 보기 위한 시각화 도구가 내장된 ChatDev는 다중 에이전트 워크플로와 LLM이 주도하는 팀워크의 역학을 연구하기 위한 강력한 플랫폼을 제공합니다. 이는 소프트웨어 제작 및 그 이상에서 협업용 AI가 지닌 실제적인 잠재력을 보여줍니다.
업계 최고의 AI 전문성과 솔루션 포트폴리오를 보유한 IBM과 함께 AI를 비즈니스에 활용하세요.
AI 추가를 통해 중요한 워크플로와 운영을 혁신함으로써 경험, 실시간 의사 결정 및 비즈니스 가치를 극대화합니다.