2023-09-02 09:19:35 +03:00
## Usage guide
2023-07-16 14:59:40 +03:00
2023-09-02 09:43:46 +03:00
### Table of Contents
- [Introduction ](#introduction )
- [Working from a local repo (CLI) ](#working-from-a-local-repo-cli )
- [Online usage ](#online-usage )
- [Working with GitHub App ](#working-with-github-app )
- [Working with GitHub Action ](#working-with-github-action )
- [Appendix - additional configurations walkthrough ](#appendix---additional-configurations-walkthrough )
2023-09-02 09:19:35 +03:00
### Introduction
There are 3 basic ways to invoke CodiumAI PR-Agent:
1. Locally running a CLI command
2. Online usage - by [commenting ](https://github.com/Codium-ai/pr-agent/pull/229#issuecomment-1695021901 ) on a PR
2023-09-02 09:25:38 +03:00
3. Enabling PR-Agent tools to run automatically when a new PR is opened
2023-09-02 09:19:35 +03:00
2023-09-02 09:25:38 +03:00
See the [installation guide ](/INSTALL.md ) for instructions on how to setup your own PR-Agent.
2023-09-02 09:37:44 +03:00
Specifically, CLI commands can be issued by invoking a pre-built [docker image ](/INSTALL.md#running-from-source ), or by invoking a [locally cloned repo ](INSTALL.md#method-2-run-from-source ).
2023-09-02 09:19:35 +03:00
For online usage, you will need to setup either a [GitHub App ](INSTALL.md#method-5-run-as-a-github-app ), or a [GitHub Action ](INSTALL.md#method-3-run-as-a-github-action ).
GitHub App and GitHub Action also enable to run PR-Agent specific tool automatically when a new PR is opened.
#### The configuration file
2023-09-02 09:37:44 +03:00
The different tools and sub-tools used by CodiumAI PR-Agent are adjustable via the ** [configuration file ](pr_agent/settings/configuration.toml )**.
In addition to general configuration options, each tool has its own configurations. For example, the `review` tool will use parameters from the [pr_reviewer ](/pr_agent/settings/configuration.toml#L16 ) section in the configuration file.
2023-08-04 12:13:04 +03:00
2023-09-02 09:33:33 +03:00
**git provider:**
2023-09-01 20:27:29 +03:00
The [git_provider ](pr_agent/settings/configuration.toml#L4 ) field in the configuration file determines the GIT provider that will be used by PR-Agent. Currently, the following providers are supported:
2023-09-01 20:22:10 +03:00
`
"github", "gitlab", "azure", "codecommit", "local"
`
2023-09-01 19:40:38 +03:00
2023-09-02 09:25:38 +03:00
[//]: # (** online usage:**)
[//]: # (Options that are available in the configuration file can be specified at run time when calling actions. Two examples:)
[//]: # (```)
[//]: # (- /review --pr_reviewer.extra_instructions="focus on the file: ...")
[//]: # (- /describe --pr_description.add_original_user_description=false -pr_description.extra_instructions="make sure to mention: ...")
[//]: # (```)
2023-08-04 12:13:04 +03:00
2023-09-02 09:19:35 +03:00
### Working from a local repo (CLI)
2023-09-02 09:33:33 +03:00
When running from your local repo (CLI), your local configuration file will be used.
2023-09-01 20:22:10 +03:00
Examples for invoking the different tools via the CLI:
2023-09-06 09:12:25 +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"`
- **Reflect**: `python cli.py --pr_url=<pr_url> reflect`
- **Update Changelog**: `python cli.py --pr_url=<pr_url> update_changelog`
2023-09-01 20:22:10 +03:00
`<pr_url>` is the url of the relevant PR (for example: https://github.com/Codium-ai/pr-agent/pull/50).
**Notes:**
2023-09-02 09:37:44 +03:00
2023-09-02 09:33:33 +03:00
(1) in addition to editing your local configuration file, you can also change any configuration value by adding it to the command line:
2023-09-02 09:19:35 +03:00
```
2023-09-03 11:16:20 +03:00
python cli.py --pr_url=< pr_url > /review --pr_reviewer.extra_instructions="focus on the file: ..."
2023-09-02 09:19:35 +03:00
```
2023-09-01 20:22:10 +03:00
(2) You can print results locally, without publishing them, by setting in `configuration.toml` :
2023-08-04 12:13:04 +03:00
```
[config]
publish_output=true
verbosity_level=2
```
This is useful for debugging or experimenting with the different tools.
2023-07-16 14:59:40 +03:00
2023-09-02 09:19:35 +03:00
### Online usage
Online usage means invoking PR-Agent tools by [comments ](https://github.com/Codium-ai/pr-agent/pull/229#issuecomment-1695021901 ) on a PR.
Commands for invoking the different tools via comments:
- **Review**: `/review`
- **Describe**: `/describe`
- **Improve**: `/improve`
2023-09-02 09:33:33 +03:00
- **Ask**: `/ask "..."`
2023-09-02 09:19:35 +03:00
- **Reflect**: `/reflect`
- **Update Changelog**: `/update_changelog`
To edit a specific configuration value, just add `--config_path=<value>` to any command.
For example if you want to edit the `review` tool configurations, you can run:
```
2023-09-02 09:33:33 +03:00
/review --pr_reviewer.extra_instructions="..." --pr_reviewer.require_score_review=false
2023-09-02 09:19:35 +03:00
```
Any configuration value in [configuration file ](pr_agent/settings/configuration.toml ) file can be similarly edited.
### Working with GitHub App
2023-09-02 09:37:44 +03:00
When running PR-Agent from [GitHub App ](INSTALL.md#method-5-run-as-a-github-app ), the default configurations from a pre-built repo will be initially loaded.
2023-09-02 09:19:35 +03:00
#### GitHub app automatic tools
2023-09-02 09:33:33 +03:00
The [github_app ](pr_agent/settings/configuration.toml#L56 ) section defines GitHub app specific configurations.
2023-09-01 20:14:14 +03:00
An important parameter is `pr_commands` , which is a list of tools that will be **run automatically when a new PR is opened** :
2023-08-30 19:42:46 +03:00
```
[github_app]
pr_commands = [
"/describe --pr_description.add_original_user_description=true --pr_description.keep_original_user_title=true",
"/auto_review",
]
```
This means that when a new PR is opened, PR-Agent will run the `describe` and `auto_review` tools.
2023-08-31 08:19:33 +03:00
For the describe tool, the `add_original_user_description` and `keep_original_user_title` parameters will be set to true.
2023-08-30 19:42:46 +03:00
2023-08-30 19:53:28 +03:00
However, you can override the default tool parameters by uploading a local configuration file called `.pr_agent.toml` to the root of your repo.
2023-08-30 19:42:46 +03:00
For example, if your local `.pr_agent.toml` file contains:
```
[pr_description]
add_original_user_description = false
keep_original_user_title = false
```
2023-09-02 09:19:35 +03:00
When a new PR is opened, PR-Agent will run the `describe` tool with the above parameters.
2023-08-30 19:42:46 +03:00
2023-08-30 19:53:28 +03:00
Note that a local `.pr_agent.toml` file enables you to edit and customize the default parameters of any tool, not just the ones that are run automatically.
2023-08-30 19:46:33 +03:00
2023-08-31 08:02:14 +03:00
#### Editing the prompts
2023-08-31 08:06:43 +03:00
The prompts for the various PR-Agent tools are defined in the `pr_agent/settings` folder.
2023-08-31 08:02:14 +03:00
2023-09-02 09:25:38 +03:00
In practice, the prompts are loaded and stored as a standard setting object.
Hence, editing them is similar to editing any other configuration value - just place the relevant key in `.pr_agent.toml` file, and override the default value.
2023-08-31 08:02:14 +03:00
For example, if you want to edit the prompts of the [describe ](./pr_agent/settings/pr_description_prompts.toml ) tool, you can add the following to your `.pr_agent.toml` file:
```
[pr_description_prompt]
system="""
...
"""
user="""
...
"""
```
2023-08-31 08:08:09 +03:00
Note that the new prompt will need to generate an output compatible with the relevant [post-process function ](./pr_agent/tools/pr_description.py#L137 ).
2023-08-31 08:02:14 +03:00
2023-09-02 09:19:35 +03:00
### Working with GitHub Action
TBD
2023-08-30 19:42:46 +03:00
2023-09-02 09:25:38 +03:00
### Appendix - additional configurations walkthrough
2023-08-07 09:04:52 +03:00
#### Changing a model
See [here ](pr_agent/algo/__init__.py ) for the list of available models.
2023-09-05 16:23:22 -07:00
#### Azure
2023-09-05 15:19:56 -07:00
To use Azure, set:
```
api_key = "" # your azure api key
api_type = "azure"
api_version = '2023-05-15' # Check Azure documentation for the current API version
api_base = "" # The base URL for your Azure OpenAI resource. e.g. "https://< your resource name > .openai.azure.com"
deployment_id = "" # The deployment name you chose when you deployed the engine
```
in your .secrets.toml
and
2023-08-07 09:04:52 +03:00
```
[config]
2023-09-05 15:19:56 -07:00
model="" # the OpenAI model you've deployed on Azure (e.g. gpt-3.5-turbo)
```
in the configuration.toml
2023-09-05 16:23:22 -07:00
#### Huggingface
2023-09-08 09:59:44 -07:00
**Local**
You can run Huggingface models locally through either [VLLM ](https://docs.litellm.ai/docs/providers/vllm ) or [Ollama ](https://docs.litellm.ai/docs/providers/ollama )
E.g. to use a new Huggingface model locally via Ollama, set:
```
[__init__.py]
MAX_TOKENS = {
"model-name-on-ollama": < max_tokens >
}
e.g.
MAX_TOKENS={
...,
"llama2": 4096
}
[config] # in configuration.toml
model = "ollama/llama2"
[ollama] # in .secrets.toml
api_base = ... # the base url for your huggingface inference endpoint
```
**Inference Endpoints**
2023-09-05 16:23:22 -07:00
To use a new model with Huggingface Inference Endpoints, for example, set:
```
[__init__.py]
MAX_TOKENS = {
"model-name-on-huggingface": < max_tokens >
}
e.g.
MAX_TOKENS={
...,
"meta-llama/Llama-2-7b-chat-hf": 4096
}
[config] # in configuration.toml
model = "huggingface/meta-llama/Llama-2-7b-chat-hf"
[huggingface] # in .secrets.toml
key = ... # your huggingface api key
api_base = ... # the base url for your huggingface inference endpoint
```
(you can obtain a Llama2 key from [here ](https://replicate.com/replicate/llama-2-70b-chat/api ))
#### Replicate
2023-09-05 15:19:56 -07:00
To use Llama2 model with Replicate, for example, set:
```
[config] # in configuration.toml
2023-08-07 09:04:52 +03:00
model = "replicate/llama-2-70b-chat:2c1608e18606fad2812020dc541930f2d0495ce32eee50074220b87300bc16e1"
2023-09-05 15:19:56 -07:00
[replicate] # in .secrets.toml
2023-08-07 09:04:52 +03:00
key = ...
```
(you can obtain a Llama2 key from [here ](https://replicate.com/replicate/llama-2-70b-chat/api ))
2023-09-05 16:23:22 -07:00
2023-08-07 09:04:52 +03:00
Also review the [AiHandler ](pr_agent/algo/ai_handler.py ) file for instruction how to set keys for other models.
#### Extra instructions
All PR-Agent tools have a parameter called `extra_instructions` , that enables to add free-text extra instructions. Example usage:
```
/update_changelog --pr_update_changelog.extra_instructions="Make sure to update also the version ..."
2023-08-31 11:47:51 +00:00
```
2023-09-01 20:22:10 +03:00
#### Azure DevOps provider
2023-08-31 11:50:41 +00:00
To use Azure DevOps provider use the following settings in configuration.toml:
2023-08-31 11:47:51 +00:00
```
[config]
git_provider="azure"
use_repo_settings_file=false
2023-08-31 11:50:41 +00:00
```
And use the following settings (you have to replace the values) in .secrets.toml:
```
[azure_devops]
org = "https://dev.azure.com/YOUR_ORGANIZATION/"
pat = "YOUR_PAT_TOKEN"
2023-09-13 07:46:43 +03:00
```
2023-09-13 08:04:36 +03:00
#### Similar issue tool
2023-09-13 10:38:31 +03:00
[Example usage ](https://github.com/Alibaba-MIIL/ASL/issues/107 )
2023-09-13 08:17:13 +03:00
2023-09-13 08:04:36 +03:00
< img src = ./pics/similar_issue_tool.png width = "768" >
To enable usage of the '**similar issue**' tool, you need to set the following keys in `.secrets.toml` (or in the relevant environment variables):
2023-09-13 07:46:43 +03:00
```
[pinecone]
api_key = "..."
environment = "..."
```
These parameters can be obtained by registering to [Pinecone ](https://app.pinecone.io/?sessionType=signup/ ).
2023-09-13 08:04:36 +03:00
- To invoke the 'similar issue' tool from **CLI** , run:
`python3 cli.py --issue_url=... similar_issue`
2023-09-13 07:46:43 +03:00
2023-09-13 08:04:36 +03:00
- To invoke the 'similar' issue tool via online usage, [comment ](https://github.com/Codium-ai/pr-agent/issues/178#issuecomment-1716934893 ) on a PR:
2023-09-13 07:46:43 +03:00
`/similar_issue`
2023-09-13 10:38:31 +03:00
- You can also enable the 'similar issue' tool to run automatically when a new issue is opened, by adding it to the [pr_commands list in the github_app section ](https://github.com/Codium-ai/pr-agent/blob/main/pr_agent/settings/configuration.toml#L66 )