ai-pr-reviewerが有料になってるので、pr-agentを検証しました。
どっちも触ってみた感想ですが、レビューの仕方はこちらの方が好みです。
自前でsecretsにOPENAI_API_KEY
を用意しておいてください。
Codium-ai/pr-agent: 🚀CodiumAI PR-Agent: An AI-Powered 🤖 Tool for Automated Pull Request Analysis, Feedback, Suggestions and More! 💻🔍 https://github.com/Codium-ai/pr-agent
Workflow サンプル
name: Code Review
permissions:
issues: write
pull-requests: write
on:
pull_request:
types: [opened, reopened, ready_for_review, review_requested]
issue_comment:
types: [created, edited]
workflow_dispatch:
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:
pr_agent_job:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
contents: write
name: Run pr agent on every pull request
if: ${{ github.event.sender.type != 'Bot' }}
env:
COMMON_INSTRUCTIONS: >-
- 日本語で回答してください
- 以下の原則に従ってコメントしてください。
- URLなどの構造化テキストを文字列結合で作ってはいけない。
- 置換でいじってはいけない。
- オブジェクトまたはライブラリを使ってください。
- 利用技術
- Next.js@13
- React@18
- Typescript@5.3
steps:
- name: PR Agent action step
id: pragent
uses: Codium-ai/pr-agent@main
env:
OPENAI_KEY: ${{ secrets.OPENAI_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_ACTION.AUTO_REVIEW: true
GITHUB_ACTION.AUTO_IMPROVE: true
# レビュー総評コメントである "PR Feedback" への追加プロンプト
PR_REVIEWER.EXTRA_INSTRUCTIONS: ${{ env.COMMON_INSTRUCTIONS }}
# プルリクの要約 "PR Descrition" に関する追加プロンプト
PR_DESCRIPTION.EXTRA_INSTRUCTIONS: >-
日本語で回答してください。
タイトルは feat: 、chore: 、test: 、fix: 、ci: 、docs: などの
commitlint パターンの接頭辞を含む必要があります。
# /improve で呼び出す修正コードの "Suggestion" 時の追加プロンプト
PR_CODE_SUGGESTIONS.EXTRA_INSTRUCTIONS: ${{ env.COMMON_INSTRUCTIONS }}
# /improve コメントの後に提案されるコードの数。
PR_CODE_SUGGESTIONS.NUM_CODE_SUGGESTIONS: 2
# Modelを変更
CONFIG.MODEL: gpt-3.5-turbo-0613
設定ファイル サンプル
ENVでパラメータを渡す以外にも、.pr_agent.tomlにまとめることもできます。
サンプルです。
[config]
model = "gpt-4o"
enable_custom_labels = true
[ignore]
glob = ['dist/**']
[pr_reviewer]
num_code_suggestions = 4
inline_code_comments = true
remove_previous_review_comment = true
enable_auto_approval = true
extra_instructions = """\
- 日本語で回答してください
- 以下の原則に従ってコメントしてください
- URLなどの構造化テキストを文字列結合で作ってはいけない
- 置換でいじってはいけない
- オブジェクトまたはライブラリを使ってください
- 利用技術
- Node v20
- TypeScript
- Github Actions
"""
[pr_description]
ask_and_reflect = true
automatic_review = true
persistent_comment = true
enable_review_labels_security = true
enable_review_labels_effort = true
require_all_thresholds_for_incremental_review = false
minimal_commits_for_incremental_review = 2
minimal_minutes_for_incremental_review = 10
enable_help_text = false
enable_auto_approval = true
maximal_review_effort = 5
extra_instructions = """\
- 必ず日本語で回答してください
- タイトルは feat:, chore:, test:, fix:, ci:, docs: などのcommitlint パターンの接頭辞を含む
"""
[pr_code_suggestions]
summarize = true
num_code_suggestions = 4
extra_instructions = """\
- 必ず日本語で回答してください
- 以下の原則に従ってコメントしてください
- URLなどの構造化テキストを文字列結合で作ってはいけない
- 置換でいじってはいけない
- オブジェクトまたはライブラリを使ってください
- 利用技術
- Node v20
- TypeScript
- Github Actions
"""
[pr_update_changelog]
push_changelog_changes = false
extra_instructions = """\
- 必ず日本語で回答してください
- 以下の原則に従ってコメントしてください
- URLなどの構造化テキストを文字列結合で作ってはいけない
- 置換でいじってはいけない
- オブジェクトまたはライブラリを使ってください
- 利用技術
- Node v20
- TypeScript
- Github Actions
"""
[pr_add_docs]
extra_instructions = """\
- 必ず日本語で回答してください
- 以下の原則に従ってコメントしてください
- URLなどの構造化テキストを文字列結合で作ってはいけない
- 置換でいじってはいけない
- オブジェクトまたはライブラリを使ってください
- 利用技術
- Node v20
- TypeScript
- Github Actions
"""
[github_action_config]
auto_review = true
auto_describe = true
auto_improve = true
[custom_labels."Link Update"]
description = "Whenever any link in the code is updated"
[custom_labels."Code Update"]
description = "Whenever any code is updated"
参考
【ChatGPT + PR Agent + GitHub Actions】 プルリクの AI コードレビューを10分で自動化し、レビューのルールを詳細にカスタマイズする - GMOインターネットグループ グループ研究開発本部 https://recruit.gmo.jp/engineer/jisedai/blog/chatgpt-pr-agent-github-actions/
coderabbitai/ai-pr-reviewer: AI-based Pull Request Summarizer and Reviewer with Chat
Capabilities. https://github.com/coderabbitai/ai-pr-reviewer