1
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?

はじめに

今回はさくらのAIを利用してGitHubのPull Requestをレビューする仕組みを作りました。
さくらのAIと記載していますが実際にはOpenAI互換のAPIでしたらさくらのAI以外のプロバイダーでも利用できます。

ちなみに今回使用するさくらのAIはKong AI Gateway経由で利用しています。

作ったもの

今回作成したものは以下になります。
処理としてはさくらのAIをAPIで読んでいるだけなので、実装についての説明は割愛します。

処理フロー

アプリの処理としては以下のような感じです。

使い方

実際に使用する場合は以下のようなGitHub Workflowを作成します。

ai-review.yaml
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/v1
    LLM_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から以下のようなコメントが投稿されます。

    github-pr-review-using-api.png

まとめ

今回はさくらのAIを利用してGitHubのPull Requestをレビューするアプリを作成しました。
なんだかんだAIでのコードレビューはあるのとないのでは作業効率が違うので、さくらのAIしか使えない環境でも使えるものが欲しいなーという思いで作成しました。
さくらのAI以外でもOpenAI互換でしたらLocal LLMでも利用できるので、結構使う場面出るかもなーと思っています。

1
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
1
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?