GPT Engineer

GPT Engineer

GPT Engineer는 자연어(한국어를 포함한 설명)로 소프트웨어를 지정하면 AI가 코드를 작성하고 실행하는 것까지 해 주는 '원조' 코드 생성 실험 플랫폼이에요. 아이디어를 설명만으로 코드로 바꾸는 AI 코딩 에이전트로, 커뮤니티가 운영하는 오픈소스 프로젝트예요.

출처: 문서

본문

GPT Engineer는 다음과 같은 일을 할 수 있어요.

  • 자연어로 소프트웨어를 지정해요.
  • AI가 코드를 작성하고 실행하는 과정을 지켜보기만 하면 돼요.
  • AI에게 개선 사항을 구현해 달라고 요청할 수도 있어요.

여기서 설명만으로 코드를 생성하는 AI 코딩 에이전트 로서의 역할이 핵심이에요. 참고로, 이를 더 진화시켜 관리형 서비스로 만든 것이 상업 프로젝트인 gptengineer.app 이고, 잘 유지보수되는 해킹 가능한 CLI를 원한다면 aider 를 추천한다고 해요.

설치

안정 버전 설치는 다음과 같아요.

python -m pip install gpt-engineer

개발 버전 설치는 다음과 같아요.

git clone https://github.com/gpt-engineer-org/gpt-engineer.git
cd gpt-engineer
poetry install
poetry shell

Python 3.10 ~ 3.12 버전을 적극 지원하고, Python 3.8 ~ 3.9를 지원하는 마지막 버전은 0.2.6이에요.

API 키 설정

다음 중 하나를 선택하면 돼요.

  • 환경 변수 내보내기 (터미널을 시작할 때마다 하지 않도록 .bashrc에 추가할 수 있어요)
    • export OPENAI_API_KEY=[your api key]
  • .env 파일:
    • .env.template의 복사본을 .env라는 이름으로 만들어 주세요.
    • .env에 OPENAI_API_KEY를 추가하세요.
  • 커스텀 모델: 로컬 모델, Azure 등을 지원하는데 자세한 내용은 문서 를 참고하세요.

Docker(설명)로 실행하거나, GitHub Codespaces로 브라우저에서 전부 처리할 수도 있어요.

사용 예시

새 코드 만들기 (기본 사용법)

  1. 컴퓨터 어디에든 프로젝트용 빈 폴더를 만들어요.
  2. 새 폴더 안에 확장자가 없는 prompt 파일을 만들고 지시사항을 채워 넣어요.
  3. 폴더의 상대 경로로 gpte <project_dir>를 실행해요.
gpte projects/my-new-project

기존 코드 개선하기

  1. 개선하고 싶은 코드가 있는 폴더를 찾아요.
  2. 폴더 안에 확장자가 없는 prompt 파일을 만들고 코드를 개선하는 방법에 대한 지시사항을 채워 넣어요.
  3. 폴더의 상대 경로로 gpte <project_dir> -i를 실행해요.
gpte projects/my-old-project -i

주요 기능

  • Pre Prompts: --use-custom-preprompts 인자로 preprompts 폴더를 자신만의 버전으로 덮어써서 AI 에이전트의 '정체성'을 지정할 수 있어요. preprompts를 편집하는 것이 에이전트가 프로젝트 간에 기억하도록 만드는 방법이에요.
  • Vision: 기본적으로 텍스트 입력(prompt 파일)을 받지만, 비전 지원 모델에는 이미지 입력도 받을 수 있어요. UX나 아키텍처 다이어그램을 추가 컨텍스트로 넣으면 유용해요. ---image_directory 플래그로 이미지 디렉터리를 지정하고, 두 번째 CLI 인자로 비전 지원 모델을 설정하면 돼요.
  • 오픈소스·로컬·대체 모델: 기본적으로 OpenAI API 또는 Azure OpenAI API, 그리고 Anthropic 모델을 지원해요. 약간의 설정만 추가하면 WizardCoder 같은 오픈소스 모델로도 실행할 수 있어요.
  • Benchmark: bench 바이너리를 설치해 APPS, MBPP 같은 공개 데이터셋으로 자신만의 에이전트 구현을 벤치마킹할 수 있어요.

GPT Engineer를 실행하면 이용 약관(terms)에 동의하는 것으로 간주돼요.

더 알아보기 (Learn more)