▶️

ai-pr-reviewer(旧openai-pr-reviewer) でAIにレビューを手伝ってもらう - 機能を試してみた

2023/07/31に公開

前回のあらすじ

前回の記事はこちら
https://zenn.dev/egstock_inc/articles/650cea61a49bda

GitHubでChatGPTがPullRequestをレビューしてくれるopenai-pr-reviewerを動かしました。
本記事では前回の記事にて紹介しきれなかった各機能を紹介します。

各機能紹介

修正行ごとの変更提案

変更提案はsuggestion形式なのですぐにコミットとして取り込めます。

使用するChatGPTのModelを選択可能

ワークフローファイルに記載することで変更可能です。
要約用のopenai_light_modelとレビュー用のopenai_heavy_modelをそれぞれ指定できます。

openai-review
jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: fluxninja/openai-pr-reviewer@latest
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
        with:
          openai_light_model: gpt-3.5-turbo # 要約用モデル
          openai_heavy_model: gpt-3.5-turbo # レビュー用モデル

defaultは以下が設定されています。

openai_light_model: gpt-3.5-turbo
openai_heavy_model: gpt-4

ボットとのチャット

AIの変更提案に対し、対話形式で要望や条件を追加できます。

レビューが不要な場合はスキップ可能

レビューが不要な場合は、PullRequestのコメントに@openai: ignoreを記載するとレビューをスキップできます。

デフォルトでは、変更されたコードに問題がないときや問題点が細かい誤字脱字程度の場合はPullRequestのレビューはスキップされます。
修正が問題ないときや細部までレビューが必要な場合にコメントが欲しい場合、ワークフローファイルを以下のように変更します。

openai-review
jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: fluxninja/openai-pr-reviewer@latest
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
        with:
          review_simple_changes: true # 細部までレビューを行う
          review_comment_lgtm: true # 修正が問題ない場合はコメントにLGTMを記載する

プロンプトはカスタマイズ可能

ワークフローファイル内でプロンプトを記載できます。
例えば、以下の記載でコメントを日本語化できます。

openai-review
    jobs:
      review:
        runs-on: ubuntu-latest
        steps:
          - uses: fluxninja/openai-pr-reviewer@latest
            env:
              GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
              OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
            with:
              system_message: | # PullRequestレビュー用
                - プロンプトを記載
                Important:
                  Please write your review in Japanese.
              summarize: | # PullRequestコメント用
                - プロンプトを記載
                Important:
                  Please write your summary in Japanese.
              summarize_release_notes: | # リリースノート用
                - プロンプトを記載
                Important:
                  Please write your release notes in Japanese.

感想

柔軟にカスタマイズできることがわかりました。
用途によって使い分けが可能で良いですね。

EGSTOCK,Inc.

Discussion