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:
Auto-Description: Automatically generating PR description - title, type, summary, code walkthrough and PR labels.
PR Review: Adjustable feedback about the PR main theme, type, relevant tests, security issues, focus, score, and various suggestions for the PR content.
Question Answering: Answering free-text questions about the PR.
Code Suggestion: Committable code suggestions for improving the PR.
PR-Agent
offers extensive pull request functionalities across various git providers:
GitHub | Gitlab | Bitbucket | ||
---|---|---|---|---|
TOOLS | Review | โ | โ | โ |
โฎ Inline review | โ | โ | ||
Ask | โ | โ | ||
Auto-Description | โ | โ | ||
Improve Code | โ | โ | ||
Reflect and Review | โ | |||
Update CHANGELOG.md | โ | |||
USAGE | CLI | โ | โ | โ |
App / webhook | โ | โ | ||
Tagging bot | โ | |||
Actions | โ | |||
CORE | PR compression | โ | โ | โ |
Repo language prioritization | โ | โ | โ | |
Adaptive and token-aware file patch fitting |
โ | โ | โ | |
Incremental PR Review | โ |
Examples for invoking the different tools via the CLI:
- 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"
- Reflect: python cli.py --pr-url=<pr_url> reflect
- Update changelog: python cli.py --pr-url=<pr_url> update_changelog
"<pr_url>" is the url of the relevant PR (for example: Codium-ai#50).
In the configuration file you can select your git provider (GitHub, Gitlab, Bitbucket), and further configure the different tools.
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.
To set up your own PR-Agent, see the Installation section
To get started with PR-Agent quickly, you first need to acquire two tokens:
- An OpenAI key from here, with access to GPT-4.
- A GitHub personal access token (classic) with the repo scope.
There are several ways to use PR-Agent:
- Method 1: Use Docker image (no installation required)
- Method 2: Run as a GitHub Action
- Method 3: Run from source
- Method 4: Run as a polling server
- Request reviews by tagging your GitHub user on a PR
- Method 5: Run as a GitHub App
- Allowing you to automate the review process on your private or public repositories
PR-Agent provides five types of interactions ("tools"): "PR Reviewer"
, "PR Q&A"
, "PR Description"
, "PR Code Sueggestions"
and "PR Reflect and Review"
.
- 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.
- The "PR Description" tool automatically sets the PR Title and body.
- The "PR Code Suggestion" tool provide inline code suggestions for the PR that can be applied and committed.
- 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.
Check out the PR Compression strategy page for more details on how we convert a code diff to a manageable LLM prompt
A reasonable question that can be asked is: "Why use PR-Agent? What make it stand out from existing tools?"
Here are some of the reasons why:
- 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 is a core ability that enables to effectively tackle both short and long PRs.
- Our JSON prompting strategy enables to have modular, customizable tools. For example, the '/review' tool categories can be controlled via the configuration file. Adding additional categories is easy and accessible.
- We support multiple git providers (GitHub, Gitlab, Bitbucket), and multiple ways to use the tool (CLI, GitHub Action, Docker, ...).
- We are open-source, and welcome contributions from the community.
- 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)
- Support other Git providers, such as Gitlab and Bitbucket.
- Develop additional logic for handling large PRs, and compressing git patches
- Add additional context to the prompt. For example, repo (or relevant files) summarization, with tools such a ctags
- Adding more tools. Possible directions:
- PR description
- Inline code suggestions
- Reflect and review
- Enforcing CONTRIBUTING.md guidelines
- Performance (are there any performance issues)
- Documentation (is the PR properly documented)
- Rank the PR importance
- ...