오픈소스 기여봇 사이드플젝 소감
LLM을 이용한 자동 PR 생성
요즘 취준생 사이에선 오픈소스에 오타수정 기여라도 해서 블로그 대문에 “Apple/Swift 컨트리뷰터, Apache/Tomcat 컨트리뷰터”라고 적는 게 유행인 것 같습니다.
“저건 GPT도 하겠는데?”라는 생각은 “LLM으로 Typo를 찾아서 오픈소스 기여까지 자동화가 가능하지 않을까?”라는 생각으로 발전했습니다. 그래서 aws, apache, tailwindLabs, vitejs 등 100여 개의 유명 조직의 리파지토리들에 자동으로 기여하는 봇을 만들어보고 후기를 적어보려 합니다.

Deepseek, 앤트로픽, OpenAI 세 곳의 api를 사용했습니다. 사이드 프로젝트를 진행할 당시 Deepseek이 저렴한 api 사용료로 많은 하입을 받고 있던 때라 기대를 가지고 테스트 해봤으나 제가 원하는 포맷대로 출력해주지 않는 등 여러 문제가 있어 최종적으로는 폐기하게 되었습니다. 최근 Deepseek api가 개선되었다는 평가가 있어 다시 테스트해봐도 좋겠습니다.
구현 방식
처음엔 코드를 오픈소스로 공개하고 CLI 형태로 배포할 생각으로 Go를 이용해 구현했습니다.
타깃 리파지토리
GPT가 리스트업 해준 유명한 조직들을 대상으로, 이들의 퍼블릭 저장소 중에 랜덤한 곳을 선택해 분석했습니다.후보 추리기
토큰당 가격이 낮은 gpt-3.5, claude 3.5 haiku 에게 각 파일의 코멘트에 있는 철자 오타를 찾아달라고 요청했습니다. 오타로 의심이 가는 모든 부분을 추려달라고 했고, 줄임말이나 표현의 어색함을 제외한 누가 봐도 명백한 오타나 비문을 찾아달라고 했습니다.2차 검사 (상위 모델로 재검증)
앞서 추려진 오타 의심목록을 gpt-4o, gpt-4 turbo, claude 3.5 sonnet/opus 등 상위모델로 재검증했습니다. 파일 전체를 넘겨서 문맥상 진짜로 오타인지 여부를 다시 한 번 확인하고, 진짜 오타로 확정된 단어만 모아 최종 수정 후보 목록을 생성했습니다.PR 템플릿 자동화
오타가 발견된 리파지토리의 이전 커밋 메시지, PR 템플릿, PR 가이드라인, 이전 PR들을 상위 모델에게 넘겨서 가이드 라인을 따르면서도 사람이 쓴 것 같은 PR 제목과 본문 작성을 요청했습니다. 아래는 최종적으로 작성된 pr입니다.


결과와 문제점
30분 정도 구동 후, 50개 가량의 PR이 자동 생성되었습니다. 결과적으로 1분에 하나 이상의 PR이 만들어졌습니다.
문맥을 잘못 이해하여 오히려 잘못된 타이포 수정 PR을 만들기도 하고 벤더 코드까지 수정하려다 거부당한 경우도 있었습니다.
하지만 다수의 PR은 실제로 승인되어 오타가 반영되었습니다. 감사인사를 받기도 했습니다.
기여의 탈을 쓴 스팸
테스트 다음날, 한 리포지토리 관리자에게 메일을 받았습니다.

오픈소스 기여는 항상 감사받고 환영받아야 마땅한 일이지만, 이런 종류의 행위가 오픈소스에 위협이 될 수도 있겠다는 생각을 했습니다. PR 생성은 api비용만 내면 무한히 가능하지만 관리자는 요청을 손수 하나하나 확인하고 머지해야 하니까요. 결국 저는 소스코드를 굳이 공개하지 않기로 했고, 더 이상 자동으로 PR을 생성하지 않기로 결정했습니다.
마무리
사이드 프로젝트로 챗봇이 아닌 LLM을 이용한 소프웨어트를 만들어보니 재미있었습니다. 무엇보다 스팸성 PR생성이 실제 가능하다는 게 인상깊었습니다. 파일명과 파일 내부 주석 등을 임베딩하면 RAG를 통해 쉬운 이슈정도는 자동으로 처리하는 것도 가능하지 않을까하는 생각도 들었습니다. 전 코드로 수학문제 푸는 걸 즐기는 편은 아니라, 소프트웨어를 만드는 경험 자체는 더 재밌어진 것 같습니다. LLM 덕분에 구현할 수 있는 아이디어 범위가 넓어져서 무엇을 더 해볼 수 있을지 다양하게 생각해볼 수 있어서 긍정적인 것 같습니다.