[これは何]
PRの内容をAIが書いてくれたり、レビューしてくれるCIをインターン先に導入した話
本命の原稿落としました。佐竹先生の次回作にご期待ください。
自己紹介
Yuma Satake
普段は フロントおじさん Webアプリケーション開発をしている車好きの学生。
- 名前:佐竹友真
- 所属:名古屋工学院専門学校(3 年)
- 領域:Web 開発
- 趣味:車・旅行
- Twitter:Yuma Satake | Matsuriba🏮
📕概要
どうしたの
長期のインターン先でPR-Agent
というAIレビューをしてくれるツールを導入した話
▼ PR-Agent
それは何?
GithubActions
でPR時に動作するPR自体を書いてくれたり、レビューとかやってくれるやつ
PR-Agentとは?
[公式] Qode Merge PR-Agentは、AIによるフィードバックと提案を提供することで、プルリクエストの効率的なレビューと処理を支援することを目的としています。
Codium AI
が開発をしている、オープンソースのAIツール。
GithubActionsをトリガーにして、PRの差分の内容から、PRの説明文生成、レビューなどを行ってくれる。
競合として同様にAIレビューを行うCodeRabbit
などがある。
▼ CodeRabbit
何が嬉しいの?
- PRで何を変更したか手書きしなくてよくなる
- AIがPRの改善点をコメントしてくれる
お金は?
- OpenAIのAPI KEYで動作する
- 今の所
3円/1PR
ぐらい(もちろん差分の量に依存するが)
日本語対応は?
プロンプトを差し込む事で日本語対応が可能
対応言語は?
GPTをモデルとしては内部で使っているので、GPTが読めるやつであれば
導入
以下の3つの対応で導入が可能です。
- リポジトリへのAPI KEYの追加
- pr-agent.yamlの追加
- pull_request_template.mdへの追記
1. リポジトリへのAPI KEYの追加
先述の通り、PR-Agent
は裏でOpenAI
のAPIを利用して動作するため、API KEYをリポジトリに追加します。
▼ Settings > Secrets and variables > Actions > New repository secret
から追加
▼ OPENAIのAPI KEYはここから発行
2. pr-agent.yamlの追加
Actionsのファイルとしてpr-agent.yaml
を追加します。
envとしてPR-Agent
のカスタマイズを行なっています。
例えば
pr_reviewer.extra_instructions: Must use Japanese in your answers.
と設定することで、日本語で回答を生成してくれるようになります。
▼ 設定はこちら
※設定の内容をコメントで雑にGPTに書かせて追記しています
name: pr-agent
on:
pull_request:
types: [opened, reopened, synchronize]
permissions:
pull-requests: write
jobs:
pr_agent:
runs-on: ubuntu-latest
name: Run PR Agent
if: ${{ github.event.sender.type != 'Bot' }}
steps:
- id: pr-agent
uses: Codium-ai/pr-agent@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# OpenAIのAPI KEYで動きます
OPENAI_KEY: ${{ secrets.OPENAI_KEY }}
# 出力の詳細度
config.verbosity_level: 1
# レビューの労力見積もりを必須としない設定です
pr_reviewer.require_estimate_effort_to_review: 'false'
# ファイル要約をインライン表示する設定が有効になっています
pr_description.inline_file_summary: 'true'
# 説明マーカーの使用を有効化しています
pr_description.use_description_markers: 'true'
# 「Generated by」ヘッダーの追加を無効化しています
pr_description.include_generated_by_header: 'false'
# 最終更新メッセージの表示を無効化しています
pr_description.final_update_message: 'false'
# ヘルプテキストの表示を無効化しています
pr_description.enable_help_text: 'false'
# 自動レビュー機能を有効化しています
github_action_config.auto_review: 'true'
# 自動説明生成機能を有効化しています
github_action_config-auto_describe: 'true'
# 自動改善機能を有効化しています
github_action_config.auto_improve: 'true'
# レビュワーには回答を日本語で行うよう指示しています
pr_reviewer.extra_instructions: "Must use Japanese in your answers."
# 説明文も日本語で記述し、タイトルにはcommitlintパターンのプレフィックスを含めるように指示しています
pr_description.extra_instructions: 'Must use Japanese in descriptions. Titles should have prefix of commitlint pattern such as `feat:`, `chore:`, `test:`, `fix:`, `ci:`, `docs:` etc'
3. pull_request_template.mdへの追記
PRのテンプレートに以下のような記述を追加します。
それぞれ、summary
とwalkthrough
と記載した箇所に、PR-Agentが生成した内容を埋め込んでくれます。
PRを発行した直後、PR-Agentが動作している間にPRを編集してしまうと、PR-Agentがうまく書き込みをしてくれない時があるので注意(re-runしてもダメ)
### 🤖 PR Agent
#### Summary
<!-- DO NOT EDIT -->
pr_agent:summary
#### Walkthrough
<!-- DO NOT EDIT -->
pr_agent:walkthrough
実際に動作している様子
※内容は一部マスクしています
- Summary(変更点を書いてくれる)
- Walkthrough(各ファイルの変更点と変更内容を書いてくれる)
- PR Reviewer Guide(PR上で確認すべき点を教えてくれる)
他にもPRの内容についてhelpをする事ができたり、Codeのサジェストもしてくれます。
Code Rabbitとの比較
導入の手軽さではCodeRabbit
が優れているが、カスタマイズ性はPR-Agent
の方が高いかな?といった感じ。
(CodeRabbitが完全にエアプなので、完全な比較はできていない)
サブスクリプションを契約しなくても、OpenAIのAPI KEYがあれば利用できるという点で、PR-Agent
の方が個人的には好き。
比較項目 | CodeRabbit | PR-Agent |
---|---|---|
提供形態 | サブスクリプションサービスとして提供 | OSSとして提供 |
主な機能 | PRの自動レビュー、要約生成、リアルタイムチャットによるフィードバック | PRの概要自動生成、自動レビュー、コード改善提案、ドキュメント追加など多彩な機能 |
導入の容易さ | GitHub Appとして簡単に導入可能 | GitHub Actionsとして設定が必要 |
カスタマイズ性 | 固定された機能セット | プロンプトの調整により柔軟にカスタマイズ可能 |
料金体系 | 月額$12からのサブスクリプションモデル | 利用自体は無料(OpenAI APIの使用料が別途発生) |
プライバシー | SOC2 Type II、GDPR、HIPAAなどのセキュリティ基準に準拠 | セルフホスト可能 |
お気持ち
- PR書く手間が省ける◎
- 経験ベース、Suggestions はたまに良いこと言ってくれる◎
- Actionsとして簡単に追加できるのは便利◎
まとめ
インターン先では、一部のプロジェクトで導入をしたが、結構便利だと好評なので、全社展開を密かに狙っている。
AIツールは、使えるところから小さく導入していく良いと思っているので、これからもこういったツールを積極的に入れていきたい。
資料
参考資料