Skip to main content

An AI-based assistant for handling github issues and pull-requests

Project description

git-bob

git-bob uses AI to solve GitHub issues and review pull requests. It runs inside the GitHub CI, no need to install anything on your computer. Read more in the preprint.

banner

Under the hood it uses Anthropic's Claude or OpenAI's chatGPT or Google's Gemini to understand the text and pygithub to interact with the issues and pull requests. As its discussions are conserved, you can document how things were done using AI and others can learn how to prompt for the things you did. For example, the pair-plot discussion above is available online.

Disclaimer

git-bob is a research project aiming at streamlining GitHub interaction in software development projects. Under the hood it uses artificial intelligence / large language models to generate text and code fulfilling the user's requests. Users are responsible to verify the generated code according to good scientific practice.

When using git-bob you configure it to use an API key to access the AI models. You have to pay for the usage and must be careful in using the software. Do not use this technology if you are not aware of the costs and consequences.

[!CAUTION] When using the Anthropic, OpenAI, Google Gemini or any other endpoint via git-bob, you are bound to the terms of service of the respective companies or organizations. The GitHub issues, pull requests and messages you enter are transferred to their servers and may be processed and stored there. Make sure to not submit any sensitive, confidential or personal data. Also using these services may cost money.

Installation as GitHub action

There is a detailed tutorial on how to install git-bob as GitHub action to your repository. In very short, to use git-bob in your GitHub repository, you need to

  • Copy the git-bob GitHub workflow in folder .github/workflows/ to your repository.
    • Make sure to replace pip install -e . with a specific git-bob version such as pip install git-bob==0.11.0.
    • Configure the LLM you want to use in the workflow files by specifying the GIT_BOB_LLM_NAME environment variable. These were tested:
  • claude-3-5-sonnet-20240620
  • gpt-4o-2024-08-06 (recommended if you work with large files, < 16k tokens)
  • github_models:gpt-4o
  • github_models:meta-llama-3.1-405b-instruct
  • gemini-1.5-pro-002
  • configure a GitHub secret called OPENAI_API_KEY or ANTHROPIC_API_KEY or GH_MODELS_API_KEY or GOOGLE_API_KEY or KISSKI_API_KEY or BLABBLADOR_API_KEY with the corresponding key from the LLM provider depending on the above configured LLM. You can get these keys here:
  • configure GitHub actions to run the workflow on issues and pull requests. Also give write-access to the Workflow using the GITHUB_TOKEN.

When using it in your repository, you can also set a custom system message, for example for:

Furthermore, to guide discussions, you may want to setup issue templates, e.g.

Installation as gitlab pipeline

Since version 0.10.1 git-bob has experimental support for gitlab. You find detailed instructions how to install it here.

Usage: Trigger words

To trigger git-bob, you need to comment on an issue or pull request with the comment trigger word (or aliases think about, review, respond):

git-bob comment

After some back-and-forth discussion, you can also use the solve trigger word (or aliases implement, apply) make git-bob solve an issue and send a pull-request. This trigger can also be used to modify code in pull requests.

git-bob solve

You can ask git-bob to implement a solution for testing, without sending a pull-request, using the try trigger:

git-bob try

If you have multiple API-Key for different LLMs configured, you can specify the LLM in the command using the ask <LLM-Name> to trigger command:

git-bob ask claude-3-5-sonnet-20240620 to solve this issue.

If the issue is complex and should be split into sub-issues, you can use the following command:

git-bob split

If you have two GitHub secrets TWINE_USERNAME and TWINE_PASSWORD configured, you can also use the following command to publish a new version of your library to PyPI:

git-bob deploy

All trigger words can be combined with please and/or ,, which will make no difference to calling git-bob without these words:

git-bob, please ask gemini-1.5-pro-002 to solve this issue.

Recommended Workflow

Here's the recommended workflow for using git-bob:

  1. Create an issue describing the problem or task.
  2. Comment on the issue with git-bob comment, or git-bob think about this (an alias for comment) to trigger git-bob making a plan.
  3. Respond to git-bob with any clarifications or additional information it requests.
  4. Comment on the issue with git-bob solve or git-bob implement this (an alias for solve) to trigger git-bob.
  5. Wait for git-bob to create a pull request (PR) addressing the issue.
  6. Review the PR and comment on the PR or on the original issue if changes are needed.
  7. Wait for git-bob to create new PR or modifying the existing PR with the requested changes.
  8. Repeat steps 3-5 as necessary until the issue is resolved satisfactorily.

Use-case examples

A huge variety of use-cases for git-bob are thinkable. Here are some examples. Many serve purely demonstrative purposes. Some were parts of real scientific data analysis projects.

Installation for development

git clone https://github.com/haselinhuepf/git-bob.git
cd git-bob

Usage as command-line tool (for development)

You can also install git-bob locally and run it from the terminal. In this case, create a GitHub token and store it in an environment variable named GITHUB_API_KEY. Also create an environment variable GIT_BOB_LLM_NAME with the name of the LLM you want to use, e.g. "gpt-4o-2024-05-13" or "claude-3-5-sonnet-20240620" or "github_models:gpt-4o". Then you can install git-bob using pip:

pip install git-bob

Usage as command-line tool (for development)

You can then use git-bob from the terminal on repositories you have read/write access to. It is recommended to call it from the root folder of the repository you want to interact with.

git clone https://github.com/<organization>/<repository>
cd <repository>
git-bob <action> <organization>/<repository> <issue-number>

Available actions:

  • review-pull-request
  • comment-on-issue
  • solve-issue
  • split-issue

Limitations

git-bob is a research project and has limitations. It serves as basis for discussion and further development. Once LLMs become better, git-bob will become better as well.

At the moment, these limitations can be observed:

  • git-bob was tested for Python projects mostly. It seems to be able to process Java and C++ as well.
  • It can only execute code in Jupyter Notebooks.
  • It sometimes hallucinates, especially in code reviews. E.g. it claimed to have tested code, which is certainly not true.
  • It cannot solve issues where changing long files is required, as the output of the LLMs is limited by a maximum number of tokens (e.g. 16k for gpt-4o-2024-08-06). When using OpenAI's models it combines output of multiple requests to a maximum file length about 64k tokens. It may then miss some spaces or a line break where responses were stitched. When using GitHub models, the maximum file length is 4k tokens. When using Anthropic's Claude, the maximum file length is 8k tokens.
  • When changing multiple files, it may introduce conflicts between the files, as it does not know about the changed contents of the other files.
  • It has only limited logic to control who is allowed to trigger it. If you are a repository member, you can trigger it. If others send a pull request, a repository member must allow the action to run manually.
  • git-bob is incompatible with locally running open-source/-weight LLMs. This might make sense when being executed locally only. In the GitHub-CI this might be impossible.
  • Recently tested claude-3-5-sonnet-20240620, gpt-4o-2024-08-06, github_models:gpt-4o, github_models:meta-llama-3.1-405b-instruct and gemini-1.5-pro-002 produced useful results.
  • git-bob is not allowed to modify workflow files, because it also uses GitHub workflows.

Similar projects

There are similar projects out there

Contributing

Feedback and contributions are welcome! Just open an issue and let's discuss before you send a pull request. A human will respond and comment on your ideas!

Citation

If you use git-bob, please cite it:

@misc{haase_2024_13928832,
  author       = {Haase, Robert},
  title        = {{Towards Transparency and Knowledge Exchange in AI- 
                   assisted Data Analysis Code Generation}},
  month        = oct,
  year         = 2024,
  publisher    = {Zenodo},
  doi          = {10.5281/zenodo.13928832},
  url          = {https://doi.org/10.5281/zenodo.13928832}
}

Acknowledgements

We acknowledge the financial support by the Federal Ministry of Education and Research of Germany and by Sächsische Staatsministerium für Wissenschaft, Kultur und Tourismus in the programme Center of Excellence for AI-research „Center for Scalable Data Analytics and Artificial Intelligence Dresden/Leipzig", project identification number: ScaDS.AI

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

git_bob-0.11.1.tar.gz (40.6 kB view details)

Uploaded Source

Built Distribution

git_bob-0.11.1-py3-none-any.whl (36.9 kB view details)

Uploaded Python 3

File details

Details for the file git_bob-0.11.1.tar.gz.

File metadata

  • Download URL: git_bob-0.11.1.tar.gz
  • Upload date:
  • Size: 40.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for git_bob-0.11.1.tar.gz
Algorithm Hash digest
SHA256 a908cb110ade7a12c1dac0287ca10e8f7c6897ecaf5bfd21ce889266a1028a7f
MD5 4e8372fc01d418565c5e02447377c594
BLAKE2b-256 9b0942b47607fc8f1242d4766d54ecd7166f6dfb2324a647b844850f83422887

See more details on using hashes here.

File details

Details for the file git_bob-0.11.1-py3-none-any.whl.

File metadata

  • Download URL: git_bob-0.11.1-py3-none-any.whl
  • Upload date:
  • Size: 36.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for git_bob-0.11.1-py3-none-any.whl
Algorithm Hash digest
SHA256 878aba970f15329976f4e435801a77d4c73eef364d6780ffae0f2d4cd2604b3f
MD5 74d83ab3de810a7a869fe30daca84740
BLAKE2b-256 c9418187a6ee4bb53180dde693824ae02d17713aa1e8ba0c81fd7f3a3f3643b5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page