7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

STECHAdvent Calendar 2024

Day 1

【PR-Agent】オラが村にもAIが来ただよ

Last updated at Posted at 2024-11-30

[これは何]
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つの対応で導入が可能です。

  1. リポジトリへのAPI KEYの追加
  2. pr-agent.yamlの追加
  3. 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のテンプレートに以下のような記述を追加します。

それぞれ、summarywalkthroughと記載した箇所に、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ツールは、使えるところから小さく導入していく良いと思っているので、これからもこういったツールを積極的に入れていきたい。

資料

参考資料

7
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?