LoginSignup
139
107

Github プルリクエストにAIレビューを導入してみた

Last updated at Posted at 2024-03-18

はじめに

以前からGitHubのプルリクにAIサポート、Copilotがあればいいのにと思っていました。
Github Copilot for Pull RequestもありますがCopilot Enterpriseに登録した企業のみなので
シンプルかつ個人でも始められそうなChatGPT CodeReviewを導入してみます。

ChatGPT CodeReviewを導入する

OpenAIの作業

1. OpenAIアカウントに登録、ログインする

ほんの少し費用が掛かります

2. 課金する
Setting - Billingを選択します。
Add to credit balanceを選択して、クレジットカードを登録します。
スクリーンショット 2024-03-18 7.32.34.png

ミニマム$5〜から課金を行います。
スクリーンショット 2024-03-18 13.12.12.png

3. APIKey作成
API Keysを選択します。
Create New Secret keyを選択してAPI Keyを作成します。
スクリーンショット 2024-03-18 7.25.19.png
API keyを安全な場所に保存します。
※以降確認できません。
スクリーンショット 2024-03-18 13.17.08.png

Githubの作業

1. GithubにChatGPT CodeReviewをインストール

2. Github上の変数にAPIkeyをセットする
Githubの各リポジトリのSetting - Secrets And Variables - Actions - VariablesにOpenAIのAPI Keyを追加します。

VariableのKey名は「OPENAI_API_KEY」です。
※リポジトリ毎に手順2の作業が必要です。

スクリーンショット 2024-03-18 13.23.53.png

以上で設定は完了です!

試してみる

適当にプルリクを作成します。するとAIによるレビューが表示されます。
あとは人間が修正の要不要を判断してコードに反映すれば良いのではないかと思います。

英語のみのためGoogle翻訳で日本語に翻訳します。

スクリーンショット 2024-03-18 13.33.00.png

スクリーンショット 2024-03-18 13.33.21.png

費用

費用は1レビューあたり0.01ドル以下なので日本円にしても気にならない程度かと思います。
スクリーンショット 2024-03-19 6.19.43.png

Github Actionsを使う

今紹介したのはBotというオプション等がない英語でのレビューを行う方法です。
他にGithub Actionsを用いてymlファイルにレビューの言語や詳細を設定する方法もあります。今回はかんたんに紹介します。

追記:下記記事にGithub Actionsの導入方法まとめました

  1. APIKeyをGithubActions シークレットに追加します
  2. .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】による開発になるので個人開発という概念がなくなるかも知れませんね。

最後に

私の働いている会社で経験の有無を問わず採用を行っています。
興味のある方は是非カジュアル面談から応募してみてください!

139
107
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
139
107