Skip to main content

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

Project description

git-bob

git-bob uses AI to answer Github-issues and review pull-requests.

demo_fix_typos.png

Under the hood it uses gpt-4 omni to understand the text and pygithub to interact with the issues and pull-requests.

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 OpenAI, Google Gemini, Anthropic or any other endpoint via git-bob, you are bound to the terms of service of the respective companies or organizations. The prompts 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

  • setup Github workflows like shown in this folder.
    • Make sure to replace pip install -e . with a specific git-bob version such as pip install git-bob==0.1.0.
    • Configure the LLM you want to use in the workflow files by specifying the GIT_BOB_LLM_NAME environment variable.
  • configure a Github secret called OPENAI_API_KEY depending on the above configured LLM.
  • configure Github actions to run the workflow on issues and pull-requests. Also give write-access to the action runner.

To trigger git-bob, you need to comment on an issue or pull-request with the following command:

git-bob comment

When using openai/gpt-4-omni, you can also use the following command to trigger git-bob. It will then try to solve the issue and send a pull-request.

git-bob solve

Use-case examples

demo_fix_typos.png

demo_fix_typos.png

  • git-bob can review pull-requests and provide feedback (pull-request):

demo_fix_typos.png

  • git-bob can also be exploited to answer questions (issue).

Installation as command-line tool

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". Then you can install git-bob using pip:

pip install git-bob

Usage as command-line tool

You can then use git-bob from the terminal on repositories you have read/write access to.

git_bob <action> <organization>/<repository> <issue-number>

Available actions:

  • review-pull-request
  • comment-on-issue
  • solve-issue (only works with OpenAI/gpt-4-omni at the moment)

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 only (yet).
  • It cannot solve issues where changing long files is required, as the output of the LLMs is limited to 4096 tokens.
  • It cannot solve issues where running and testing the code is required.
  • When changing multiple files, it may introduce conflicts between the files, as it does not know about the content 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.

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!

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.1.1.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

git_bob-0.1.1-py3-none-any.whl (13.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for git_bob-0.1.1.tar.gz
Algorithm Hash digest
SHA256 12e9974aa618f5b14eb9005216c90228d244e7b6d2876e348978be8bde8be03c
MD5 d679a287c5e746ddec46a2fdef29ac0f
BLAKE2b-256 23d0c80672693bbf1453eb90a32b05d544ed1264a0abea14809cb10bf5e0c1df

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for git_bob-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b7ae7a13e1e462adde3a1eae96b79a1923e006dd2c5ae445ca2ae2f953747f75
MD5 42951fb8e272554212c6e102e7ba7b96
BLAKE2b-256 f076973d763282db5d4ec6bedf25c8a3e7698d5469c2ea329ca0b4ece3de9cb8

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