A code review bot powered by ChatGPT
Install: apps/cr-gpt;
- Go to the repo homepage which you want integrate this bot
- click
settings - click
actionsundersecrets and variables - Change to
Variablestab, create a new variableOPENAI_API_KEYwith the value of your open api key (For Github Action integration, set it in secrets)
- The robot will automatically do the code review when you create a new Pull request, the review information will show in the pr timeline / file changes part.
- After
git pushupdate the pull request, cr bot will re-review the changed files
example:
- add the
OPENAI_API_KEYto your github actions secrets - create
.github/workflows/cr.ymladd bellow content
name: Code Review
permissions:
contents: read
pull-requests: write
models: true # if you choose use github models, set this to be true
on:
pull_request:
types: [opened, reopened, synchronize]
jobs:
test:
# if: ${{ contains(github.event.*.labels.*.name, 'gpt review') }} # Optional; to run only when a label is attached
runs-on: ubuntu-latest
steps:
- uses: anc95/ChatGPT-CodeReview@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# if use github models https://github.com/marketplace/models
USE_GITHUB_MODELS: true
MODEL: openai/gpt-4o
# else if use azure deployment
AZURE_API_VERSION: xx
AZURE_DEPLOYMENT: xx
# else use standard llm model
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
OPENAI_API_ENDPOINT: https://api.openai.com/v1
MODEL: gpt-3.5-turbo # https://platform.openai.com/docs/models
# common
LANGUAGE: Chinese
PROMPT: # example: Please check if there are any confusions or irregularities in the following code diff:
top_p: 1 # https://platform.openai.com/docs/api-reference/chat/create#chat/create-top_p
temperature: 1 # https://platform.openai.com/docs/api-reference/chat/create#chat/create-temperature
max_tokens: 10000
MAX_PATCH_LENGTH: 10000 # if the patch/diff length is large than MAX_PATCH_LENGTH, will be ignored and won't review. By default, with no MAX_PATCH_LENGTH set, there is also no limit for the patch/diff length.
IGNORE_PATTERNS: /node_modules/**/*,*.md # glob pattern or regex pattern to ignore files, separated by comma
INCLUDE_PATTERNS: *.js,*.ts # glob pattern or regex pattern to include files, separated by comma- clone code
- copy
.env.exampleto.env, and fill the env variables - install deps and run
npm i
npm i -g pm2
npm run build
pm2 start pm2.config.cjsprobot for more detail
# Install dependencies
npm install
# Build code
npm run build
# Run the bot
npm run start# 1. Build container
docker build -t cr-bot .
# 2. Start container
docker run -e APP_ID=<app-id> -e PRIVATE_KEY=<pem-value> cr-botIf you have suggestions for how cr-bot could be improved, or want to report a bug, open an issue! We'd love all and any contributions.
For more, check out the Contributing Guide.
this project is inpired by codereview.gpt
