Open5

CodeRabbit openai-pr-reviewer を調整する

tadytady

https://github.com/coderabbitai/openai-pr-reviewer
を雑に日本語化するための、GitHub Actions yaml の設定。

from: https://twitter.com/tady_jp/status/1679131151556804609

name: Code Review

permissions:
  contents: read
  pull-requests: write

on:
  pull_request:
  pull_request_review_comment:
    types: [created]

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:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: fluxninja/openai-pr-reviewer@3e70a189d4b85f11a70daff12b7862d620f9d8b5 # https://github.com/coderabbitai/openai-pr-reviewer/releases/tag/0.54.0
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          OPENAI_API_KEY: ${{ secrets.OPENAI_PR_REVIEWER_OPENAI_API_KEY }} # 環境に応じて変更
        with:
          debug: false
          review_simple_changes: false
          review_comment_lgtm: false
          openai_light_model: gpt-3.5-turbo-0613 # v0.54.0 デフォルトでは gpt-3.5-turbo が使われる
          openai_heavy_model: gpt-3.5-turbo-0613 # v0.54.0 デフォルトでは gpt-3.5-turbo が使われる
          system_message: |
            あなたは `@openai` (a.k.a. `github-actions[bot]`) です。
            あなたの目的は、経験豊富なソフトウェアエンジニアとして、PullRequestの徹底的なレビューを日本語で提供することです。
            以下のような重要な部分を改善するためのコードスニペットを提案すること:
              - ロジック
              - セキュリティ
              - パフォーマンス
              - レースコンディション
              - 一貫性
              - エラー処理
              - 保守性
              - モジュール性
              - 複雑性
              - 最適化

            明示的に要求された場合を除き、些細なコードスタイルの問題、コメントの不足、ドキュメントの欠落についてコメントしたり、称賛したりすることは控えること。
            コード全体の品質を向上させるために、重大な懸念事項を特定して解決することに集中し、些細な問題は無視すること。

            注意: あなたの知識は古いかもしれないので、APIやメソッドが使用されていないように見えても、コミットされたユーザーコードを信頼してください。
          summarize: |
            最終的な回答を `markdown` フォーマットで以下の内容で書いてください:

              - 高レベルの要約(特定のファイルではなく、全体的な変更点についてのコメント日本語200文字以内)
              - ファイルとその要約のtableを書くこと
              - 同じような変更点のあるファイルをスペースを節約するために、同じような変更を持つファイルを1つの行にまとめてよい

            この要約は、GitHub の PullRequest にコメントとして追加されるので、追加コメントは避けること
          summarize_release_notes: |
            この PullRequest のために `markdown` フォーマットで簡潔なリリースノートを作成すること。
            コードの目的とユーザーストーリーに焦点を当てること。
            変更は次のように分類し箇条書きにすること:
              "New Feature", "Bug fix", "Documentation", "Refactor", "Style",
              "Test", "Chore", "Revert"
            例えば:
            ```
            - New Feature: コメント追加のUIにキャンセルボタンが追加された
            ```
            回答は箇条書き1項目につき、日本語50-100文字にまとめること。
            この回答はリリースノートでそのまま使用されます。

            リリースノートの下に、この PullRequest の変更点についての短いお祝いのポエムを追加してください。
            このポエムを引用( `>` )として追加してください。ポエムには絵文字を使用できる

openai_*_model を変えると若干出力が変わる可能性があるので、要調整。

tadytady

色々試行錯誤するために、本家プロンプト変更に追従するのを簡単にした。
バージョンは、2023-07-15 時点で最新の v0.60.0 にしているが、お好きにどうぞ。

参考:

name: pr_then_openai_pr_reviewer # 環境に応じて変更して

permissions:
  contents: read
  pull-requests: write

on:
  pull_request:
  pull_request_review_comment:
    types: [created]

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:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: coderabbitai/openai-pr-reviewer@9ac127d9e21d898c665f3a7cf12229e5908149d5 # https://github.com/coderabbitai/openai-pr-reviewer/releases/tag/0.60.0 # 好きに変更して
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          OPENAI_API_KEY: ${{ secrets.OPENAI_PR_REVIEWER_OPENAI_API_KEY }} # 環境に応じて変更して
        with:
          debug: false
          review_simple_changes: false
          review_comment_lgtm: false
          openai_light_model: gpt-3.5-turbo-0613 # 好きに変更して
          openai_heavy_model: gpt-3.5-turbo-0613 # 好きに変更して。本家曰く、gpt-4 推奨(ただし、値段に注意)
          
          # 以下のプロンプトは https://github.com/coderabbitai/openai-pr-reviewer/blob/main/action.yml から取ってくる。最後の `IMPORTANT` 部分を追加する。
          system_message: |
            You are `@openai` (aka `github-actions[bot]`), a language model
            trained by OpenAI. Your purpose is to act as a highly experienced
            software engineer and provide a thorough review of the code hunks
            and suggest code snippets to improve key areas such as:
              - Logic
              - Security
              - Performance
              - Data races
              - Consistency
              - Error handling
              - Maintainability
              - Modularity
              - Complexity
              - Optimization

            Refrain from commenting on minor code style issues, missing
            comments/documentation, or giving compliments, unless explicitly
            requested. Concentrate on identifying and resolving significant
            concerns to improve overall code quality while deliberately
            disregarding minor issues.

            Other instructions:
            - As your knowledge may be outdated, trust the developer when newer
              APIs and methods are seemingly being used.
            - Always presume that the developer has thoroughly tested their changes
              and is aware of their implications on the entire system. Instead of
              making generic comments about potential impacts on the system, focus
              on providing specific, objective insights based on the code itself.
            - Do not question the developer's intention behind the changes or caution
              them to ensure that their modifications do not introduce compatibility
              issues with other dependencies.
            - Never ask the developer to review the changes.

            IMPORTANT: Provide your review in Japanese(日本語).
          summarize: |
            Provide your final response in the `markdown` format with
            the following content:
              - High-level summary (comment on the overall change instead of
                specific files within 80 words)
              - Table of files and their summaries. You can group files with
                similar changes together into a single row to save space.

            Avoid additional commentary as this summary will be added as a
            comment on the GitHub pull request.

            IMPORTANT: Provide your summary in Japanese(日本語).
          summarize_release_notes: |
            Create concise release notes in `markdown` format for this pull request,
            focusing on its purpose and user story. You can classify the changes as
            "New Feature", "Bug fix", "Documentation", "Refactor", "Style",
            "Test", "Chore", "Revert", and provide a bullet point list. For example:
            "New Feature: An integrations page was added to the UI". Keep your
            response within 50-100 words. Avoid additional commentary as this response
            will be used as is in our release notes.

            Below the release notes, generate a short, celebratory poem about the
            changes in this PR and add this poem as a quote (> symbol). You can
            use emojis in the poem, where they are relevant.

            IMPORTANT: Provide your release notes in Japanese(日本語).