Skip to main content

codecov PyPI version License: MIT

Gai is an AI-Powered Automation Tool for Git 🚀

command-line application that automates git commit messages and merge requests using AI.

Demo

✨ Features

  • Generate commit messages based on code diffs.
  • Create merge requests with AI-generated titles and descriptions.
  • Works with both GitHub and GitLab.
  • Supports Groq and Hugging Face AI interfaces.

📦 Installation

Install gai-tool via pip:

pip install gai-tool

🚀 Getting Started

  1. Navigate to your git repository:

    cd /path/to/your/git/repo
    
  2. Set API Tokens as Environment Variables:

    # Ensure you have your AI interface and GitHub/GitLab API tokens set:
    export GROQ_API_KEY='your_groq_api_key'             # If you want to use Groq's API
    export HUGGINGFACE_API_TOKEN='your_hf_api_token'    # If you want to use Hugging Face's API
    export GITHUB_TOKEN='your_github_token'             # If using GitHub
    export GITLAB_TOKEN='your_gitlab_token'             # If using GitLab
    
  3. Start Using gai-tool:

    # Generate an AI-powered commit message:
    gai commit -a
    

⚙️ Configuration

Configuration file is located at ~/.config/gai/config.yaml. Customize settings like the AI interface, temperature, and target branch.

Example configuration:

interface: huggingface
temperature: 0.7
target_branch: master

📖 Usage

gai-tool provides two main commands: commit and merge.

📝 Commit Messages

Generate an commit message:

gai commit

Options:

  • -a, --all: Stage all changes before committing.
  • -t, --temperature: Override the temperature specified in the config.
  • -i, --interface: Specify and override the AI client API to use (groq or huggingface).

Example:

# Simply
gai commit -a
# Or
gai commit -a -t 0.5 -i huggingface

🔀 Merge Requests

Create a merge request:

gai merge

Options:

  • [remote]: Specify the remote git repository (default is origin).
  • --push, -p: Push changes to remote before creating a merge request.
  • --target-branch, -tb: Specify the target branch for the merge request (default is master).
  • -t, --temperature: Override the temperature specified in the config.
  • -i, --interface: Specify and override the AI client API to use (groq or huggingface).

Example:

# Simply
gai merge -p
# Or
gai merge origin -p -tb develop -t 0.8 -i groq

🛠 Build Instructions

Build gai-tool from source:

  1. Clone the Repository:

    git clone https://github.com/Danielratmiroff/gai.git
    
  2. Navigate to the Project Directory:

    cd gai
    
  3. Create a Virtual Environment (Optional but Recommended):

    python -m venv venv
    source venv/bin/activate  # On Windows use venv\Scripts\activate
    
  4. Install Build Tools and Dependencies:

    pip install build
    pip install -r requirements.txt
    
  5. Build the Package:

    python -m build
    

    This will generate distribution files in the dist/ directory.

  6. Install the Built Package:

    pip install dist/gai_tool-0.1.0-py3-none-any.whl
    

🤝 Contributing

Contributions are welcome!

📄 License

MIT License - LICENSE.

Release files for gai-tool 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gai-tool 0.2.1
File Size Uploaded
gai_tool-0.2.1.tar.gz 19.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gai-tool 0.2.1
File Interpreter ABI Platform
gai_tool-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 40.1 kB

Release files / gai_tool-0.2.1.tar.gz

Download URL gai_tool-0.2.1.tar.gz
Size 19.1 kB
Tags Source
SHA-256 checksum
How to use checksums
692241bd9ec77f44c0aeaf5533b43299d6f083dc90cd1635862de2fde8f75237
BLAKE2b-256 checksum
How to use checksums
2f72fb30356dfbe5a5dce130d13c83f2f66f21c430ed672d56005c621b190cf3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Release files / gai_tool-0.2.1-py3-none-any.whl

Download URL gai_tool-0.2.1-py3-none-any.whl
Size 21.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0565c47aa1153e0f303402b7ebfca6c5d5daaa7cd88ecfd5c1d9dfe7bf2af169
BLAKE2b-256 checksum
How to use checksums
6923752763c1a68b7c4b5f98e8deb65651c3956bc6700115a65542731a975aad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Release history Release notifications | RSS feed

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page