2023-07-06 00:21:08 +03:00
< div align = "center" >
2023-07-07 01:28:20 +03:00
< div align = "center" >
2023-07-06 17:41:19 +03:00
2023-07-20 15:32:16 +03:00
< img src = "./pics/logo-dark.png #gh -dark-mode-only" width = "330" />
< img src = "./pics/logo-light.png #gh -light-mode-only" width = "330" />< br />
2023-07-20 16:40:14 +03:00
Making pull requests less painful with an AI agent
2023-07-06 19:18:53 +03:00
< / div >
2023-07-06 17:41:19 +03:00
2023-07-16 16:36:11 +03:00
[](https://github.com/Codium-ai/pr-agent/blob/main/LICENSE)
2023-07-06 00:21:08 +03:00
[](https://discord.com/channels/1057273017547378788/1126104260430528613)
2023-07-20 17:36:40 +03:00
< a href = "https://github.com/Codium-ai/pr-agent/commits/main" >
< img alt = "GitHub" src = "https://img.shields.io/github/last-commit/Codium-ai/pr-agent/main?style=for-the-badge" height = "20" >
< / a >
2023-07-16 13:28:27 +03:00
< / div >
2023-07-16 17:41:23 +03:00
< div style = "text-align:left;" >
2023-07-16 13:28:27 +03:00
2023-07-20 16:40:14 +03:00
CodiumAI `PR-Agent` is an open-source tool aiming to help developers review pull requests faster and more efficiently. It automatically analyzes the pull request and can provide several types of feedback:
2023-07-06 00:21:08 +03:00
2023-07-20 12:09:58 +03:00
**Auto-Description**: Automatically generating PR description - title, type, summary, code walkthrough and PR labels.
2023-07-16 13:28:27 +03:00
\
2023-07-20 12:09:58 +03:00
**PR Review**: Adjustable feedback about the PR main theme, type, relevant tests, security issues, focus, score, and various suggestions for the PR content.
2023-07-16 13:28:27 +03:00
\
**Question Answering**: Answering free-text questions about the PR.
\
**Code Suggestion**: Committable code suggestions for improving the PR.
2023-07-06 17:41:19 +03:00
2023-07-16 19:25:10 +03:00
< h3 > Example results:< / h2 >
2023-07-06 00:21:08 +03:00
< / div >
2023-07-18 09:56:40 +03:00
< h4 > /describe:< / h4 >
2023-07-16 13:28:27 +03:00
< div align = "center" >
< p float = "center" >
2023-07-23 17:38:08 +03:00
< img src = "https://www.codium.ai/images/describe-2.gif" width = "800" >
2023-07-16 13:28:27 +03:00
< / p >
2023-07-16 17:32:48 +03:00
< / div >
2023-07-18 09:59:47 +03:00
< h4 > /review:< / h4 >
2023-07-16 21:12:36 +03:00
< div align = "center" >
< p float = "center" >
2023-07-23 17:38:08 +03:00
< img src = "https://www.codium.ai/images/review-2.gif" width = "800" >
2023-07-23 12:06:04 +03:00
< / p >
< / div >
2023-07-23 17:27:26 +03:00
< h4 > /reflect_and_review:< / h4 >
2023-07-23 12:06:04 +03:00
< div align = "center" >
< p float = "center" >
2023-07-23 17:27:26 +03:00
< img src = "https://www.codium.ai/images/reflect_and_review.gif" width = "800" >
2023-07-16 21:12:36 +03:00
< / p >
< / div >
2023-07-18 09:56:40 +03:00
< h4 > /ask:< / h4 >
2023-07-16 17:32:48 +03:00
< div align = "center" >
< p float = "center" >
2023-07-23 17:38:08 +03:00
< img src = "https://www.codium.ai/images/ask-2.gif" width = "800" >
2023-07-16 17:32:48 +03:00
< / p >
< / div >
2023-07-18 09:56:40 +03:00
< h4 > /improve:< / h4 >
2023-07-16 17:32:48 +03:00
< div align = "center" >
2023-07-16 13:28:27 +03:00
< p float = "center" >
2023-07-23 17:38:08 +03:00
< img src = "https://www.codium.ai/images/improve-2.gif" width = "800" >
2023-07-16 13:28:27 +03:00
< / p >
2023-07-06 00:21:08 +03:00
< / div >
2023-07-16 13:28:27 +03:00
< div align = "left" >
2023-07-06 00:21:08 +03:00
2023-07-19 15:31:29 +03:00
2023-07-16 14:18:48 +03:00
- [Overview ](#overview )
2023-07-19 15:31:29 +03:00
- [Try it now ](#try-it-now )
- [Installation ](#installation )
2023-07-06 19:52:44 +03:00
- [Usage and tools ](#usage-and-tools )
2023-07-16 14:59:40 +03:00
- [Configuration ](./CONFIGURATION.md )
2023-07-06 18:23:19 +03:00
- [How it works ](#how-it-works )
2023-07-06 17:41:19 +03:00
- [Roadmap ](#roadmap )
- [Similar projects ](#similar-projects )
2023-07-16 13:28:27 +03:00
< / div >
2023-07-06 00:21:08 +03:00
2023-07-06 08:44:08 +03:00
2023-07-16 14:18:48 +03:00
## Overview
2023-07-16 17:56:32 +03:00
`PR-Agent` offers extensive pull request functionalities across various git providers:
2023-07-17 02:39:58 +03:00
| | | GitHub | Gitlab | Bitbucket |
2023-07-17 08:18:42 +03:00
|-------|---------------------------------------------|:------:|:------:|:---------:|
| TOOLS | Review | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| | ⮑ Inline review | :white_check_mark: | :white_check_mark: | |
| | Ask | :white_check_mark: | :white_check_mark: | |
2023-07-18 13:17:30 +03:00
| | Auto-Description | :white_check_mark: | :white_check_mark: | |
2023-07-17 08:18:42 +03:00
| | Improve Code | :white_check_mark: | :white_check_mark: | |
2023-07-18 08:22:25 +03:00
| | Reflect and Review | :white_check_mark: | | |
2023-07-16 14:18:48 +03:00
| | | | | |
2023-07-17 08:18:42 +03:00
| USAGE | CLI | :white_check_mark: | :white_check_mark: | :white_check_mark: |
2023-07-24 15:05:24 +03:00
| | App / webhook | :white_check_mark: | :white_check_mark: | |
2023-07-23 17:04:41 +03:00
| | Tagging bot | :white_check_mark: | | |
2023-07-17 08:18:42 +03:00
| | Actions | :white_check_mark: | | |
2023-07-16 14:18:48 +03:00
| | | | | |
2023-07-17 08:18:42 +03:00
| CORE | PR compression | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| | Repo language prioritization | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| | Adaptive and token-aware< br / > file patch fitting | :white_check_mark: | :white_check_mark: | :white_check_mark: |
2023-07-19 18:33:38 +03:00
| | Incremental PR Review | :white_check_mark: | | |
2023-07-16 14:18:48 +03:00
2023-07-19 18:42:21 +03:00
Examples for invoking the different tools via the CLI:
2023-07-16 14:59:40 +03:00
- **Review**: python cli.py --pr-url=< pr_url > review
- **Describe**: python cli.py --pr-url=< pr_url > describe
- **Improve**: python cli.py --pr-url=< pr_url > improve
- **Ask**: python cli.py --pr-url=< pr_url > ask "Write me a poem about this PR"
2023-07-18 08:22:25 +03:00
- **Reflect**: python cli.py --pr-url=< pr_url > reflect
2023-07-16 14:18:48 +03:00
2023-07-16 14:59:40 +03:00
"< pr_url > " is the url of the relevant PR (for example: https://github.com/Codium-ai/pr-agent/pull/50).
2023-07-17 02:39:58 +03:00
In the [configuration ](./CONFIGURATION.md ) file you can select your git provider (GitHub, Gitlab, Bitbucket), and further configure the different tools.
2023-07-06 00:21:08 +03:00
2023-07-19 15:31:29 +03:00
## Try it now
Try GPT-4 powered PR-Agent on your public GitHub repository for free. Just mention `@CodiumAI-Agent` and add the desired command in any PR comment! The agent will generate a response based on your command.
2023-07-23 17:38:08 +03:00

2023-07-19 15:31:29 +03:00
2023-07-19 18:42:21 +03:00
To set up your own PR-Agent, see the [Installation ](#installation ) section
2023-07-19 15:31:29 +03:00
---
## Installation
2023-07-06 00:21:08 +03:00
2023-07-10 21:08:14 +03:00
To get started with PR-Agent quickly, you first need to acquire two tokens:
2023-07-06 17:41:19 +03:00
2023-07-06 00:21:08 +03:00
1. An OpenAI key from [here ](https://platform.openai.com/ ), with access to GPT-4.
2. A GitHub personal access token (classic) with the repo scope.
2023-07-19 15:31:29 +03:00
There are several ways to use PR-Agent:
2023-07-16 19:56:58 +03:00
- [Method 1: Use Docker image (no installation required) ](INSTALL.md#method-1-use-docker-image-no-installation-required )
2023-07-17 02:39:58 +03:00
- [Method 2: Run as a GitHub Action ](INSTALL.md#method-2-run-as-a-github-action )
2023-07-16 19:56:58 +03:00
- [Method 3: Run from source ](INSTALL.md#method-3-run-from-source )
- [Method 4: Run as a polling server ](INSTALL.md#method-4-run-as-a-polling-server )
2023-07-17 02:39:58 +03:00
- Request reviews by tagging your GitHub user on a PR
- [Method 5: Run as a GitHub App ](INSTALL.md#method-5-run-as-a-github-app )
2023-07-16 19:56:58 +03:00
- Allowing you to automate the review process on your private or public repositories
2023-07-16 19:58:34 +03:00
2023-07-06 00:21:08 +03:00
## Usage and Tools
2023-07-06 17:41:19 +03:00
2023-07-18 08:22:25 +03:00
**PR-Agent** provides five types of interactions ("tools"): `"PR Reviewer"` , `"PR Q&A"` , `"PR Description"` , `"PR Code Sueggestions"` and `"PR Reflect and Review"` .
2023-07-06 17:41:19 +03:00
2023-07-17 08:18:42 +03:00
- The "PR Reviewer" tool automatically analyzes PRs, and provides various types of feedback.
- The "PR Q& A" tool answers free-text questions about the PR.
2023-07-16 14:59:40 +03:00
- The "PR Description" tool automatically sets the PR Title and body.
2023-07-16 19:15:02 +03:00
- The "PR Code Suggestion" tool provide inline code suggestions for the PR that can be applied and committed.
2023-07-20 12:09:58 +03:00
- The "PR Reflect and Review" tool initiates a dialog with the user, asks them to reflect on the PR, and then provides a more focused review.
2023-07-06 00:21:08 +03:00
2023-07-06 18:19:06 +03:00
## How it works
2023-07-18 14:45:15 +03:00

2023-07-06 18:19:06 +03:00
2023-07-06 19:18:53 +03:00
Check out the [PR Compression strategy ](./PR_COMPRESSION.md ) page for more details on how we convert a code diff to a manageable LLM prompt
2023-07-06 00:21:08 +03:00
## Roadmap
2023-07-06 17:41:19 +03:00
2023-07-20 12:09:58 +03:00
- [ ] Support open-source models, as a replacement for OpenAI models. (Note - a minimal requirement for each open-source model is to have 8k+ context, and good support for generating JSON as an output)
2023-07-16 14:59:40 +03:00
- [x] Support other Git providers, such as Gitlab and Bitbucket.
2023-07-20 12:09:58 +03:00
- [ ] Develop additional logic for handling large PRs, and compressing git patches
2023-07-06 00:21:08 +03:00
- [ ] Add additional context to the prompt. For example, repo (or relevant files) summarization, with tools such a [ctags ](https://github.com/universal-ctags/ctags )
- [ ] Adding more tools. Possible directions:
2023-07-16 14:59:40 +03:00
- [x] PR description
- [x] Inline code suggestions
2023-07-18 08:22:25 +03:00
- [x] Reflect and review
2023-07-16 14:59:40 +03:00
- [ ] Enforcing CONTRIBUTING.md guidelines
2023-07-06 00:21:08 +03:00
- [ ] Performance (are there any performance issues)
- [ ] Documentation (is the PR properly documented)
- [ ] Rank the PR importance
- [ ] ...
## Similar Projects
2023-07-06 17:41:19 +03:00
2023-07-06 00:21:08 +03:00
- [CodiumAI - Meaningful tests for busy devs ](https://github.com/Codium-ai/codiumai-vscode-release )
- [Aider - GPT powered coding in your terminal ](https://github.com/paul-gauthier/aider )
2023-07-16 14:59:40 +03:00
- [openai-pr-reviewer ](https://github.com/coderabbitai/openai-pr-reviewer )
2023-07-06 00:21:08 +03:00
- [CodeReview BOT ](https://github.com/anc95/ChatGPT-CodeReview )
2023-07-06 17:51:01 +03:00
- [AI-Maintainer ](https://github.com/merwanehamadi/AI-Maintainer )