요즘 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 사이트에서 로그인을 합니다.
아래 화면에서 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 코멘트를 달아줄 수 있으니
위 서비스도 고려해보세요~
Bot 또는 Github actions 으로 호출하면 AWS Lambda 의 RateLimit 제한으로 속도가 느리다고 합니다.
빠른 ChatGPT API 속도를 원한다면 자체 서버로 구축해야 합니다.
Node.js 환경과 PM2 라이브러리로 서버를 실행시킬 수 있습니다.
또는 도커로 바로 실행시킬 수 있다고 합니다.
자세한 내용은 ChatGPT-CodeReview 레포 문서에 나왔습니다.
행복한 개발 라이프 되시길 바랍니다.
'자바 > 자바 자료실' 카테고리의 다른 글
[책 부수기] 아이템 1. 생성자 대신 정적 팩터리 메서드를 고려하라 (0) | 2023.12.07 |
---|---|
[SonarLint] 내 코드 품질을 지켜주는 정적 코드 분석기 IntelliJ IDE 플러그인 설치하기 (0) | 2023.11.29 |
[SOLID] 단일책임원칙(SRP)과 God Object(신 객체) (1) | 2023.11.22 |
IntelliJ External Libraries 에서 JDK 버전 변경하기 (0) | 2023.11.02 |
인텔리제이(Intellij) 소스파일 및 테스트 결과 한글 깨짐 (2) | 2020.04.05 |
댓글