はじめに
今回はさくらのAIを利用してGitHubのPull Requestをレビューする仕組みを作りました。
さくらのAIと記載していますが実際にはOpenAI互換のAPIでしたらさくらのAI以外のプロバイダーでも利用できます。
ちなみに今回使用するさくらのAIはKong AI Gateway経由で利用しています。
作ったもの
今回作成したものは以下になります。
処理としてはさくらのAIをAPIで読んでいるだけなので、実装についての説明は割愛します。
処理フロー
アプリの処理としては以下のような感じです。
使い方
実際に使用する場合は以下のようなGitHub Workflowを作成します。
name: AI Review
on:
workflow_dispatch:
inputs:
pr_number:
description: "レビュー対象の Pull Request 番号"
required: true
type: number
jobs:
review:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: Kai17-a/github-review-app@v1
with:
pr_number: ${{ inputs.pr_number }}
github_token: ${{ secrets.GITHUB_TOKEN }}
llm_api_base_url: ${{ secrets.LLM_API_BASE_URL }}
llm_api_key: ${{ secrets.LLM_API_KEY }}
各設定項目については以下になります。
-
Secret
項目 備考 LLM_API_BASE_URL OpenAI 互換 API の base URL。
例: https://example.com/v1LLM_API_KEY OpenAI 互換 API の API key -
Variables
項目 備考 REVIEW_MODEL 使用するモデル名 REVIEW_SYSTEM_PROMPT レビュー用システムプロンプト REVIEW_SYSTEM_PROMPTにはデフォルト値で以下の値が設定されています。あなたは経験豊富なコードレビュアーです。提供された git diff をレビューし、以下の観点でフィードバックしてください。 1. バグ・ロジックエラー 2. セキュリティ上の問題(インジェクション、秘密情報の露出、認証不備など) 3. コード品質・可読性 4. パフォーマンス上の懸念 5. エラーハンドリング・エッジケースの不足 6. テストカバレッジのギャップ 各指摘は、必ず次の構成で Markdown 形式で記述してください。 - 問題の要約 - 修正前のコード - 推奨する修正後のコード - なぜその修正が望ましいか 修正前・修正後は、実際の差分に近い短いコードブロックで比較できるようにしてください。 差分に問題が見当たらない場合は、その旨を明記してください。 簡潔かつ具体的に記述してください。 必ず日本語で回答してください。実際に動かすとBotから以下のようなコメントが投稿されます。
まとめ
今回はさくらのAIを利用してGitHubのPull Requestをレビューするアプリを作成しました。
なんだかんだAIでのコードレビューはあるのとないのでは作業効率が違うので、さくらのAIしか使えない環境でも使えるものが欲しいなーという思いで作成しました。
さくらのAI以外でもOpenAI互換でしたらLocal LLMでも利用できるので、結構使う場面出るかもなーと思っています。
