2023-07-05 21:21:08 +00:00
< div align = "center" >
2023-07-06 22:28:20 +00:00
< div align = "center" >
2023-07-06 14:41:19 +00:00
2023-07-20 12:32:16 +00: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 13:40:14 +00:00
Making pull requests less painful with an AI agent
2023-07-06 16:18:53 +00:00
< / div >
2023-07-06 14:41:19 +00:00
2023-07-16 13:36:11 +00:00
[](https://github.com/Codium-ai/pr-agent/blob/main/LICENSE)
2023-07-05 21:21:08 +00:00
[](https://discord.com/channels/1057273017547378788/1126104260430528613)
2023-07-20 14:36:40 +00: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 10:28:27 +00:00
< / div >
2023-07-16 14:41:23 +00:00
< div style = "text-align:left;" >
2023-07-16 10:28:27 +00:00
2023-08-28 05:31:56 +00: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 PR feedback:
2023-07-05 21:21:08 +00:00
2023-09-03 08:16:20 +00:00
**Auto Description (/describe)**: Automatically generating [PR description ](https://github.com/Codium-ai/pr-agent/pull/229#issue-1860711415 ) - title, type, summary, code walkthrough and labels.
2023-07-16 10:28:27 +00:00
\
2023-09-03 08:16:20 +00:00
**Auto Review (/review)**: [Adjustable feedback ](https://github.com/Codium-ai/pr-agent/pull/229#issuecomment-1695022908 ) about the PR main theme, type, relevant tests, security issues, score, and various suggestions for the PR content.
2023-07-16 10:28:27 +00:00
\
2023-09-03 08:16:20 +00:00
**Question Answering (/ask ...)**: Answering [free-text questions ](https://github.com/Codium-ai/pr-agent/pull/229#issuecomment-1695021332 ) about the PR.
2023-07-16 10:28:27 +00:00
\
2023-09-03 08:16:20 +00:00
**Code Suggestions (/improve)**: [Committable code suggestions ](https://github.com/Codium-ai/pr-agent/pull/229#discussion_r1306919276 ) for improving the PR.
2023-07-30 19:04:59 +00:00
\
2023-09-03 08:16:20 +00:00
**Update Changelog (/update_changelog)**: Automatically updating the CHANGELOG.md file with the [PR changes ](https://github.com/Codium-ai/pr-agent/pull/168#discussion_r1282077645 ).
2023-07-30 18:54:07 +00:00
2023-09-03 08:16:20 +00:00
See the [usage guide ](./Usage.md ) for instructions how to run the different tools from [CLI ](./Usage.md#working-from-a-local-repo-cli ), or by [online usage ](./Usage.md#online-usage ).
< h3 > Example results:< / h3 >
2023-07-05 21:21:08 +00:00
< / div >
2023-08-28 05:41:02 +00:00
< h4 > < a href = "https://github.com/Codium-ai/pr-agent/pull/229#issuecomment-1687561986" > /describe:< / a > < / h4 >
2023-07-16 10:28:27 +00:00
< div align = "center" >
< p float = "center" >
2023-07-23 14:38:08 +00:00
< img src = "https://www.codium.ai/images/describe-2.gif" width = "800" >
2023-07-16 10:28:27 +00:00
< / p >
2023-07-16 14:32:48 +00:00
< / div >
2023-07-05 21:21:08 +00:00
2023-09-03 08:16:20 +00:00
< h4 > < a href = "https://github.com/Codium-ai/pr-agent/pull/229#issuecomment-1695021901" > /review:< / a > < / h4 >
< div align = "center" >
< p float = "center" >
< img src = "https://www.codium.ai/images/review-2.gif" width = "800" >
< / p >
< / div >
2023-09-01 16:40:38 +00:00
[//]: # (< h4 > < a href = "https://github.com/Codium-ai/pr-agent/pull/78#issuecomment-1639739496" > /reflect_and_review:< / a > < / h4 > )
2023-07-19 12:31:29 +00:00
2023-09-01 16:40:38 +00:00
[//]: # (< div align = "center" > )
[//]: # (< p float = "center" > )
[//]: # (< img src = "https://www.codium.ai/images/reflect_and_review.gif" width = "800" > )
[//]: # (< / p > )
[//]: # (< / div > )
[//]: # (< h4 > < a href = "https://github.com/Codium-ai/pr-agent/pull/229#issuecomment-1695020538" > /ask:< / a > < / h4 > )
[//]: # (< div align = "center" > )
[//]: # (< p float = "center" > )
[//]: # (< img src = "https://www.codium.ai/images/ask-2.gif" width = "800" > )
[//]: # (< / p > )
[//]: # (< / div > )
[//]: # (< h4 > < a href = "https://github.com/Codium-ai/pr-agent/pull/229#issuecomment-1695024952" > /improve:< / a > < / h4 > )
[//]: # (< div align = "center" > )
[//]: # (< p float = "center" > )
[//]: # (< img src = "https://www.codium.ai/images/improve-2.gif" width = "800" > )
[//]: # (< / p > )
[//]: # (< / div > )
< div align = "left" >
## Table of Contents
2023-07-16 11:18:48 +00:00
- [Overview ](#overview )
2023-07-19 12:31:29 +00:00
- [Try it now ](#try-it-now )
- [Installation ](#installation )
2023-09-02 06:19:35 +00:00
- [Usage guide ](./Usage.md )
2023-07-06 15:23:19 +00:00
- [How it works ](#how-it-works )
2023-07-27 05:13:21 +00:00
- [Why use PR-Agent ](#why-use-pr-agent )
2023-07-06 14:41:19 +00:00
- [Roadmap ](#roadmap )
2023-07-16 10:28:27 +00:00
< / div >
2023-07-05 21:21:08 +00:00
2023-07-06 05:44:08 +00:00
2023-07-16 11:18:48 +00:00
## Overview
2023-07-16 14:56:32 +00:00
`PR-Agent` offers extensive pull request functionalities across various git providers:
2023-08-31 11:47:51 +00:00
| | | GitHub | Gitlab | Bitbucket | CodeCommit | Azure DevOps |
|-------|---------------------------------------------|:------:|:------:|:---------:|:----------:|:----------:|
| TOOLS | Review | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| | Ask | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark:
| | Auto-Description | :white_check_mark: | :white_check_mark: | | :white_check_mark: | :white_check_mark: |
| | Improve Code | :white_check_mark: | :white_check_mark: | | | |
| | ⮑ Extended | :white_check_mark: | :white_check_mark: | | | |
| | Reflect and Review | :white_check_mark: | | | | :white_check_mark: |
| | Update CHANGELOG.md | :white_check_mark: | | | | |
| | | | | | | |
| USAGE | CLI | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| | App / webhook | :white_check_mark: | :white_check_mark: | | | |
| | Tagging bot | :white_check_mark: | | | | |
| | Actions | :white_check_mark: | | | | |
| | | | | | | |
2023-09-01 16:40:38 +00:00
| CORE | PR compression | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| | Repo language prioritization | :white_check_mark: | :white_check_mark: | :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: | :white_check_mark: | :white_check_mark: |
| | Multiple models support | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
2023-08-31 11:47:51 +00:00
| | Incremental PR Review | :white_check_mark: | | | | |
2023-07-16 11:18:48 +00:00
2023-09-02 06:19:35 +00:00
Review the ** [usage guide ](./Usage.md )** section for detailed instructions how to use the different tools, select the relevant git provider (GitHub, Gitlab, Bitbucket,...), and adjust the configuration file to your needs.
2023-07-05 21:21:08 +00:00
2023-07-19 12:31:29 +00:00
## Try it now
2023-09-01 16:40:38 +00:00
You can try GPT-4 powered PR-Agent, on your public GitHub repository, instantly. Just mention `@CodiumAI-Agent` and add the desired command in any PR comment. The agent will generate a response based on your command.
For example, add a comment to any pull request with the following text:
```
@CodiumAI -Agent /review
```
and the agent will respond with a review of your PR
2023-07-19 12:31:29 +00:00
2023-07-23 14:38:08 +00:00

2023-07-19 12:31:29 +00:00
2023-09-01 16:40:38 +00:00
To set up your own PR-Agent, see the [Installation ](#installation ) section below.
2023-07-19 12:31:29 +00:00
---
## Installation
2023-07-05 21:21:08 +00:00
2023-07-10 18:08:14 +00:00
To get started with PR-Agent quickly, you first need to acquire two tokens:
2023-07-06 14:41:19 +00:00
2023-07-05 21:21:08 +00: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 12:31:29 +00:00
There are several ways to use PR-Agent:
2023-07-16 16:56:58 +00:00
- [Method 1: Use Docker image (no installation required) ](INSTALL.md#method-1-use-docker-image-no-installation-required )
2023-09-02 06:19:35 +00:00
- [Method 2: Run from source ](INSTALL.md#method-2-run-from-source )
- [Method 3: Run as a GitHub Action ](INSTALL.md#method-3-run-as-a-github-action )
2023-07-16 16:56:58 +00:00
- [Method 4: Run as a polling server ](INSTALL.md#method-4-run-as-a-polling-server )
2023-07-16 23:39:58 +00: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 16:56:58 +00:00
- Allowing you to automate the review process on your private or public repositories
2023-08-28 05:41:02 +00:00
- [Method 6: Deploy as a Lambda Function ](INSTALL.md#method-6---deploy-as-a-lambda-function )
- [Method 7: AWS CodeCommit ](INSTALL.md#method-7---aws-codecommit-setup )
2023-07-05 21:21:08 +00:00
2023-07-06 15:19:06 +00:00
## How it works
2023-08-04 09:13:04 +00:00
The following diagram illustrates PR-Agent tools and their flow:
2023-07-18 11:45:15 +00:00

2023-07-06 15:19:06 +00:00
2023-07-06 16:18:53 +00: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-05 21:21:08 +00:00
2023-07-27 05:13:21 +00:00
## Why use PR-Agent?
A reasonable question that can be asked is: `"Why use PR-Agent? What make it stand out from existing tools?"`
2023-08-04 09:13:04 +00:00
Here are some advantages of PR-Agent:
2023-07-27 05:13:21 +00:00
- We emphasize **real-life practical usage** . Each tool (review, improve, ask, ...) has a single GPT-4 call, no more. We feel that this is critical for realistic team usage - obtaining an answer quickly (~30 seconds) and affordably.
- Our [PR Compression strategy ](./PR_COMPRESSION.md ) is a core ability that enables to effectively tackle both short and long PRs.
2023-09-02 06:19:35 +00:00
- Our JSON prompting strategy enables to have **modular, customizable tools** . For example, the '/review' tool categories can be controlled via the [configuration ](pr_agent/settings/configuration.toml ) file. Adding additional categories is easy and accessible.
2023-08-22 21:15:11 +00:00
- We support **multiple git providers** (GitHub, Gitlab, Bitbucket, CodeCommit), **multiple ways** to use the tool (CLI, GitHub Action, GitHub App, Docker, ...), and **multiple models** (GPT-4, GPT-3.5, Anthropic, Cohere, Llama2).
2023-07-27 05:13:21 +00:00
- We are open-source, and welcome contributions from the community.
2023-07-05 21:21:08 +00:00
## Roadmap
2023-07-06 14:41:19 +00:00
2023-08-07 06:04:52 +00:00
- [x] Support additional models, as a replacement for OpenAI (see [here ](https://github.com/Codium-ai/pr-agent/pull/172 ))
2023-08-28 05:31:56 +00:00
- [x] Develop additional logic for handling large PRs (see [here ](https://github.com/Codium-ai/pr-agent/pull/229 ))
2023-07-05 21:21:08 +00: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 )
2023-08-28 05:31:56 +00:00
- [ ] PR-Agent for issues, and just for pull requests
2023-07-05 21:21:08 +00:00
- [ ] Adding more tools. Possible directions:
2023-07-16 11:59:40 +00:00
- [x] PR description
- [x] Inline code suggestions
2023-07-18 05:22:25 +00:00
- [x] Reflect and review
2023-08-07 06:04:52 +00:00
- [x] Rank the PR (see [here ](https://github.com/Codium-ai/pr-agent/pull/89 ))
2023-07-16 11:59:40 +00:00
- [ ] Enforcing CONTRIBUTING.md guidelines
2023-07-05 21:21:08 +00:00
- [ ] Performance (are there any performance issues)
- [ ] Documentation (is the PR properly documented)
- [ ] ...
## Similar Projects
2023-07-06 14:41:19 +00:00
2023-08-28 19:08:08 +00:00
- [CodiumAI - Meaningful tests for busy devs ](https://github.com/Codium-ai/codiumai-vscode-release ) (although various capabilities are much more advanced in the CodiumAI IDE plugins)
2023-07-05 21:21:08 +00:00
- [Aider - GPT powered coding in your terminal ](https://github.com/paul-gauthier/aider )
2023-07-16 11:59:40 +00:00
- [openai-pr-reviewer ](https://github.com/coderabbitai/openai-pr-reviewer )
2023-07-05 21:21:08 +00:00
- [CodeReview BOT ](https://github.com/anc95/ChatGPT-CodeReview )
2023-08-31 11:47:51 +00:00
- [AI-Maintainer ](https://github.com/merwanehamadi/AI-Maintainer )