はじめに
以前、GitLab RunnerでChatGPTにMRのレビューをしてもらうで、自己管理型のGitLabインスタンスにAIコードレビューの機能を導入することをやった。
1年ほどたっているので、他に便利なものはないかと調査したところ、Codium-ai/pr-agentというAIコードレビューツールがあることを知った。
これも、上記と似たようなものだが導入がかなり楽で、各Gitホスティングサービス(GitHub,GitLab,BitBucket…)でも簡単に導入できるように Installation Guideがついている。
簡単に導入できるかつ、高機能なのでこれを個人開発にも導入してみる。
環境
OpenAI API
GitHub
GitHub Actions
準備
各種アカウントやAPI Keyを取得していることを前提とする。
- OpenAI API Keyを取得済み
- GitHubアカウント
- コードレビューを実践したいリポジトリを作成(所有)済み
導入
公式の Installtion Guideをもとに導入を実践する。
PR-Agent Documentation
1. pr_agent.ymlをリポジトリに追加する。
コードレビューを実践したいリポジトリ に、 .github/workflows/pr_agent.yml
のパスで作成をする。
on:
pull_request:
types: [opened, reopened, ready_for_review]
issue_comment:
jobs:
pr_agent_job:
if: ${{ github.event.sender.type != 'Bot' }}
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
contents: write
name: Run pr agent on every pull request, respond to user comments
steps:
- name: PR Agent action step
id: pragent
uses: Codium-ai/pr-agent@main
env:
OPENAI_KEY: ${{ secrets.OPENAI_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2. OPENAI_KEYという名前でシークレットを追加する。
対象のリポジトリに移動し、
Settings
-> Secrets and variables
-> Actions
-> New repository secret
を選択する。
OPENAI_KEY
という名前、Secretに 取得したAPIのキー
を入れる。
3. 変更をメインブランチにマージする。
先ほど、1で作成した pr_agent.yml
を feature
ブランチにプッシュしておき、PRを作成後、メインブランチにマージする。
※間違えて、main
ブランチに直接pushしたので、一旦スキップした。
4. 環境変数を設定し、日本語でレビューしてもらう。
公式ドキュメントに記載されている通り、
ファイル内の構成可能なプロパティに対応する環境変数を env セクションに追加することで、PR-Agent を構成できます
ということなので、pr_agent.yml
を以下のように変更し、日本語でレビューしてもらうようにする。
extra_instructions
が追加でプロンプトを提示できるものなので、これに日本語でレビューしてもらうように英語で書いておく。
https://github.com/Codium-ai/pr-agent/blob/main/pr_agent/settings/configuration.toml
steps:
- name: PR Agent action step
id: pragent
uses: Codium-ai/pr-agent@main
env:
OPENAI_KEY: ${{ secrets.OPENAI_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ PR_REVIEWER.EXTRA_INSTRUCTIONS: 'Please use Japanese in descriptions.'
+ PR_DESCRIPTION.EXTRA_INSTRUCTIONS: 'Please use Japanese in descriptions.'
+ PR_CODE_SUGGESTIONS.EXTRA_INSTRUCTIONS: 'Please use Japanese in descriptions.'
+ PR_ADD_DOCS.EXTRA_INSTRUCTIONS: 'Please use Japanese in descriptions.'
+ PR_UPDATE_CHANGELOG.EXTRA_INSTRUCTIONS: 'Please use Japanese in descriptions.'
+ PR_TEST.EXTRA_INSTRUCTIONS: 'Please use Japanese in descriptions.'
※一部は有料機能なので、有料機能を使用しないのであれば上記すべてを定義する必要はない。
試してみる
今回、pr-agent
を導入したfeature
ブランチをプッシュしておいた。
このfeature
ブランチをmaster/main
ブランチに向けてPRを作成する。
1. PRを作成する
2. レビューされていることを確認できる
オプション: モデルを切り替える
https://github.com/Codium-ai/pr-agent/blob/main/pr_agent/settings/configuration.toml#L2
通常の設定では、gpt-4-turbo-2024-04-09
になっているが、これを最近出た gpt4o-mini
を使うようにしてみる。
FYI: https://platform.openai.com/docs/models/gpt-4o-mini
pr_agent.yml
に以下を追加する。
env:
OPENAI_KEY: ${{ secrets.OPENAI_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ CONFIG.MODEL: 'gpt-4o-mini-2024-07-18'
PR_REVIEWER.EXTRA_INSTRUCTIONS: 'Please use Japanese in descriptions.'
PR_DESCRIPTION.EXTRA_INSTRUCTIONS: 'Please use Japanese in descriptions.'
これを別ブランチでプッシュし、PRを作成する。
問題なければマージをする。
参考
PR-Agent Documentation
https://pr-agent-docs.codium.ai/installation/github/PR-Agent を使って Pull Request をAIレビューしてみた。(日本語対応もしてみた)
https://tech.layerx.co.jp/entry/2023/09/01/102612GitLabにAIコードレビュー(PR-Agent)を導入する
https://qiita.com/ssc-yshikeda/items/5611780d1c46886a6526
おわりに
使ってみたがかなり便利で、業務だけでなく個人開発でも使えそう!
特に個人開発ではレビュアーの用意が難しく、客観的なレビューができないのでこういったAIのコードレビューは本当に助かる。
これは今後も使っていこう…!