CodeRabbitとは
CodeRabbit は、AI ベースのコード レビューアー
図のように、プルリクエストのレビュー、要約、リリースノートなどを自動生成してくれる。なおOpenAIgpt-3.5-turbo
とgpt-4
モデル両方対応している。どの程度細かいところまで突っ込んでもらいたいのか等もプロンプトに条件として指定できる
仕組み
GithubActions用のymlファイルを用意(仮にai-pr-reviewer.yml)。ai-pr-reviewer.ymlにプルリクエストがopenされたらActions(coderabbitai/ai-pr-reviewer@latest)が走るように設定する。Actions上では、あらかじめymlファイルで指定したシチュエーションやシナリオ、要約の形式(テーブルなのか箇条書きなのか、文字数上限等)に沿って、該当のプルリクエストに対してレビューや要約が書き込まれる、という流れ
具体的な手順
シークレットの登録
GithubActionsのシークレットにOPENAI_API_KEY
を登録する
ymlファイルの作成
.github/workflows/ai-pr-reviewer.yml
name: Code Review
permissions:
contents: read
pull-requests: write
on:
pull_request:
types: [opened]
pull_request_review_comment:
types: [created]
issue_comment:
types: [created]
concurrency:
group:
${{ github.repository }}-${{ github.event.number || github.head_ref ||
github.sha }}-${{ github.workflow }}-${{ github.event_name ==
'pull_request_review_comment' && 'pr_comment' || 'pr' }}
cancel-in-progress: ${{ github.event_name != 'pull_request_review_comment' }}
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: coderabbitai/ai-pr-reviewer@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
with:
debug: false
review_simple_changes: false
review_comment_lgtm: false
openai_light_model: gpt-3.5-turbo
openai_heavy_model: gpt-3.5-turbo
openai_timeout_ms: 900000
language: ja-JP
system_message: |
あなたは @coderabbitai(別名 github-actions[bot])で、OpenAIによって訓練された言語モデルです。
些細なコードスタイルの問題や、コメント・ドキュメントの欠落についてはコメントしないでください。
summarize: |
次の内容でmarkdownフォーマットを使用して、最終的な回答を提供してください。
### 概要: 特定のファイルではなく、全体の変更に関する高レベルの要約を80語以内で。
### 詳細: ファイルとその要約のテーブル。スペースを節約するために、同様の変更を持つファイルを1行にまとめることが可能
summarize_release_notes: |
このプルリクエストのために、markdownフォーマットで簡潔なリリースノートを作成してください。
変更は以下のような分類で箇条書きにすること:
"New Feature", "Bug fix", "Documentation", "Refactor", "Style",
"Test", "Chore", "Revert"
例えば:
```
- New Feature: モーダルコンポーネントを追加
```
回答は50-100語以内にしてください。
あとはプルリクエストをopenして、GithubActionsが走り、冒頭で見せたようなレビューや要約が書き込まれていれば成功。
ymlファイルのポイント
onで、どのタイミングでAIに処理を実行させたいのかを指定する。
name: Code Review
# 割愛
on:
pull_request:
types: [opened]
pull_request_review_comment:
types: [created]
issue_comment:
types: [created]
変更の要約などの軽いタスクは(openai_light_model
)はgpt-3.5-turbo
に、複雑なレビューおよびコメントタスク(openai_heavy_model
)についてはgpt-4
に実行させるといった使い分けも可能。また、languageで日本語化できる
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: coderabbitai/ai-pr-reviewer@latest
with:
# 割愛
openai_light_model: gpt-3.5-turbo
openai_heavy_model: gpt-3.5-turbo
language: ja-JP
system_messageで、モデルに対して全体的な前提条件などを与え、summarizeで要約について、summarize_release_notesでリリースノートについての条件を指定できる
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: coderabbitai/ai-pr-reviewer@latest
# 割愛
system_message: |
あなたは @coderabbitai(別名 github-actions[bot])で、OpenAIによって訓練された言語モデルです。
あなたの目的は、非常に経験豊富なソフトウェアエンジニアとして機能し、
# ・・・割愛・・・
些細なコードスタイルの問題や、コメント・ドキュメントの欠落についてはコメントしないでください。
summarize: |
次の内容でmarkdownフォーマットを使用して、最終的な回答を提供してください。
### 概要: 特定のファイルではなく、全体の変更に関する高レベルの要約を60語以内で。
### 詳細: ファイルとその要約のテーブル
summarize_release_notes: |
このプルリクエストのために、markdownフォーマットで簡潔なリリースノートを作成してください。
変更は次のように分類し箇条書きにすること:
"New Feature", "Bug fix", "Documentation", "Refactor", "Style",
"Test", "Chore", "Revert"
例えば:
```
- New Feature: モーダルコンポーネントを追加
```
まとめ
いかがでしたでしょうか。今回は、CodeRabbitというChatGptを活用したライブラリとGithubActionsを連携してプルリクエストのレビューと要約を自動生成する導入手順や具体的な使い方について紹介しています。こちらを使用することによって、より開発効率を向上させることが可能になりますので、是非活用してみてください。