AIコードレビューのPR-AgentをGitHubActionsで使用する

はじめに

以前、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 を選択する。

setting-github-secrets-01

OPENAI_KEY という名前、Secretに 取得したAPIのキー を入れる。

setting-github-secrets-02

追加されていればOK!
setting-github-secrets-02

3. 変更をメインブランチにマージする。

先ほど、1で作成した pr_agent.ymlfeatureブランチにプッシュしておき、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を作成する

test-pr-agent-01

2. レビューされていることを確認できる

test-pr-agent-02

オプション: モデルを切り替える

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を作成する。
問題なければマージをする。

参考

おわりに

使ってみたがかなり便利で、業務だけでなく個人開発でも使えそう!
特に個人開発ではレビュアーの用意が難しく、客観的なレビューができないのでこういったAIのコードレビューは本当に助かる。
これは今後も使っていこう…!

Hugo で構築されています。
テーマ StackJimmy によって設計されています。