はじめに
以前からGitHubのプルリクにAIサポート、Copilotがあればいいのにと思っていました。
Github Copilot for Pull RequestもありますがCopilot Enterpriseに登録した企業のみなので
シンプルかつ個人でも始められそうなChatGPT CodeReviewを導入してみます。
ChatGPT CodeReviewを導入する
OpenAIの作業
1. OpenAIアカウントに登録、ログインする
ほんの少し費用が掛かります
2. 課金する
Setting - Billingを選択します。
Add to credit balanceを選択して、クレジットカードを登録します。
3. APIKey作成
API Keysを選択します。
Create New Secret keyを選択してAPI Keyを作成します。
API keyを安全な場所に保存します。
※以降確認できません。
GitHubの作業
1. GitHubにChatGPT CodeReviewをインストール
2. Github上の変数にAPIkeyをセットする
GitHubの各リポジトリのSetting - Secrets And Variables - Actions - VariablesにOpenAIのAPI Keyを追加します。
VariableのKey名は「OPENAI_API_KEY」です。
※リポジトリ毎に手順2の作業が必要です。
以上で設定は完了です!
試してみる
適当にプルリクを作成します。するとAIによるレビューが表示されます。
あとは人間が修正の要不要を判断してコードに反映すれば良いのではないかと思います。
英語のみのためGoogle翻訳で日本語に翻訳します。
費用
費用は1レビューあたり0.01ドル以下なので日本円にしても気にならない程度かと思います。
Github Actionsを使う
今紹介したのはBotというオプション等がない英語でのレビューを行う方法です。
他にGithub Actionsを用いてymlファイルにレビューの言語や詳細を設定する方法もあります。今回はかんたんに紹介します。
追記:下記記事にGithub Actionsの導入方法まとめました
- APIKeyをGitHubActions シークレットに追加します
- .github/workflows/cr.ymlを作成し、以下のコンテンツを追加します
name: Code Review
permissions:
contents: read
pull-requests: write
on:
pull_request:
types: [opened, reopened, synchronize]
jobs:
test:
# if: ${{ contains(github.event.*.labels.*.name, 'gpt review') }} # Optional; to run only when a label is attached
runs-on: ubuntu-latest
steps:
- uses: anc95/ChatGPT-CodeReview@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
# Optional
LANGUAGE: Japanese ← !!!言語設定!!!
OPENAI_API_ENDPOINT: https://api.openai.com/v1
MODEL: gpt-3.5-turbo # https://platform.openai.com/docs/models
PROMPT: # example: Please check if there are any confusions or irregularities in the following code diff:
top_p: 1 # https://platform.openai.com/docs/api-reference/chat/create#chat/create-top_p
temperature: 1 # https://platform.openai.com/docs/api-reference/chat/create#chat/create-temperature
max_tokens: 10000
MAX_PATCH_LENGTH: 10000 # if the patch/diff length is large than MAX_PATCH_LENGTH, will be ignored and won't review. By default, with no MAX_PATCH_LENGTH set, there is also no limit for the patch/diff length.
まとめ
思ったより簡単に導入できました!
チームではAIのレビューを挟むことでセルフレビューの強化にもなり、レビューワーの負担も減らせそうです。また精度が安定しているのでレビューワーによる偏りが減るのではないかと思います。個人ではますます【個人+AI】による開発になるので個人開発という概念がなくなるかも知れませんね。
最後に
私の働いている会社で経験の有無を問わず採用を行っています。
興味のある方は是非カジュアル面談から応募してみてください!