Java/Java 자료실

Github PR 에서 ChatGPT 한테 코드리뷰 받기

Chipmunks 2023. 12. 3.
728x90

 

요즘 ChatGPT 으로 코드를 물어보거나 개발을 물어보는 일이 상당히 많습니다.

최근에 만난 학생 주니어 개발자들도 대부분 다 ChatGPT 는 기본적으로 켜있더라고요.

꼭 개발자가 아니더라도 ChatGPT 활용을 안 하는 학생을 찾기가 어려웠습니다.

새삼 대화형 인공지능 서비스가 우리 생활에 많이 들어왔구나를 느꼈습니다. 🫢

 

ChatGPT 로 코드 리뷰 받기

어느 날 같이 모각코 하는 분의 코드를 리뷰했어요.

그런데 PR 에서 이미 많은 코멘트가 달렸더라고요?!

어찌된 일인지 봤는데 ChatGPT 로 보이는 말투(?)로 코드 리뷰들이 막 달렸더라고요.

그 당시 코멘트

 

물어보니 깃허브 액션(Github Action) 으로 ChatGPT 한테 코드 리뷰를 부탁하는 워크 플로우 스크립트를 작성하셨다고 했어요.

오오... 신기해서 저도 나중에 적용해보겠다고 했습니다.

 

워크플로우 조사하기

그 분의 ChatGPT 코드 리뷰 워크플로우는 다음과 같습니다.

 

name: Code Review

permissions:
  contents: read
  pull-requests: write

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: anc95/ChatGPT-CodeReview@main
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          OPENAI_API_KEY: ${{ secrets.OPEN_API_KEY }}
          LANGUAGE: Korean
          MODEL: gpt-4

 

깃허브의 PR(Pull Request)에 코멘트를 작성할 수 있도록 permission 권한 등록이 필요합니다.

permissions 속성의 contents, pull-requests 를 설정하여 권한을 허용시킵니다.

 

워크플로우 실행은 PR이 열릴 때, 새 커밋이 업데이트되어 동기화될 때 코드 리뷰를 하도록 설정합니다.

( Synchronized 이벤트 설명 참고 : https://github.com/orgs/community/discussions/24567 )

 

anc95/ChatGPT-CodeReview 레포지토리를 사용하고 있습니다.

환경변수 값으로 첫 번째로 해당 액션에서 인증에 필요한 깃허브 토큰 인증이 필요합니다.

두 번째로 OPENAI_API_KEY 으로 Open.ai 에서 발급받은 API Key 를 입력해야 합니다.

API 키는 노출되면 안되므로 Github 레포지토리 Settings 에서 Secrets 으로 등록해야 합니다.

세 번째로 언어도 한국어(Korean)로도 설정이 가능합니다.

마지막으로 모델도 설정이 가능합니다.

GPT-4 결제가 되어 있으면 GPT-4 모델도 설정이 가능합니다.

추가로 PROMPT, top_p, temperature, max_tokens, MAX_PATCH_LENGTH 등의 세부적인 환경변수도 등록할 수 있습니다.

 

OpenAI 에서 API Key 발급 받기

OpenAI 사이트에서 로그인을 합니다.

 

OpenAI

Creating safe AGI that benefits all of humanity

openai.com

 

아래 화면에서 API 를 누릅니다.

좌측 메뉴에서 API keys 페이지에 들어갑니다.

 

처음 들어가시는 분들은 아무런 키가 없을 겁니다.

+ Create new secret key 버튼을 누릅니다.

이름을 정하고 API 키를 생성합니다.

 

우측 복사 버튼을 눌러 API 키를 복사합니다.

 

이제 API 키를 코드 리뷰할 깃허브 레포지토리에 등록합니다.

Settings 메뉴에서 Security > Secrets and variables > Actions 페이지로 들어갑니다.

New repository secret 버튼으로 복사한 API 키를 등록합니다.

OPENAI_API_KEY 이름으로 등록합니다.

 

ChatGPT 코드 리뷰 워크플로우 스크립트 작성

이제 깃허브 액션 워크플로우 스크립트 코드를 작성합니다.

레포지토리의 루트 경로에서 .github/workflows 폴더를 생성합니다.

아무 이름으로 한 yml 파일을 생성합니다.

저는 code_review_from_chatgpt.yml 파일을 생성했습니다.

 

아래 코드를 입력했습니다.

name: Code Review From ChatGPT

permissions:
  contents: read
  pull-requests: write

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  code-review:
    runs-on: ubuntu-latest
    steps:
      - uses: anc95/ChatGPT-CodeReview@main
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
          LANGUAGE: Korean
          MODEL: gpt-3.5-turbo

 

워크플로우 이름을 "Code Review From ChatGPT" 으로 명명합니다.

저번 코드와 마찬가지로 PR 코멘트를 작성할 권한을 설정합니다.

PR 이 열렸을 때, 새 커밋이 업데이트 됐을 때 코드 리뷰 액션이 실행되도록 합니다.

 

기존 코드와 다른점은 MODEL 부분입니다.

저는 gpt-3.5-turbo 모델명을 사용했는데요.

ChatGPT 4 버전의 가격 정책이 꽤 비싸서 ChatGPT 3.5 버전을 사용했습니다.

자세한 가격 정책은 아래에 있습니다.

 

Model 명은 OpenAI API 문서 사이트에서 확인이 가능합니다.

( 제작자님 README.md 에서도 주석으로 확인이 가능합니다. )

이제 워크플로우 작성이 끝났습니다.

깃에 추가하여 깃허브 레포지토리에 업로드하면 됩니다.

 

OpenAI 크레딧 충전하기

ChatGPT API 는 유료로 비용이 발생합니다.

OpenAI API 설정 화면에서 Settings > Billing 페이지에 들어갑니다.

현재 크레딧 잔고와 충전 또는 자동 재충전 기능까지 지원합니다.

저는 잠깐만 쓸 거라 5$ 정도 충전해서 사용했습니다.

한 4~5번 쓴 것 같은데 0.21$ 가 소비됐으니 5$로 한 달은 쓸 수 있지 않을까 싶네요.

새 PR 만 코드 리뷰를 하거나 PR 크기를 줄여서 실행 시간을 줄이는 것도 하나의 팁입니다.

 

가격 정책(Pricing)에 따르면 입력과 출력에 1K 토큰(단어)마다 요금이 부과되는 식입니다.

요금이 그렇게 비싸지는 않지만 코드 리뷰가 한 파일마다 리뷰해줘서 꽤 토큰이 많이 나옵니다.

 

참고로 GPT-4 버전의 가격 정책은 아래와 같습니다.

ChatGPT 3.5 에 비교해서 30배 정도 비싼 걸 확인할 수 있습니다..!

 

ChatGPT 코드 리뷰 적용 결과

ChatGPT 코드 리뷰를 적용한 결과입니다.

파일마다 아래처럼 리뷰해줍니다.

ChatGPT 3.5 버전의 코드 리뷰도 꽤 괜찮게 작동했습니다.

 

 

ChatGPT 없이 개발을 못하시는 분들,

혼자 프로젝트 하시는 분들,

또는 인공지능의 도움을 받아 코드 리뷰를 원하시는 분들

ChatGPT 로 코드 리뷰를 받아보시는 걸 추천드립니다.

 

ChatGPT 뿐 아니라 정적 코드 분석기로 SonarLint & SonarQube 등으로 PR 코멘트를 달아줄 수 있으니

위 서비스도 고려해보세요~

 

[SonarLint] 내 코드 품질을 지켜주는 정적 코드 분석기 IntelliJ IDE 플러그인 설치하기

안녕하세요. 내 코드를 대신 리뷰해주고 코드 품질을 지켜주는 플러그인을 소개합니다. 바로 SonarLint 플러그인입니다. SonarLint - IntelliJ IDEs Plugin | Marketplace SonarLint is a free IDE extension to find and fix co

itchipmunk.tistory.com

 

Bot 또는 Github actions 으로 호출하면 AWS Lambda 의 RateLimit 제한으로 속도가 느리다고 합니다.

빠른 ChatGPT API 속도를 원한다면 자체 서버로 구축해야 합니다.

Node.js 환경과 PM2 라이브러리로 서버를 실행시킬 수 있습니다.

또는 도커로 바로 실행시킬 수 있다고 합니다.

자세한 내용은 ChatGPT-CodeReview 레포 문서에 나왔습니다.

 

GitHub - anc95/ChatGPT-CodeReview: 🐥 A code review bot powered by ChatGPT

🐥 A code review bot powered by ChatGPT. Contribute to anc95/ChatGPT-CodeReview development by creating an account on GitHub.

github.com

 

행복한 개발 라이프 되시길 바랍니다.

댓글