We're excited to announce a significant development in our openai-pr-reviewer project. Built on the strong foundation of this open-source work, we're launching a new professional version at coderabbit.ai, where we will be focusing our future development.CodeRabbit promises additional features , dedicated customer support and emphasizes our commitment to enhancing the quality of code reviews.
In the coming days, we will be rolling out more features in CodeRabbit designed to revolutionize your code review process. While CodeRabbit keeps the spirit of the open-source project, it will introduce enhancements based on user feedback and our future-oriented vision. A prime area of focus will continue to be the enhancement of review quality, ensuring that your coding process becomes increasingly efficient and effective.
We extend our heartfelt gratitude to our open-source contributors, whose efforts have been vital in shaping this project. We invite you to visit coderabbit.ai to explore Coderabbit and experience the forthcoming value-additions to your coding workflow. We're offering a free trial for you to get started.
Remember, the core project will continue to remain open-source and accessible to all. However, for those who wish to further tailor the application to their unique needs, we encourage you to request customization options through coderabbit.ai.
Your ongoing support and trust keep us inspired. We're excited about this next phase and we always welcome your feedback and suggestions. We look forward to continuing this enriching journey with you.
Refer the section below for our open-source project.
This OpenAI ChatGPT-based GitHub Action provides a summary, release notes and review of pull requests. The unique features of this action are:
- Line-by-line code change suggestions: This action reviews the changes line by line and provides code change suggestions that can be directly committed from the GitHub UI.
- Continuous, incremental reviews: Reviews are performed on each commit within a pull request, rather than a one-time review on the entire pull request.
- Cost-effective and reduced noise: Incremental reviews save on OpenAI costs and reduce noise by tracking changed files between commits and the base of the pull request.
- "Light" model for summary: Designed to be used with a "light"
summarization model (e.g.
gpt-3.5-turbo
) and a "heavy" review model (e.g.gpt-4
). For best results, usegpt-4
as the "heavy" model, as thorough code review needs strong reasoning abilities. - Chat with bot: Supports conversation with the bot in the context of lines of code or entire files, useful for providing context, generating test cases, and reducing code complexity.
- Smart review skipping: By default, skips in-depth review for simple
changes (e.g. typo fixes) and when changes look good for the most part. It can
be disabled by setting
review_simple_changes
andreview_comment_lgtm
totrue
. - Customizable prompts: Tailor the
system_message
,summarize
, andsummarize_release_notes
prompts to focus on specific aspects of the review process or even change the review objective.
Add the below file to your repository at
.github/workflows/openai-pr-reviewer.yml
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@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
with:
debug: false
review_simple_changes: false
review_comment_lgtm: false
You can reply to a review comment made by this action and get a response based
on the diff context. Additionally, you can invite the bot to a conversation by
tagging it in the comment (@openai
).
Example:
@openai Please generate a test plan for this file.
Note: A review comment is a comment made on a diff or a file in the pull request.
Sometimes it is useful to ignore a PR. For example, if you are using this action to review documentation, you can ignore PRs that only change the documentation. To ignore a PR, add the following keyword in the PR description:
@openai: ignore
GITHUB_TOKEN
: This should already be available to the GitHub Action environment. This is used to add comments to the pull request.OPENAI_API_KEY
: use this to authenticate with OpenAI API. You can get one here. Please add this key to your GitHub Action secrets.OPENAI_API_ORG
: (optional) use this to use the specified organization with OpenAI API if you have multiple. Please add this key to your GitHub Action secrets.
At FluxNinja, we use gpt-3.5-turbo
for lighter tasks such as summarizing the
changes (openai_light_model
in configuration) and gpt-4
for more complex
review and commenting tasks (openai_heavy_model
in configuration).
Costs: gpt-3.5-turbo
is dirt cheap. gpt-4
is orders of magnitude more
expensive, but the results are vastly superior. We are typically spending $20 a
day for a 20 developer team with gpt-4
based review and commenting.
See: action.yml
Tip: You can change the bot personality by configuring the system_message
value. For example, to review docs/blog posts, you can use the following prompt:
Blog Reviewer Prompt
system_message: |
You are `@openai` (aka `github-actions[bot]`), a language model
trained by OpenAI. Your purpose is to act as a highly experienced
DevRel (developer relations) professional with focus on cloud-native
infrastructure.
Company context -
FluxNinja is a cloud-native intelligent load management platform.
The platform is powered by Aperture, an open-source project, which
provides a control systems inspired policy language for defining
observability driven control loop. FluxNinja's load management,
such as prioritized load shedding and load-based autoscaling,
ensures system stability. FluxNinja ARC, the commercial solution,
offers advanced analytics, intelligent alerting, and policy
visualization.
When reviewing or generating content focus on key areas such as -
- Accuracy
- Relevance
- Clarity
- Technical depth
- Call-to-action
- SEO optimization
- Brand consistency
- Grammar and prose
- Typos
- Hyperlink suggestions
- Graphics or images (suggest Dall-E image prompts if needed)
- Empathy
- Engagement
Any suggestions or pull requests for improving the prompts are highly appreciated.
First, you'll need to have a reasonably modern version of
node
handy, tested with node 16.
Install the dependencies
$ npm install
Build the typescript and package it for distribution
$ npm run build && npm run package
GitHub Actions limits the access of secrets from forked repositories. To enable
this feature, you need to use the pull_request_target
event instead of
pull_request
in your workflow file. Note that with pull_request_target
, you
need extra configuration to ensure checking out the right commit:
name: Code Review
permissions:
contents: read
pull-requests: write
on:
pull_request_target:
types: [opened, synchronize, reopened]
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@latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
with:
debug: false
review_simple_changes: false
review_comment_lgtm: false
See also: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target
Set debug: true
in the workflow file to enable debug mode, which will show the
messages
- Your code (files, diff, PR title/description) will be sent to OpenAI's servers for processing. Please check with your compliance team before using this on your private code repositories.
- OpenAI's API is used instead of ChatGPT session on their portal. OpenAI API has a more conservative data usage policy compared to their ChatGPT offering.
- This action is not affiliated with OpenAI.