MetaGPT: 지금 당장 사용할 수 있는 최고의 AI 에이전트에 대한 완벽한 가이드

MetaGPT: Complete Guide to the Best AI Agent Available Right Now

MetaGPT: A Game-Changer in AI-Powered Software Development

MetaGPT는 대형 언어 모델을 활용한 다중 에이전트 시스템입니다. 이 시스템은 프로젝트 관리 기능과 코드 생성 능력을 결합하여 복잡한 작업을 자동화합니다. MetaGPT의 아키텍처는 기초 구성 요소 계층과 협업 계층으로 나뉩니다. 이 시스템은 지식 공유와 표준화된 운영 절차(SOPs)를 통해 에이전트 간의 협업을 효율적으로 관리합니다. 또한, MetaGPT는 코드 리뷰 메커니즘과 인지 과정을 갖추고 있어, 에이전트가 적응하고 발전할 수 있습니다. 설치는 NPM과 Python을 통해 이루어지며, Docker를 사용한 컨테이너화도 가능합니다.

생각해 볼 질문:

  1. MetaGPT의 다중 에이전트 시스템이 기존의 대형 언어 모델과 어떻게 다른가요?
  2. 프로젝트 관리와 코드 생성을 결합한 접근 방식이 소프트웨어 개발에 어떤 영향을 미칠까요?
  3. MetaGPT의 설치와 배포가 다른 AI 에이전트와 비교하여 어떤 장점이 있을까요?

기업과 개별 사용자 모두에서 증가한 채택으로 인해 OpenAI는 현재 월별로 약 8천만 달러의 수익을 창출하고 있습니다. 더욱이, 최근 The Information에 의한 보고서(recent report)에 따르면, 이 샌프란시스코 기반의 기술 회사는 연간 10억 달러의 수익을 창출할 것으로 예상되고 있습니다. 이는 LLMs가 다양한 응용 분야에서의 상업적 타당성과 변혁적인 잠재력을 강조합니다.

이전의 주류 오픈 소스 대형 언어 모델(Large Language Models, LLMs) 기반인 AutoGPT와 GPT-Engineering의 한계에 대해 논의하고 있습니다. 이러한 시스템은 복잡한 작업을 자동화하기 위해 설계되었으며 유망해 보였지만, 여러 가지 단점이 있었습니다:

  1. 불안정한 결과: 모델은 때로는 불안정하거나 다양한 결과를 생성하기도 했습니다.
  2. 성능 병목: 이 시스템들은 속도와 효율성 측면에서 제한을 겪어 전반적인 성능에 영향을 미쳤습니다.
  3. 제한된 범위: 코드 생성에는 능숙했지만, 그 능력은 대체로 그 분야에만 제한되었습니다.
  4. 프로젝트 관리 기능 부족: 이 모델들은 제품 요구 문서(Product Requirement Document, PRD) 생성, 기술 설계 생성, API 인터페이스 프로토타이핑과 같은 중요한 프로젝트 관리 기능을 제공하지 않았습니다.

요약하자면, AutoGPT와 GPT-Engineering은 복잡한 작업을 자동화하기 위한 올바른 방향으로의 첫 걸음이었지만, 특히 프로젝트 관리에서 더 넓은 응용 분야에 필요한 종합적인 능력을 갖추지 못했습니다.

MetaGPT는 Sirui Hong이 개발한 대형 언어 모델(Large Language Models, LLMs)을 활용하는 다중 에이전트 시스템입니다. 이 시스템은 표준 운영 절차(Standardized Operating Procedures, SOPs)와 LLM 기반 다중 에이전트 시스템을 결합합니다. 이 새로운 패러다임은 복잡하고 현실 세계의 응용 프로그램에서 효과적인 협업과 작업 분해를 촉진하는 LLM의 기존 제한을 해소합니다.

간단히 말해, MetaGPT는 기존 LLMs의 한계를 극복하여 더 복잡하고 다양한 작업을 효과적으로 처리할 수 있게 해줍니다. 표준 운영 절차(SOPs)의 도입은 작업을 더 체계적으로 분해하고, 다중 에이전트 시스템은 이러한 작업을 더 효율적으로 수행할 수 있게 합니다. 이로 인해 MetaGPT는 복잡한 실세계 응용 프로그램에서도 효과적인 협업과 작업 분해가 가능합니다.

MetaGPT의 아름다움은 그 구조에 있습니다. 이 시스템은 메타 프로그래밍 기술을 활용하여 실시간으로 코드를 조작, 분석, 변환합니다. 목표는 무엇일까요? 동적 프로그래밍 작업에 적응할 수 있는 민첩하고 유연한 소프트웨어 아키텍처를 실현하는 것입니다.

메타 프로그래밍을 통해 MetaGPT는 코드의 다양한 측면을 실시간으로 다룰 수 있으며, 이를 통해 소프트웨어 아키텍처가 더욱 민첩하고 유연해집니다. 이러한 능력은 복잡하고 동적인 프로그래밍 작업에 빠르게 적응할 수 있게 해주며, 이는 전통적인 LLMs가 제공하지 못하는 중요한 기능입니다.

Agile Development

표준 운영 절차(Standardized Operating Procedures, SOPs)는 여기에서 메타-함수로 작용합니다. 이 SOPs는 정의된 입력을 기반으로 코드를 자동 생성하기 위해 에이전트들을 조정합니다. 간단히 말하면, 이것은 마치 고도로 조정된 소프트웨어 엔지니어 팀을 적응력 있고 지능적인 소프트웨어 시스템으로 변환한 것과 같습니다.

SOPs의 도입은 작업을 체계적으로 분해하고, 다중 에이전트 시스템은 이러한 작업을 더 효율적으로 수행할 수 있게 합니다. 이로 인해 MetaGPT는 복잡한 실세계 응용 프로그램에서도 효과적인 협업과 작업 분해가 가능하며, 그 결과로 고도로 효율적인 소프트웨어 시스템이 탄생합니다.

Understanding MetaGPT Framework

기초 구성 요소 계층과 협업 계층

MetaGPT의 아키텍처는 기초 구성 요소 계층(Foundational Components Layer)과 협업 계층(Collaboration Layer) 두 가지로 나뉩니다.

기초 구성 요소 계층:

  • 이 계층은 개별 에이전트의 작업에 중점을 둡니다.
  • 환경(Environment), 메모리(Memory), 역할(Roles), 행동(Actions), 도구(Tools) 등의 핵심 구성 요소를 도입합니다.
  • 환경: 공유 작업 공간과 통신 경로를 설정합니다.
  • 메모리: 데이터 아카이브로 작용합니다.
  • 역할: 도메인 특정 전문성을 포함합니다.
  • 행동: 모듈식 작업을 실행합니다.
  • 도구: 공통 서비스를 제공합니다.
  • 이 계층은 본질적으로 에이전트의 운영 체제로 작용합니다.

협업 계층:

  • 이 계층은 기초 구성 요소 위에 구축되어 개별 에이전트의 협업 노력을 관리하고 효율화합니다.
  • 두 가지 메커니즘을 도입합니다: 지식 공유(Knowledge Sharing)와 워크플로우 캡슐화(Encapsulating Workflows).
  • 지식 공유: 에이전트들을 묶어주는 협업의 접착제로 작용합니다. 에이전트는 다양한 수준에서 정보를 저장, 검색, 공유할 수 있어 중복을 줄이고 운영 효율성을 향상시킵니다.
  • 워크플로우 캡슐화: 표준 운영 절차(SOPs)가 여기서 중요한 역할을 합니다. SOPs는 작업을 관리 가능한 구성 요소로 분해하는 청사진으로 작용합니다. 에이전트는 이러한 하위 작업이 할당되고, 그 성능은 표준화된 출력과 일치시킵니다.

이러한 계층 구조와 메커니즘을 통해 MetaGPT는 복잡한 작업과 효과적인 협업을 가능하게 합니다.

MetaGPT는 “역할 정의(Role Definitions)”를 사용하여 다양한 전문화된 에이전트를 초기화합니다. 이에는 제품 관리자, 아키텍트 등이 포함될 수 있습니다. 이러한 역할은 이름, 프로필, 목표, 제약 조건, 설명과 같은 주요 속성으로 특징 지어집니다.

예를 들어, “제품 관리자” 역할은 목표가 “성공적인 제품을 효율적으로 생성”이고, 제약 조건과 설명이 명시된 프로필로 초기화될 수 있습니다. 이러한 역할 정의는 MetaGPT 시스템 내에서 에이전트가 어떻게 작동할지, 어떤 작업을 수행할지를 명확하게 지정해주며, 이를 통해 더 효율적이고 목적에 맞는 작업이 가능해집니다.

이러한 역할 정의의 도입은 MetaGPT가 다양한 작업과 요구 사항에 더욱 유연하게 대응할 수 있게 해주며, 특히 다양한 전문 분야에서의 협업을 강화합니다.

더불어, “앵커 에이전트(Anchor Agents)”는 이러한 에이전트에게 역할 특화된 지침을 제공합니다. 예를 들어, 제품 관리자의 역할은 “성공적인 제품을 효율적으로 생성”이라는 제약 조건으로 초기화될 수 있습니다. 앵커 에이전트는 에이전트의 행동이 전체 목표와 일치하도록 보장함으로써 성능을 최적화합니다.

이러한 앵커 에이전트의 도입은 에이전트가 각자의 역할에 맞게 효율적으로 작동하도록 지침을 제공합니다. 이는 전체 시스템의 성능을 향상시키는 데 중요한 역할을 하며, 각 에이전트가 주어진 작업을 더 효과적으로 수행할 수 있게 합니다. 이로 인해 MetaGPT는 복잡하고 다양한 작업에 대해 더 높은 성능과 유연성을 보일 수 있습니다.

MetaGPT 에이전트의 인지 과정

MetaGPT는 관찰, 생각, 반영, 행동을 할 수 있습니다. 이들은 _think(), _observe(), _publish_message() 등과 같은 특정 행동 함수를 통해 작동합니다. 이러한 인지 모델링은 에이전트가 적응하고 발전할 수 있는 능동적인 학습자로 만듭니다.

1.관찰(Observe)

  • 에이전트는 환경을 스캔하고 주요 데이터를 자신의 메모리에 통합합니다.

2.생각 & 반영(Think & Reflect)

  • _think() 함수를 통해, 역할은 행동을 취하기 전에 심사숙고합니다.

3.메시지 방송(Broadcast Messages)

  • 에이전트는 _publish_message()를 사용하여 현재 작업 상태와 관련된 행동 기록을 공유합니다.

4.지식 침전 & 행동(Knowledge Precipitation & Act)

  • 에이전트는 들어오는 메시지를 평가하고 다음 행동을 결정하기 전에 내부 저장소를 업데이트합니다.

5.상태 관리(State Management)

  • 작업 잠금과 상태 업데이트와 같은 기능을 통해, 역할은 중단 없이 여러 행동을 순차적으로 처리할 수 있습니다. 이는 실세계의 인간 협업을 반영합니다.

이러한 인지 과정과 기능은 MetaGPT가 복잡한 작업을 더 효과적으로 수행하고, 끊임없이 변화하는 환경에 적응할 수 있게 해줍니다.

MetaGPT의 코드 리뷰 메커니즘

코드 리뷰는 소프트웨어 개발 생명 주기에서 중요한 구성 요소이지만, 여러 인기 있는 프레임워크에서는 누락되어 있습니다. MetaGPT와 AgentVerse  모두 코드 리뷰 기능을 지원하지만, MetaGPT는 한 단계 더 나아갑니다. 이는 미리 컴파일 실행(precompilation execution)도 포함하여 초기 오류 탐지를 도와 코드 품질을 향상시킵니다. 코딩의 반복적인 특성을 고려할 때, 이 기능은 단순한 부가 기능이 아니라 성숙한 개발 프레임워크에 대한 필수 요건입니다.

이러한 코드 리뷰 메커니즘은 MetaGPT가 높은 품질의 코드를 생성하고 유지할 수 있게 도와줍니다. 초기 오류 탐지를 통해 개발 과정에서 문제를 빠르게 식별하고 수정할 수 있으며, 이는 전체적인 개발 효율성과 코드 품질을 높이는 데 기여합니다.

MetaGPT의 양적 실험 결과

여러 작업에 걸쳐 실시된 양적 실험에서 MetaGPT는 거의 모든 시나리오에서 경쟁 제품을 능가했습니다. Pass@1은 프레임워크가 단일 반복에서 정확한 코드를 생성하는 능력을 측정하는 지표입니다. 이 지표는 실용적인 환경에서 프레임워크의 유용성을 더 현실적으로 반영합니다. 높은 Pass@1 비율은 디버깅이 적고 효율성이 높다는 것을 의미하며, 이는 개발 주기와 비용에 직접적인 영향을 미칩니다.

 CodeXCodeT, 그리고 심지어 GPT-4와 같은 다른 고급 코드 생성 도구와 비교했을 때도 MetaGPT가 모두를 능가합니다. 프레임워크는 HumanEval and MBPP  벤치마크에서 81.7%에서 82.3%의 Pass@1 비율을 달성할 수 있습니다.

이러한 결과는 MetaGPT가 코드 생성, 디버깅, 개발 효율성 등에서 뛰어난 성능을 보이며, 실제 개발 환경에서의 유용성을 입증합니다.

Comparing MBPP and HumanEval Metrics b/w MetaGPT and other Leading Models (https://arxiv.org/pdf/2308.00352.pdf)

토큰과 계산 자원의 효율적 사용

프레임워크는 더 적은 토큰과 계산 자원을 사용하면서도 높은 성공률을 달성합니다. 이는 전통적인 소프트웨어 엔지니어링 비용의 일부에 불과합니다. 데이터에 따르면 MetaGPT를 사용한 프로젝트의 평균 비용은 단지 $1.09로, 동일한 작업에 대해 개발자가 청구할 비용의 일부분에 불과합니다.

이러한 효율성은 MetaGPT가 비용 대비 성능이 뛰어나며, 개발 비용을 크게 절감할 수 있는 강력한 도구임을 보여줍니다. 따라서 이 프레임워크는 높은 성능과 효율성을 동시에 제공하며, 실제 개발 환경에서 큰 경제적 이점을 가져다 줄 수 있습니다.

시스템에 MetaGPT를 로컬로 설치하는 단계

Step 1: Ensure that NPM is installed on your system. Then install mermaid-js. (If you don’t have npm in your computer, please go to the Node.js offical website to install Node.js https://nodejs.org/ and then you will have npm tool in your computer.)
npm –version
sudo npm install -g @mermaid-js/mermaid-cli
Step 2: Ensure that Python 3.9+ is installed on your system. You can check this by using:
python –version
Step 3: Clone the repository to your local machine, and install it.
git clone https://github.com/geekan/metagpt
cd metagpt
pip install -e.

Note:

  • If already have Chrome, Chromium, or MS Edge installed, you can skip downloading Chromium by setting the environment variable PUPPETEER_SKIP_CHROMIUM_DOWNLOAD to true.

Configuring MetaGPT with Your OpenAI API Key

MetaGPT와 OpenAI API 키를 연동하는 것은 몇 가지 간단한 단계로 이루어집니다. 다음과 같이 하시면 됩니다:

단계 1: OpenAI 키 찾기 또는 생성하기

  • OpenAI 대시보드로 가서 API 설정에서 API 키를 찾습니다. 만약 키가 없다면 생성해야 할 수도 있습니다.

단계 2: API 키 설정하기

API 키를 어디에 둘지 선택할 수 있는 세 가지 옵션이 있습니다:

  1. config/key.yaml: 애플리케이션은 먼저 이 파일에서 API 키를 찾을 것입니다. 이 파일로 이동하여 플레이스홀더 텍스트를 실제 OpenAI API 키로 교체합니다. 다음과 같이 설정하면 됩니다: OPENAI_API_KEY: "sk-..."
  2. config/config.yaml: config/key.yaml에 키가 없다면, 애플리케이션은 다음으로 config/config.yaml에서 키를 찾을 것입니다. 여기에도 위와 같은 형식으로 API 키를 넣을 수 있습니다.
  3. 환경 변수: 마지막으로 애플리케이션은 환경 변수에서 API 키를 찾을 것입니다. 이를 설정하기 위해 macOS와 리눅스에서는 터미널에서 다음 명령어를 실행합니다:
    bash export OPENAI_API_KEY="sk-..."
    윈도우에서는:
    cmd setx OPENAI_API_KEY "sk-..."

우선 순위

애플리케이션은 다음 순서로 API 키를 찾을 것입니다: config/key.yaml > config/config.yaml > 환경 변수.

보안 주의사항

OpenAI API 키를 안전하게 보관하는 것이 중요합니다. 이 키를 공개 저장소에 커밋하거나 무단으로 공유하지 마십시오. 민감한 정보를 저장할 때는 항상 환경 변수나 Git과 같은 버전 관리 시스템에 의해 추적되지 않는 안전한 설정 파일을 사용하세요.

이 단계들을 따르면 MetaGPT와 OpenAI API 키를 성공적으로 연동할 수 있을 것입니다.

Create an Application

python startup.py "파이썬 명령으로 실행하는 가위보 게임을 만들어죠" --code_review True

결론: MetaGPT—소프트웨어 개발 혁신

MetaGPT는 생성적 AI와 소프트웨어 개발의 경계를 재정의하며, 지능적 자동화와 민첩한 프로젝트 관리를 완벽하게 결합합니다. ChatGPT, AutoGPT, 그리고 전통적인 LangChain 모델의 능력을 훨씬 뛰어넘어, 작업 분해, 효율적인 코드 생성, 프로젝트 계획 등에서 뛰어납니다.

이 글에서 얻을 수 있는 주요 포인트는 다음과 같습니다:

  1. 메타 프로그래밍의 힘: 메타 프로그래밍을 활용하여 MetaGPT는 민첩하고 적응력 있는 소프트웨어 프레임워크를 제공합니다. 이는 단순한 코딩뿐만 아니라 프로젝트 관리와 의사결정 측면까지 다룰 수 있는 혁신적인 접근법을 도입합니다.
  2. 이중 계층 아키텍처: 기초적인 계층과 협업 계층을 통해 MetaGPT는 에이전트가 전문적으로 관리되는 소프트웨어 팀처럼 유기적으로 작동할 수 있는 생태계를 효과적으로 만듭니다.
  3. 최적화된 코드 리뷰: 단순히 코드를 생성하는 것을 넘어, MetaGPT는 사전 컴파일 실행 기능을 제공합니다. 이는 오류에 대한 조기 경고 시스템이며, 디버깅 시간을 절약하고 코드 품질을 보장합니다.
  4. 인지 능력을 가진 에이전트: _observe(), _think(), _publish_message()와 같은 인지 기능을 갖춘 MetaGPT의 지능형 에이전트는 발전하고 적응합니다. 이로써 소프트웨어 솔루션은 단순히 코딩된 것이 아니라 ‘지능적’입니다.
  5. 설치 및 배포: MetaGPT는 npm과 Python을 통한 로컬 설치나 Docker를 통한 컨테이너화를 선호하는 경우에도 쉽게 설정할 수 있다는 것을 보여주었습니다.

이러한 특성과 기능은 MetaGPT가 소프트웨어 개발 분야에서 혁신적인 변화를 가져올 수 있는 강력한 도구임을 입증합니다.


MetaGPT의 다중 에이전트 시스템이 기존의 대형 언어 모델과 어떻게 다른가요?


MetaGPT의 다중 에이전트 시스템은 기존의 대형 언어 모델(Large Language Models, LLMs)과 여러 면에서 차별화됩니다. 다음은 주요 차이점입니다:

1. 작업 분해와 협업:

  • MetaGPT: 다중 에이전트 시스템을 통해 복잡한 작업을 여러 하위 작업으로 분해하고, 각 에이전트가 특정 작업을 수행합니다. 이를 통해 효율적인 협업이 가능합니다.
  • 기존 LLMs: 단일 모델이 여러 작업을 수행하지만, 복잡한 작업을 분해하거나 여러 에이전트와 협업하는 능력이 제한적입니다.

2. 특화된 역할과 기능:

  • MetaGPT: 다양한 역할의 에이전트가 있으며, 각각이 특화된 기능과 역할을 수행합니다. 예를 들어, 제품 관리자, 아키텍트 등의 역할을 하는 에이전트가 있을 수 있습니다.
  • 기존 LLMs: 일반적으로 특화된 역할이나 기능을 가지지 않고, 다양한 작업을 일반적인 방식으로 처리합니다.

3. 표준화된 운영 절차(SOPs):

  • MetaGPT: 표준화된 운영 절차(Standardized Operating Procedures)를 통해 작업을 일관되고 효율적으로 처리합니다.
  • 기존 LLMs: SOPs나 유사한 메커니즘을 내장하고 있지 않습니다.

4. 코드 리뷰와 프로젝트 관리:

  • MetaGPT: 코드 생성 뿐만 아니라, 코드 리뷰, 프로젝트 관리, 기술 설계 등의 고급 기능을 제공합니다.
  • 기존 LLMs: 대부분 코드 생성과 같은 특정 작업에 집중되어 있으며, 프로젝트 관리나 코드 리뷰 같은 고급 기능은 제공하지 않습니다.

5. 적응성과 학습 능력:

  • MetaGPT: 에이전트는 환경을 관찰하고, 생각하며, 반응하고, 지식을 축적하는 등의 적응성과 학습 능력을 가집니다.
  • 기존 LLMs: 대부분의 LLMs는 미리 학습된 상태에서 추가적인 학습 능력이 제한적입니다.

이러한 차이점들로 인해 MetaGPT는 복잡하고 다양한 작업에 대해 더 효율적이고 유연한 처리가 가능합니다.


프로젝트 관리와 코드 생성을 결합한 접근 방식이 소프트웨어 개발에 어떤 영향을 미칠까요?


프로젝트 관리와 코드 생성을 결합한 접근 방식은 소프트웨어 개발에 여러 면에서 긍정적인 영향을 미칠 수 있습니다:

1. 효율성 증가:

  • 자동화된 코드 생성과 프로젝트 관리를 통해 개발 시간이 단축되고, 빠른 프로토타이핑과 배포가 가능해집니다.

2. 일관성과 품질 향상:

  • 표준화된 운영 절차(SOPs)와 자동 코드 리뷰 기능을 통해 코드의 일관성과 품질이 향상됩니다.

3. 리소스 최적화:

  • 복잡한 작업을 여러 하위 작업으로 분해하여, 각각을 특화된 에이전트가 처리하게 함으로써 리소스를 더 효율적으로 활용할 수 있습니다.

4. 유연성과 확장성:

  • 다중 에이전트 시스템은 다양한 작업과 요구 사항에 유연하게 대응할 수 있으며, 새로운 기능이나 에이전트를 쉽게 추가할 수 있습니다.

5. 오류 감소:

  • 자동화된 테스팅과 코드 리뷰를 통해 오류를 미리 잡아내고, 디버깅 시간을 줄일 수 있습니다.

6. 협업 강화:

  • 프로젝트 관리와 코드 생성이 통합되면, 개발 팀 내에서의 협업이 더 원활해질 수 있습니다. 예를 들어, 개발자와 프로젝트 매니저 사이의 커뮤니케이션 비용이 줄어들 수 있습니다.

7. 비용 절감:

  • 자동화와 효율성 향상을 통해 전반적인 개발 비용을 줄일 수 있습니다.

8. 지식 공유와 재사용:

  • 다중 에이전트 시스템에서는 지식 공유와 재사용이 쉽게 이루어질 수 있어, 더 빠르고 정확한 결정을 내릴 수 있습니다.

이러한 이점들은 소프트웨어 개발 프로세스를 혁신적으로 바꿀 수 있으며, 더 높은 품질의 제품을 더 빠르게 시장에 출시할 수 있게 합니다.


답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다