Python으로 Python을 자동 생성하는 'Recursive Coder' 기법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
인공지능
대상자
- Python 개발자
- 난이도: 중간~고급 (AI 통합, 오류 처리, 반복적 스크립트 개선 기법 포함)
핵심 요약
- Recursive Coder: GPT와
exec()
을 활용해 Python 스크립트를 생성 → 실행 → 오류 수정하는 반복 프로세스를 구현 - 핵심 기능:
recursive_generator
함수:openai.ChatCompletion.create()
API를 통해 코드 생성 및 오류 수정- AI 기반 오류 복구: 예외 발생 시 GPT에 오류 메시지 전달 후 자동 수정
- 실제 적용 사례:
.jpg
파일의 수정 날짜로 이름 변경, PDF 파일 정리 등 84%의 스크립트가 1~3회 재시도 후 성공
섹션별 세부 요약
- 문제 정의
- * 개발자들이 반복적인 스크립트 작성 시 발생하는 5가지 이상의 오류 (의존성 문제, 로직 오류 등)
- * GPT 기반 코드 생성의 한계: 첫 실행 시 오류 발생 빈도 높음
- Recursive Coder 구현
- * 5단계 프로세스:
- 사용자 입력 받기 (예: "파일 이름을 날짜로 변경")
- GPT로 Python 코드 생성
exec()
을 통해 실행- 오류 발생 시 GPT로 수정 요청
- 성공 시
.py
파일 저장
- * 핵심 코드:
```python
def recursive_generator(prompt, retries=3):
for i in range(retries):
res = openai.ChatCompletion.create(model="gpt-4", messages=messages)
code = res['choices'][0]['message']['content']
try:
exec(code, {})
return code
except Exception as e:
prompt = f"The code failed with this error:\n{e}\nPlease correct it:\n{code}"
```
- 실제 사례 분석
- * 성공 사례:
.jpg
파일 이름 변경 (1회 시도 성공)- PDF 파일 정리 (1회 시도 성공)
- * 실패 사례:
- * 12% 수동 수정 필요 (예:
os
모듈 누락, 로직 오류) - * 4% 불안전한 파일 작업 (예: 삭제 없이 파일 삭제)
- 확장 기능
- * CLI 인터페이스 추가:
argparse
로 명령어 입력 지원 - * 로그 기능:
rich.console
로 성공/실패 상태 표시 - * 사용 예시:
```bash
python coder.py "Organize all mp3 files into folders by artist"
```
- 안전성 고려사항
- * 사전 샌드박스 환경 구축:
- * 임시 폴더 또는 Docker 컨테이너 사용
- * AI 생성 코드 실행 시 주의:
- * 권한 위험, 파일 삭제 등 잠재적 위험 요소
결론
- Recursive Coder는 AI 기반 코드 생성 + 반복적 오류 수정을 통해 개발자 시간을 3~4시간/주로 절약
- 실무 팁:
- * 샌드박스 환경에서 AI 생성 코드 실행
- *
recursive_generator
함수의retries
매개변수를 3회로 기본 설정 - * 사용자 요구사항을 명확한 목표로 표현 (예: "파일 정리", "스크래핑")
- 최종 결과:
- * "코드를 작성하는 것이 아니라 목표를 명시하는 것"으로 개발 방식 전환