🦾

ai-pr-reviewer でAIにレビューを手伝ってもらう - 実際に使ってみた

2023/08/28に公開

はじめに

ai-pr-reviewer 第3回です。
過去の記事はこちら
https://zenn.dev/egstock_inc/articles/650cea61a49bda
https://zenn.dev/egstock_inc/articles/b0e9626dd385ba

今回はai-pr-reviewerがプロジェクトで運用可能なのか、実際にPullRequestを作成して試そうと思います。
言語は PHP8.2Laravel10.17 で、 Models は gpt-3.5-turbo-0613 を使用します。
OpenAI APIに課金済のアカウントを使用しています。
APIにはリクエスト上限があり課金の有無と課金後経過時間で値が異なるため、複数ファイルをレビューさせる場合は課金することで進捗がスムーズになります。

無課金 課金(48時間未満) 課金(48時間以降)
3req / min 60req / min 3,500req / min
200req / day 2,000req / day 無制限

https://platform.openai.com/docs/guides/rate-limits/what-are-the-rate-limits-for-our-api

設定ファイル紹介と変更点の解説

設定ファイル

今回使用した設定ファイルです。
https://gist.github.com/eg-tdaikawa/2449ee4f1a35222b8026b83831f049de

前回記事からの変更点

トリガーの変更

任意のタイミングでレビューさせたかったため、特定のLabelを付けた場合にレビューを開始するように変更しました。初期状態ではPRを作成した時点でレビューを開始します。
今回はin reviewLabelを新たに作成して使用しています。
ラベルを付け直すことで再度レビューをさせることもできるため、扱いやすくなります。

on:
  pull_request:
+   types: [labeled]
  pull_request_review_comment:
    types: [created]

jobs:
  review:
+   if: github.event.label.name == 'in review'

コメントの日本語化

前回記事からai-pr-reviewerのバージョンが上がり言語指定方法が変更されました(※ 詳細は下記PR)
https://github.com/coderabbitai/ai-pr-reviewer/pull/430

+ language: ja-jp
- Important:
-  Please write your review in Japanese.

使用している言語とフレームワーク

コメントの精度を上げるため、言語バージョンやフレームワーク情報を補足します。
使用している言語バージョンでは非推奨な書き方やフレームワークの機能を用いない提案があったため追加しています。

+ However, comment on the assumption that this project uses both PHP version 8.2 and Laravel

レビューさせてみた

WEBアプリでよくあるユーザー登録処理を実装し、レビュー対象としました。
コード量は約180行で7ファイルとなります。
レビュー完了まで2分17秒かかりました。

このPRのレビューにかかったコストは$0.05(7.2円 ※2023/8/21時点)となっていました。

実際にAIがつけたコメントで よかったコメントざんねんなコメント をいくつか紹介します

👍 よかったコメント

フレームワークの機能を使用する

提案を適用させたコードを提示

プログラム言語のバージョンに応じた対応

パスワードのハッシュ化

処理対象のレコード存在チェック

ファイルごとの変更点が一目でわかる

🤔 ざんねんなコメント

UserControllerをインポートしている箇所は他には存在しない

App\Services\User\UserRepositoryは存在しない

Summaryが日本語で記載されていない(内容は👌)

感想

設定の変更を行なったことでより使いやすく、使用している言語やフレームワークに応じたレビューをさせることができました。
最初は無課金アカウントにて検証していましたが、すぐにリクエスト上限に引っかかってしまうので実運用は課金アカウントが前提になりそうです。
明らかに間違っているコメントもありますが良い提案コメントも多く付けられているため、レビュアーの負担軽減や品質向上に貢献してくれそうです。

EGSTOCK,Inc.

Discussion