PR Agent¶
はじめに¶
本サイトにつきまして、【IT技術の知見】はじめに - 俺の技術ノート をご認識のほど宜しくお願いいたします。
01. PR Agent とは¶
メンションに応じて自動で PR の内容を読み取り、レビューを実施する。
02. セットアップ¶
GitHub Actions 上で実行する場合¶
.github/workflows/pr-agent.yml に配置し、PR の作成・更新時に describe、review、improve を順に実行する。処理が失敗しても、ワークフロー全体は失敗させない。
name: PR Agent
on:
pull_request:
types: [opened, reopened, synchronize]
permissions:
contents: read
pull-requests: write
jobs:
pr-agent:
runs-on: ubuntu-latest
continue-on-error: true
container:
image: pr-agent:latest
env:
# Cross-region-inferenceに対応する場合はusを指定する
AWS_REGION_NAME: us-east-1
config__git_provider: github
github__user_token: ${{ secrets.GITHUB_TOKEN }}
OPENAI_KEY: ${{ secrets.OPENAI_KEY }}
steps:
# Bedrockを使用する場合は、ここでAWSの資格情報を取得する
- name: Describe, review, and improve PR
env:
PR_URL: ${{ github.event.pull_request.html_url }}
run: |
cd /app
echo "Running PR Agent action step"
echo "PR_URL=$PR_URL"
python -m pr_agent.cli --pr_url="$PR_URL" describe
python -m pr_agent.cli --pr_url="$PR_URL" review
python -m pr_agent.cli --pr_url="$PR_URL" improve
pr-agent:latest は PR Agent とモデル設定を含むイメージを用意する想定である。OpenAI を使う場合は Actions secrets に OPENAI_KEY を登録し、Bedrock を使う場合は AWS の認証とモデル設定を用意する。
自動レビュー¶
レビュー依頼前¶
- PR Agent を CI に導入する
- 開発者は PR 上で PR-Agent にコメントをもらい、レビューをお願いする前に、ある程度問題点を修正しておく
レビュー依頼後¶
- レビュアーは手元で生成 AI に git diff develop をさせて、作業ブランチと develop ブランチの差分を読み取らせる
- 生成 AI に次を読み取らせ、レビューしてもらう
- 保守性や可読性などのルールをまとめたオリジナルのドキュメント
- すでに作成いただいている仕様書
- レビュアーは自身の観点と生成 AI の観点を合わせて、必要であればコメントをする
02. Webhook¶
Webhook を使用した CI 発火¶
PR 上で /<コマンド> を実行することで、Webhook を介して PR-Agent を実行できる。
プッシュのたびに PR-Agent を実行させるとレビューへの修正負荷が高いため、PR-Agent の発火は Webhook で制御したほうがよい。
/describe¶
変更内容から、自動的に MR の種別や変更内容などを description に記載する。
/review¶
変更したコードの問題点やセキュリティ的な脆弱性などをレビューし、PR にコメントする。
/improve¶
コードの改善点を MR にコメントする。
/ask <質問内容>¶
PR 全体や特定の行について質問する。
/config¶
現在の pr-agent の設定を出力する。
/help¶
pr-agent の使い方を出力する。
03. config セクション¶
model¶
メインで使用する model を設定する。
[config]
model="bedrock/us.anthropic.claude-3-7-sonnet-20250219-v1:0"
fallback_models¶
処理に失敗した際の fallback で使用する model を設定する。
[config]
fallback_models=["bedrock/anthropic.claude-3-haiku-20240307-v1:0"]
response_language¶
言語を設定する。
[config]
response_language="ja-JP"
verbosity_level¶
大きい値を設定するとより詳細にログ出力する。
[config]
# 0,1,2
verbosity_level=0
log_level¶
[config]
log_level="INFO"
use¶
Webhook 側ではなく本リポジトリ側の設定を優先する。
[config]
use_repo_settings_file=true
use_global_settings_file=false
use_wiki_settings_file=false
04 github_app セクション¶
handle_push_trigger¶
プッシュで PR-Agent が起動するフラグを設定する。
[github_app]
handle_push_trigger=false
05. pr_description セクション¶
enable_help¶
Help セクションを設定する。
[pr_description]
enable_help_comment = false
enable_help_text=false
enable_pr_diagram¶
Diagram セクションを設定する。
[pr_description]
enable_pr_diagram=true
enable_pr_type¶
PR Type セクションを設定する。
[pr_description]
enable_pr_type=false
inline_file_summary、collapsible_file_list、enable_semantic_files_types¶
Changes walkthrough セクションを設定する。
[pr_description]
inline_file_summary=false
collapsible_file_list=false
enable_semantic_files_types=false
enable_help¶
Help セクションを設定する。
[pr_description]
enable_help_comment = false
enable_help_text=false
extra_instructions¶
PR の説明欄に関するプロンプトを設定する。
[pr_description]
extra_instructions="""\
- impactレベルは「high」または「medium」のみを使用すること。「low」のimpactレベルを提案することは禁止である。
"""
06. pr_reviewer セクション¶
enable_help_text¶
Help セクション設定する。
[pr_reviewer]
enable_help_text=false
extra_instructions¶
PR レビューに関するプロンプトを設定する。
[pr_reviewer]
extra_instructions="""\
- impactレベルは「high」または「medium」のみを使用すること。「low」のimpactレベルを提案することは禁止である。
"""
require_score_review¶
PR スコア算出のフラグを設定する。
[pr_reviewer]
require_score_review=true
07. pr_code_suggestions セクション¶
extra_instructions¶
コード提案に関するプロンプトを設定する。
[pr_code_suggestions]
extra_instructions="""\
- impactレベルは「high」または「medium」のみを使用すること。「low」のimpactレベルを提案することは禁止である。
"""
persistent_comment¶
レビューのたびに新しいコメントを追加するフラグを設定する
[pr_code_suggestions]
persistent_comment=false