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-12-03 08:58:28 +02:00
< picture >
< source media = "(prefers-color-scheme: dark)" srcset = "https://codium.ai/images/pr_agent/logo-dark.png" width = "330" >
< source media = "(prefers-color-scheme: light)" srcset = "https://codium.ai/images/pr_agent/logo-light.png" width = "330" >
< img alt = "logo" >
< / picture >
< 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-10-02 11:59:56 +03:00
[](https://twitter.com/codiumai)
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-12-11 10:58:30 +02:00
CodiumAI `PR-Agent` is an open-source tool aiming to help developers review and handle pull requests faster and more efficiently. It automatically analyzes the pull request and can provide several types of commands:
2023-07-06 00:21:08 +03:00
2023-09-29 09:47:13 +03:00
‣ **Auto Description ([`/describe`](./docs/DESCRIBE.md))** : Automatically generating PR description - title, type, summary, code walkthrough and labels.
2023-07-16 13:28:27 +03:00
\
2023-09-29 09:47:13 +03:00
‣ **Auto Review ([`/review`](./docs/REVIEW.md))** : Adjustable feedback about the PR main theme, type, relevant tests, security issues, score, and various suggestions for the PR content.
2023-07-16 13:28:27 +03:00
\
2023-09-29 09:47:13 +03:00
‣ **Question Answering ([`/ask ...`](./docs/ASK.md))** : Answering free-text questions about the PR.
2023-07-16 13:28:27 +03:00
\
2023-09-29 09:47:13 +03:00
‣ **Code Suggestions ([`/improve`](./docs/IMPROVE.md))** : Committable code suggestions for improving the PR.
2023-07-30 22:04:59 +03:00
\
2023-09-29 09:47:13 +03:00
‣ **Update Changelog ([`/update_changelog`](./docs/UPDATE_CHANGELOG.md))** : Automatically updating the CHANGELOG.md file with the PR changes.
2023-09-13 07:46:43 +03:00
\
2023-12-11 10:58:30 +02:00
‣ **Find Similar Issue ([`/similar_issue`](./docs/SIMILAR_ISSUE.md))** : Automatically retrieves and presents similar issues.
2023-10-01 13:52:00 +03:00
\
2023-10-02 10:59:03 +03:00
‣ **Add Documentation ([`/add_docs`](./docs/ADD_DOCUMENTATION.md))** : Automatically adds documentation to un-documented functions/classes in the PR.
2023-10-29 13:58:01 +02:00
\
‣ **Generate Custom Labels ([`/generate_labels`](./docs/GENERATE_CUSTOM_LABELS.md))** : Automatically suggests custom labels based on the PR code changes.
2023-09-03 11:16:20 +03:00
2023-12-11 10:58:30 +02:00
See the [Installation Guide ](./INSTALL.md ) for instructions how to install and run the tool on different git platforms.
2023-10-26 12:10:14 +03:00
2023-12-11 10:58:30 +02:00
See the [Usage Guide ](./Usage.md ) for instructions how to run the PR-Agent commands via different interfaces, including _CLI_ , _online usage_ , or by _automatically triggering_ them when a new PR is opened.
2023-10-26 12:10:14 +03:00
2023-12-11 10:58:30 +02:00
See the [Tools Guide ](./docs/TOOLS_GUIDE.md ) for detailed description of the different tools (tools are run via the commands).
2023-09-03 11:16:20 +03:00
< h3 > Example results:< / h3 >
2023-07-06 00:21:08 +03:00
< / div >
2023-08-28 08:41:02 +03:00
< h4 >< a href = "https://github.com/Codium-ai/pr-agent/pull/229 #issuecomment -1687561986" > /describe:</ a ></ 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-06 00:21:08 +03:00
2023-08-28 08:41:02 +03:00
< h4 >< a href = "https://github.com/Codium-ai/pr-agent/pull/229 #issuecomment -1695021901" > /review:</ a ></ 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-06 00:21:08 +03:00
2023-09-01 19:40:38 +03:00
[//]: # (< h4 >< a href = "https://github.com/Codium-ai/pr-agent/pull/78 #issuecomment -1639739496" > /reflect_and_review:</ a ></ h4 > )
2023-07-19 15:31:29 +03:00
2023-09-01 19:40:38 +03:00
[//]: # (< div align = "center" > )
[//]: # (< p float = "center" > )
2023-07-19 15:31:29 +03:00
2023-09-01 19:40:38 +03:00
[//]: # (< 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 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 18:23:19 +03:00
- [How it works ](#how-it-works )
2023-09-19 12:54:33 +05:30
- [Why use PR-Agent? ](#why-use-pr-agent )
2023-07-06 17:41:19 +03:00
- [Roadmap ](#roadmap )
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-09-05 09:09:35 +01:00
| | | GitHub | Gitlab | Bitbucket | CodeCommit | Azure DevOps | Gerrit |
|-------|---------------------------------------------|:------:|:------:|:---------:|:----------:|:----------:|:----------:|
| TOOLS | Review | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
2023-10-01 19:55:41 +03:00
| | ⮑ Incremental | :white_check_mark: | | | | | |
2023-09-05 09:09:35 +01:00
| | Ask | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
2023-09-06 09:32:43 +05:30
| | Auto-Description | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| | Improve Code | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: |
| | ⮑ Extended | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: |
2023-09-19 12:54:33 +05:30
| | Reflect and Review | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: | :white_check_mark: |
2023-10-07 09:57:51 -04:00
| | Update CHANGELOG.md | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | |
2023-09-13 07:46:43 +03:00
| | Find similar issue | :white_check_mark: | | | | | |
2023-10-01 13:52:00 +03:00
| | Add Documentation | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | :white_check_mark: |
2023-10-29 13:58:01 +02:00
| | Generate Labels | :white_check_mark: | :white_check_mark: | | | | |
2023-08-31 11:47:51 +00:00
| | | | | | | |
| 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-05 09:09:35 +01:00
| | Web server | | | | | | :white_check_mark: |
2023-08-31 11:47:51 +00:00
| | | | | | | |
2023-09-05 09:09:35 +01:00
| CORE | PR compression | :white_check_mark: | :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: | :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: | :white_check_mark: |
| | Multiple models support | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| | Incremental PR Review | :white_check_mark: | | | | | |
2023-07-16 14:18:48 +03:00
2023-10-01 09:00:58 +03: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-06 00:21:08 +03:00
2023-07-19 15:31:29 +03:00
## Try it now
2023-12-11 10:58:30 +02: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.
2023-09-01 19:40:38 +03:00
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 15:31:29 +03:00
2023-07-23 17:38:08 +03:00

2023-07-19 15:31:29 +03:00
2023-09-01 19:40:38 +03:00
To set up your own PR-Agent, see the [Installation ](#installation ) section below.
2023-12-11 10:58:30 +02:00
Note that when you set your own PR-Agent or use CodiumAI hosted PR-Agent, you do not need to mention `@CodiumAI-Agent ...` . Instead, directly start with the command, e.g., `/ask ...` .
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-09-02 09:19:35 +03: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 19:56:58 +03:00
- [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-08-28 08:41:02 +03: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-09-05 18:31:29 +03:00
- [Method 8: Run a GitLab webhook server ](INSTALL.md#method-8---run-a-gitlab-webhook-server )
2023-09-15 16:05:55 +05:30
- [Method 9: Run as a Bitbucket Pipeline ](INSTALL.md#method-9-run-as-a-bitbucket-pipeline )
2023-07-06 00:21:08 +03:00
2023-07-06 18:19:06 +03:00
## How it works
2023-08-04 12:13:04 +03:00
The following diagram illustrates PR-Agent tools and their flow:
2023-12-03 09:12:10 +02: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
2023-07-27 08:13:21 +03: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 12:13:04 +03:00
Here are some advantages of PR-Agent:
2023-07-27 08:13:21 +03: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 09:19:35 +03: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 17:15:11 -04: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 08:13:21 +03:00
- We are open-source, and welcome contributions from the community.
2023-07-06 00:21:08 +03:00
## Roadmap
2023-07-06 17:41:19 +03:00
2023-08-07 09:04:52 +03:00
- [x] Support additional models, as a replacement for OpenAI (see [here ](https://github.com/Codium-ai/pr-agent/pull/172 ))
2023-08-28 08:31:56 +03:00
- [x] Develop additional logic for handling large PRs (see [here ](https://github.com/Codium-ai/pr-agent/pull/229 ))
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 )
2023-09-13 07:46:43 +03:00
- [x] PR-Agent for issues
2023-07-06 00:21:08 +03:00
- [ ] 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-08-07 09:04:52 +03:00
- [x] Rank the PR (see [here ](https://github.com/Codium-ai/pr-agent/pull/89 ))
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)
2023-10-01 19:57:34 +03:00
- [x] Documentation (is the PR properly documented)
2023-07-06 00:21:08 +03:00
- [ ] ...
2023-10-26 11:56:03 +03:00
See the [Release notes ](./RELEASE_NOTES.md ) for updates on the latest changes.
2023-07-06 00:21:08 +03:00
## Similar Projects
2023-07-06 17:41:19 +03:00
2023-08-28 22:08:08 +03: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-06 00:21:08 +03:00
- [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-09-06 10:46:25 +03:00
- [AI-Maintainer ](https://github.com/merwanehamadi/AI-Maintainer )
2023-10-26 11:56:03 +03:00
## Data Privacy
2023-12-03 09:12:10 +02:00
If you use a self-hosted PR-Agent with your OpenAI API key, it is between you and OpenAI. You can read their API data privacy policy here:
2023-10-26 11:56:03 +03:00
https://openai.com/enterprise-privacy
2023-12-03 09:12:10 +02:00
When using a PR-Agent app hosted by CodiumAI, we will not store any of your data, nor will we used it for training.
You will also benefit from an OpenAI account with zero data retention.
2023-09-14 11:53:47 +03:00
## Links
[](https://discord.gg/kG35uSHDBc)
- Discord community: https://discord.gg/kG35uSHDBc
- CodiumAI site: https://codium.ai
- Blog: https://www.codium.ai/blog/
- Troubleshooting: https://www.codium.ai/blog/technical-faq-and-troubleshooting/
- Support: support@codium .ai