Metadata-Version: 2.1
Name: gpt-review
Version: 0.9.0rc720.post1
Summary: Python Project for reviewing GitHub PRs with Open AI and Chat-GPT.
Author-email: Daniel Ciborowski <dciborow@microsoft.com>
Requires-Python: >=3.8.1
Description-Content-Type: text/markdown
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Dist: azure-identity
Requires-Dist: azure-keyvault-secrets
Requires-Dist: llama-index>=0.6.0,<=0.6.7
Requires-Dist: httpx
Requires-Dist: GitPython
Requires-Dist: knack
Requires-Dist: openai
Requires-Dist: requests
Requires-Dist: pyyaml
Requires-Dist: typing_extensions; python_version <= "3.10"
Requires-Dist: transformers; python_version <= "3.8"
Requires-Dist: bandit[toml]==1.7.5 ; extra == "test"
Requires-Dist: black==23.3.0 ; extra == "test"
Requires-Dist: check-manifest==0.49 ; extra == "test"
Requires-Dist: flake8-bugbear==23.5.9 ; extra == "test"
Requires-Dist: flake8-docstrings ; extra == "test"
Requires-Dist: flake8-formatter_junit_xml ; extra == "test"
Requires-Dist: flake8 ; extra == "test"
Requires-Dist: flake8-pyproject ; extra == "test"
Requires-Dist: pre-commit==3.3.1 ; extra == "test"
Requires-Dist: pylint==2.17.4 ; extra == "test"
Requires-Dist: pylint_junit ; extra == "test"
Requires-Dist: pytest-cov>=3.0.0 ; extra == "test"
Requires-Dist: pytest-mock ; extra == "test"
Requires-Dist: pytest-runner ; extra == "test"
Requires-Dist: pytest-xdist ; extra == "test"
Requires-Dist: pytest>=7.2.2 ; extra == "test"
Requires-Dist: pytest-github-actions-annotate-failures ; extra == "test"
Requires-Dist: shellcheck-py==0.9.0.2 ; extra == "test"
Project-URL: Documentation, https://github.com/dciborow/action-gpt/tree/main#readme
Project-URL: Source, https://github.com/dciborow/action-gpt
Project-URL: Tracker, https://github.com/dciborow/action-gpt/issues
Provides-Extra: test

# gpt-review

<p align="center">
<a href="https://github.com/microsoft/gpt-review/actions"><img alt="Actions Status" src="https://github.com/microsoft/gpt-review/workflows/Python%20CI/badge.svg"></a>
<a href="https://codecov.io/gh/microsoft/gpt-review"><img alt="Coverage Status" src="https://codecov.io/gh/microsoft/gpt-review/branch/main/graph/badge.svg"></a>
<a href="https://github.com/microsoft/gpt-review/blob/main/LICENSE"><img alt="License: MIT" src="https://black.readthedocs.io/en/stable/_static/license.svg"></a>
<a href="https://pypi.org/project/gpt-review/"><img alt="PyPI" src="https://img.shields.io/pypi/v/gpt-review"></a>
<a href="https://pepy.tech/project/gpt-review"><img alt="Downloads" src="https://pepy.tech/badge/gpt-review"></a>
<a href="https://github.com/psf/black"><img alt="Code style: black" src="https://img.shields.io/badge/code%20style-black-000000.svg"></a>
</p>

A Python based CLI and GitHub Action to use Open AI or Azure Open AI models to review contents of pull requests.

## How to install CLI

First, install the package via `pip`:

```bash
pip install gpt-review
```

### GPT API credentials

You will need to provide an OpenAI API key to use this CLI tool. In order of precedence, it will check the following methods:

1. Presence of a context file at `azure.yaml` or wherever `CONTEXT_FILE` points to. See `azure.yaml.template` for an example.

2. `AZURE_OPENAI_API_URL` and `AZURE_OPENAI_API_KEY` to connect to an Azure OpenAI API:

    ```bash
    export AZURE_OPENAI_API=<your azure api url>
    export AZURE_OPENAI_API_KEY=<your azure key>
    ```

3. `OPENAI_API_KEY` for direct use of the OpenAI API

    ```bash
    export OPENAI_API_KEY=<your openai key>
    ```

4. `AZURE_KEY_VAULT_URL` to use Azure Key Vault. Put secrets for the url at `azure-open-ai` and the API Key `azure-openai-key`, then run:

    ```bash
    export AZURE_KEY_VAULT_URL=https://<keyvault_name>.vault.azure.net/
    az login
    ```

## Main Commands

To show help information about available commands and their usage, run:

```bash
gpt --help
```

To display the current version of this CLI tool, run:

```bash
gpt --version
```

Here are the main commands for using this CLI tool:

### 1. Ask a Question

To submit a question to GPT and receive an answer, use the following format:

```bash
gpt ask "What is the capital of France?"
```

You can customize your request using various options like maximum tokens (`--max-tokens`), temperature (`--temperature`), top-p value (`--top-p`), frequency penalty (`--frequency-penalty`), presence penalty (`--presence-penalty`), etc.

#### Ask a Question about a File

To submit a question to GPT with a file and receive an answer, use the following format:

```bash
gpt ask --files WordDocument.docx "Summarize the contents of this document."
```

### 2. Review a PR

To review a PR, use the following format:

```bash
gpt github review \
    --access-token $GITHUB_ACCESS_TOKEN \
    --pull-request $PULL_REQUEST_NUMBER \
    --repository $REPOSITORY_NAME
```

### 3. Generate a git commit message with GPT

To generate a git commit message with GPT after having added the files, use the following format:

```bash
git add .

gpt git commit
```

For more detailed information on each command and its options, run:

```bash
gpt COMMAND --help
```

Replace COMMAND with one of the main commands listed above (e.g., 'ask').

## Developer Setup

To install the package in development mode, with additional packages for testing, run the following command:

```bash
pip install -e .[test]
```

