# git-bob ![](logo_32x32.png)
[![PyPI](https://img.shields.io/pypi/v/git-bob.svg?color=green)](https://pypi.org/project/git-bob)
[![DOI](https://zenodo.org/badge/831841421.svg)](https://doi.org/10.5281/zenodo.13970719)
[![License](https://img.shields.io/pypi/l/git-bob.svg?color=green)](https://github.com/haesleinhuepf/git-bob/raw/main/LICENSE)
<!--[![PyPI - Downloads](https://img.shields.io/pypi/dm/git-bob)](https://pypistats.org/packages/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](https://doi.org/10.5281/zenodo.13928832).
![banner](https://github.com/haesleinhuepf/git-bob/raw/main/docs/images/banner2.png)
Under the hood it uses [Anthropic's Claude](https://www.anthropic.com/api) or [OpenAI's chatGPT](https://openai.com/blog/openai-api) or [Google's Gemini](https://blog.google/technology/ai/google-gemini-ai/) to understand the text and
[pygithub](https://github.com/PyGithub/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](https://github.com/haesleinhuepf/git-bob-playground/issues/48).
## 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, Mistral 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](https://github.com/haesleinhuepf/git-bob/blob/main/docs/installation-tutorial.md) 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](https://github.com/haesleinhuepf/git-bob/blob/main/.github/workflows/git-bob.yml) 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.16.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-20241022`
* `gpt-4o-2024-08-06`
* `github_models:gpt-4o`
* `github_models:meta-llama-3.1-405b-instruct`
* `gemini-1.5-pro-002`
* `mistral-large-2411` (uses `pixtral-12b-2409` for vision tasks)
* configure a GitHub secret called `OPENAI_API_KEY` or `ANTHROPIC_API_KEY` or `GH_MODELS_API_KEY` or `GOOGLE_API_KEY` or `MISTRAL_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:
* [OpenAI (gpt)](https://openai.com/blog/openai-api)
* [Anthropic (claude)](https://www.anthropic.com/api)
* [GitHub Models Marketplace](https://github.com/marketplace/models)
* [Google AI](https://ai.google.dev/gemini-api/docs/api-key)
* [Mistral](https://console.mistral.ai/api-keys/)
* [KISSKI](https://services.kisski.de/services/en/service/?service=2-02-llm-service.json)
* [BLABLADOR](https://login.helmholtz.de/oauth2-as/oauth2-authz-web-entry)
* 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:
* [General Data Science / Python Programming](https://github.com/haesleinhuepf/git-bob-playground/blob/bf08b3526980e011f632c13f29ae65372aafa5c7/.github/workflows/git-bob.yml#L75)
* [Bio-Image Analysis](https://github.com/haesleinhuepf/git-bob-bioimage-analysis-example/blob/main/.github/workflows/git-bob.yml#L75)
* [Giving advice on a specific repository / library](https://github.com/haesleinhuepf/stackview/blob/afc662a71a39f298af9f183c06c3d37c95cc2015/.github/workflows/git-bob.yml#L58)
* [Manuscript writing](https://github.com/haesleinhuepf/git-bob-manuscript/blob/49659f8a41854d4da696259e7c1316af2fc7c171/.github/workflows/comment-on-issue.yml#L49)
Furthermore, to guide discussions, you may want to setup issue templates, e.g.
* [General Python Programming Questions](https://github.com/haesleinhuepf/git-bob-playground/blob/main/.github/ISSUE_TEMPLATE/programming.md)
* [Bio-Image Analysis](https://github.com/haesleinhuepf/git-bob-playground/blob/main/.github/ISSUE_TEMPLATE/bioimage_analysis.md)
* [Statistics and Plotting](https://github.com/haesleinhuepf/git-bob-playground/blob/main/.github/ISSUE_TEMPLATE/statistics_plotting.md)
## Installation as gitlab pipeline
Since version 0.10.1 git-bob has experimental support for [gitlab](https://gitlab.com). You find detailed instructions how to install it [here](https://github.com/haesleinhuepf/git-bob/blob/main/docs/installation-tutorial-gitlab.md).
## 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
```
If you want to ask git-bob for a review of a pull-request, you can use the `review` trigger word. Also make sure mention explictly what you want to be reviewed.
```
git-bob review this PR. Check code quality and comments.
```
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-20241022 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.
* Question answering
* [About specific Python libraries](https://github.com/haesleinhuepf/stackview/issues/79)
* [The capital of France](https://github.com/haesleinhuepf/git-bob-playground/issues/24)
* Translation
* [Translating text in Jupyter notebooks in other Languages](https://github.com/haesleinhuepf/git-bob-playground/issues/118)
* Bio-image Analysis
* [Nuclei segmentation](https://github.com/haesleinhuepf/git-bob-playground/issues/13)
* [Cell segmentation](https://github.com/haesleinhuepf/git-bob-playground/issues/42)
* [Resizing images](https://github.com/NFDI4BIOIMAGE/training/issues/356)
* Programming
* [Caching](https://github.com/NFDI4BIOIMAGE/SlideInsight/issues/28)
* [Fixing bugs in notebooks](https://github.com/haesleinhuepf/git-bob-playground/issues/174)
* Continuous Integration and Deployment
* [Configuring Github workflows](https://github.com/haesleinhuepf/git-bob-playground/issues/146)
* [Configuring a Jupyter Book](https://github.com/NFDI4BIOIMAGE/training/issues/381)
* Data & Code Management
* [Research Data Management & Folder Structures](https://github.com/haesleinhuepf/git-bob-playground/issues/45)
* [Documenting source code](https://github.com/haesleinhuepf/git-bob/pull/29)
* [Determining licenses of dependencies](https://github.com/haesleinhuepf/git-bob-playground/issues/101)
* [Assisting scientific manuscript writing](https://github.com/haesleinhuepf/git-bob-manuscript/pull/9)
* [Deleting files](https://github.com/haesleinhuepf/git-bob/issues/412)
* [Converting tables to key-value pairs](https://github.com/haesleinhuepf/git-bob-playground/issues/103)
* [Exporting Google Scholar profile as bibtex](https://github.com/haesleinhuepf/git-bob-playground/issues/114)
* [Deciding for file formats: JSON versus YAML](https://github.com/haesleinhuepf/git-bob-playground/issues/117)
* [Generating Galaxy workflows](https://github.com/haesleinhuepf/git-bob-playground/issues/123)
* [Count citations of given DOIs](https://github.com/haesleinhuepf/git-bob-playground/issues/141)
* Graphical User Interfaces
* [Interactive drawing on an ipcanvas](https://github.com/haesleinhuepf/git-bob-playground/issues/121)
* Statistics
* [Filtering data and counting records](https://github.com/NFDI4BIOIMAGE/training/issues/299)
* [Selecting ranges of columns](https://github.com/haesleinhuepf/git-bob-playground/issues/47)
* [Summarizing data and plotting](https://github.com/NFDI4BIOIMAGE/training/issues/250)
* [Writing text about well-known statistical methods](https://github.com/haesleinhuepf/git-bob-playground/issues/161)
* Plotting
* [Violing plots with simulated data](https://github.com/haesleinhuepf/git-bob-playground/issues/44)
* [UMAPs with simulated data](https://github.com/haesleinhuepf/git-bob-playground/issues/41)
* [Plotting a circle of triangles (in gitlab)](https://gitlab.com/haesleinhuepf/git-bob-gitlab-playground/-/issues/8)
* [Pairplots with simulated data](https://github.com/haesleinhuepf/git-bob-playground/issues/48)
* [Word clouds](https://github.com/haesleinhuepf/git-bob-playground/issues/76)
* Science Communication
* [Making slides for Deep Learning training](https://github.com/haesleinhuepf/git-bob-playground/issues/97)
* [Making slides for Research Data Management training](https://github.com/haesleinhuepf/git-bob-playground/issues/96)
* [Visualizing how Fourier-Transform works](https://github.com/haesleinhuepf/git-bob-playground/issues/22)
* [Making Jupyter Notebooks for training](https://github.com/haesleinhuepf/git-bob-playground/issues/92)
* [Making slides about text](https://github.com/haesleinhuepf/git-bob-playground/issues/98)
* Fun
* [Playing Tic-Tac-Toe](https://github.com/haesleinhuepf/git-bob-playground/issues/91)
* [Story Telling for kids](https://github.com/haesleinhuepf/git-bob-playground/issues/82)
* [PowerPoint Karaoke](https://github.com/haesleinhuepf/git-bob-playground/issues/99)
* [Solving Advent of Code 2024 puzzles](https://github.com/haesleinhuepf/git-bob-advent-of-code)
* [Solving the Halting Problem](https://github.com/haesleinhuepf/git-bob-playground/issues/156) [[2nd attempt](https://github.com/haesleinhuepf/git-bob-playground/issues/157)]
* Things that did't work well
* [How to use aider from python](https://github.com/haesleinhuepf/git-bob/issues/437#issuecomment-2539865080)
* [How to use the atproto API](https://github.com/haesleinhuepf/git-bob-playground/issues/136)
## Installation for development
```
git clone https://github.com/haesleinhuepf/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](https://github.com/settings/tokens) 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-20241022" or "github_models:gpt-4o".
Then you can install git-bob using pip:
```bash
pip install git-bob
```
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.
```bash
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](https://github.com/haesleinhuepf/git-bob/pull/70) to have tested code, which was 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-20241022`, `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.
* As git-bob is installed as part of git-hub workflows, its [download statistics](https://pypistats.org/packages/git-bob) might be misleading. There are not as many people downloading it as the numer of downloads suggest.
## Similar projects
There are similar projects out there
* [Claude Engineer](https://github.com/Doriandarko/claude-engineer)
* [BioChatter](https://github.com/biocypher/biochatter)
* [aider](https://github.com/paul-gauthier/aider)
* [OpenDevin](https://github.com/OpenDevin/OpenDevin)
* [Devika](https://github.com/stitionai/devika)
* [GPT-Codemaster](https://github.com/dex3r/GPT-Codemaster)
* [GitHub Copilot Workspace](https://githubnext.com/projects/copilot-workspace)
* [agentless](https://github.com/OpenAutoCoder/Agentless)
* [git-aid](https://github.com/Torantulino/git-aid)
* [SWE-agent](https://github.com/princeton-nlp/SWE-agent)
## Contributing
Feedback and contributions are welcome! Just open an issue and let's discuss before you send a pull request.
A [human](https://haesleinhuepf.github.io) 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
Raw data
{
"_id": null,
"home_page": "https://github.com/haesleinhuepf/git-bob",
"name": "git-bob",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": null,
"author": "Robert Haase",
"author_email": "robert.haase@uni-leipzig.de",
"download_url": "https://files.pythonhosted.org/packages/87/f5/a83991436c7d36d5a36ad235698cd42bbac2d5db39e9da159407ce17cd74/git_bob-0.16.0.tar.gz",
"platform": null,
"description": "# git-bob ![](logo_32x32.png)\n[![PyPI](https://img.shields.io/pypi/v/git-bob.svg?color=green)](https://pypi.org/project/git-bob)\n[![DOI](https://zenodo.org/badge/831841421.svg)](https://doi.org/10.5281/zenodo.13970719)\n[![License](https://img.shields.io/pypi/l/git-bob.svg?color=green)](https://github.com/haesleinhuepf/git-bob/raw/main/LICENSE)\n<!--[![PyPI - Downloads](https://img.shields.io/pypi/dm/git-bob)](https://pypistats.org/packages/git-bob)-->\n\ngit-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.\nRead more in the [preprint](https://doi.org/10.5281/zenodo.13928832). \n\n![banner](https://github.com/haesleinhuepf/git-bob/raw/main/docs/images/banner2.png)\n\nUnder the hood it uses [Anthropic's Claude](https://www.anthropic.com/api) or [OpenAI's chatGPT](https://openai.com/blog/openai-api) or [Google's Gemini](https://blog.google/technology/ai/google-gemini-ai/) to understand the text and \n[pygithub](https://github.com/PyGithub/PyGithub) to interact with the issues and pull requests. As its discussions are conserved, you can document how things were done using AI and \nothers can learn how to prompt for the things you did. For example, the pair-plot discussion above is [available online](https://github.com/haesleinhuepf/git-bob-playground/issues/48).\n\n## Disclaimer\n\n`git-bob` is a research project aiming at streamlining GitHub interaction in software development projects. Under the hood it uses\nartificial intelligence / large language models to generate text and code fulfilling the user's requests. \nUsers are responsible to verify the generated code according to good scientific practice.\n\nWhen using `git-bob` you configure it to use an API key to access the AI models. \nYou have to pay for the usage and must be careful in using the software.\nDo not use this technology if you are not aware of the costs and consequences.\n\n> [!CAUTION]\n> When using the Anthropic, OpenAI, Google Gemini, Mistral or any other endpoint via git-bob, you are bound to the terms of service \n> of the respective companies or organizations.\n> The GitHub issues, pull requests and messages you enter are transferred to their servers and may be processed and stored there. \n> Make sure to not submit any sensitive, confidential or personal data. Also using these services may cost money.\n\n## Installation as GitHub action\n\nThere is a detailed [tutorial](https://github.com/haesleinhuepf/git-bob/blob/main/docs/installation-tutorial.md) 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 \n* Copy the [git-bob](https://github.com/haesleinhuepf/git-bob/blob/main/.github/workflows/git-bob.yml) GitHub workflow in folder `.github/workflows/` to your repository.\n * Make sure to replace `pip install -e .` with a specific git-bob version such as `pip install git-bob==0.16.0`.\n * Configure the LLM you want to use in the workflow files by specifying the `GIT_BOB_LLM_NAME` environment variable. These were tested:\n * `claude-3-5-sonnet-20241022`\n * `gpt-4o-2024-08-06`\n * `github_models:gpt-4o`\n * `github_models:meta-llama-3.1-405b-instruct`\n * `gemini-1.5-pro-002`\n * `mistral-large-2411` (uses `pixtral-12b-2409` for vision tasks)\n * configure a GitHub secret called `OPENAI_API_KEY` or `ANTHROPIC_API_KEY` or `GH_MODELS_API_KEY` or `GOOGLE_API_KEY` or `MISTRAL_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:\n * [OpenAI (gpt)](https://openai.com/blog/openai-api)\n * [Anthropic (claude)](https://www.anthropic.com/api)\n * [GitHub Models Marketplace](https://github.com/marketplace/models)\n * [Google AI](https://ai.google.dev/gemini-api/docs/api-key)\n * [Mistral](https://console.mistral.ai/api-keys/)\n * [KISSKI](https://services.kisski.de/services/en/service/?service=2-02-llm-service.json)\n * [BLABLADOR](https://login.helmholtz.de/oauth2-as/oauth2-authz-web-entry)\n * configure GitHub actions to run the workflow on issues and pull requests. Also give write-access to the Workflow using the `GITHUB_TOKEN`.\n\nWhen using it in your repository, you can also set a custom system message, for example for:\n* [General Data Science / Python Programming](https://github.com/haesleinhuepf/git-bob-playground/blob/bf08b3526980e011f632c13f29ae65372aafa5c7/.github/workflows/git-bob.yml#L75)\n* [Bio-Image Analysis](https://github.com/haesleinhuepf/git-bob-bioimage-analysis-example/blob/main/.github/workflows/git-bob.yml#L75)\n* [Giving advice on a specific repository / library](https://github.com/haesleinhuepf/stackview/blob/afc662a71a39f298af9f183c06c3d37c95cc2015/.github/workflows/git-bob.yml#L58)\n* [Manuscript writing](https://github.com/haesleinhuepf/git-bob-manuscript/blob/49659f8a41854d4da696259e7c1316af2fc7c171/.github/workflows/comment-on-issue.yml#L49)\n\nFurthermore, to guide discussions, you may want to setup issue templates, e.g.\n* [General Python Programming Questions](https://github.com/haesleinhuepf/git-bob-playground/blob/main/.github/ISSUE_TEMPLATE/programming.md)\n* [Bio-Image Analysis](https://github.com/haesleinhuepf/git-bob-playground/blob/main/.github/ISSUE_TEMPLATE/bioimage_analysis.md)\n* [Statistics and Plotting](https://github.com/haesleinhuepf/git-bob-playground/blob/main/.github/ISSUE_TEMPLATE/statistics_plotting.md)\n\n## Installation as gitlab pipeline\n\nSince version 0.10.1 git-bob has experimental support for [gitlab](https://gitlab.com). You find detailed instructions how to install it [here](https://github.com/haesleinhuepf/git-bob/blob/main/docs/installation-tutorial-gitlab.md).\n\n## Usage: Trigger words\n\nTo trigger git-bob, you need to comment on an issue or pull request with the `comment` trigger word (or aliases `think about`, `review`, `respond`):\n\n```\ngit-bob comment\n```\n\nIf you want to ask git-bob for a review of a pull-request, you can use the `review` trigger word. Also make sure mention explictly what you want to be reviewed.\n\n```\ngit-bob review this PR. Check code quality and comments.\n```\n\nAfter 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. \nThis trigger can also be used to modify code in pull requests.\n\n```\ngit-bob solve\n```\n\nYou can ask git-bob to implement a solution for testing, without sending a pull-request, using the `try` trigger:\n```\ngit-bob try\n```\n\nIf 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:\n\n```\ngit-bob ask claude-3-5-sonnet-20241022 to solve this issue.\n```\n\nIf the issue is complex and should be split into sub-issues, you can use the following command:\n\n```\ngit-bob split\n```\n\nIf 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:\n\n```\ngit-bob deploy\n```\n\nAll trigger words can be combined with `please` and/or `,`, which will make no difference to calling git-bob without these words:\n\n```\ngit-bob, please ask gemini-1.5-pro-002 to solve this issue.\n```\n\n## Recommended Workflow\n\nHere's the recommended workflow for using git-bob:\n\n1. Create an issue describing the problem or task.\n2. 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.\n3. Respond to git-bob with any clarifications or additional information it requests.\n4. Comment on the issue with `git-bob solve` or `git-bob implement this` (an alias for `solve`) to trigger git-bob.\n5. Wait for git-bob to create a pull request (PR) addressing the issue.\n6. Review the PR and comment on the PR or on the original issue if changes are needed.\n7. Wait for git-bob to create new PR or modifying the existing PR with the requested changes.\n8. Repeat steps 3-5 as necessary until the issue is resolved satisfactorily.\n\n## Use-case examples\n\nA huge variety of use-cases for git-bob are thinkable. Here are some examples. Many serve purely demonstrative purposes. \nSome were parts of real scientific data analysis projects.\n\n* Question answering \n * [About specific Python libraries](https://github.com/haesleinhuepf/stackview/issues/79)\n * [The capital of France](https://github.com/haesleinhuepf/git-bob-playground/issues/24)\n* Translation\n * [Translating text in Jupyter notebooks in other Languages](https://github.com/haesleinhuepf/git-bob-playground/issues/118) \n* Bio-image Analysis\n * [Nuclei segmentation](https://github.com/haesleinhuepf/git-bob-playground/issues/13)\n * [Cell segmentation](https://github.com/haesleinhuepf/git-bob-playground/issues/42)\n * [Resizing images](https://github.com/NFDI4BIOIMAGE/training/issues/356)\n* Programming\n * [Caching](https://github.com/NFDI4BIOIMAGE/SlideInsight/issues/28)\n * [Fixing bugs in notebooks](https://github.com/haesleinhuepf/git-bob-playground/issues/174)\n* Continuous Integration and Deployment\n * [Configuring Github workflows](https://github.com/haesleinhuepf/git-bob-playground/issues/146)\n * [Configuring a Jupyter Book](https://github.com/NFDI4BIOIMAGE/training/issues/381)\n* Data & Code Management\n * [Research Data Management & Folder Structures](https://github.com/haesleinhuepf/git-bob-playground/issues/45)\n * [Documenting source code](https://github.com/haesleinhuepf/git-bob/pull/29)\n * [Determining licenses of dependencies](https://github.com/haesleinhuepf/git-bob-playground/issues/101)\n * [Assisting scientific manuscript writing](https://github.com/haesleinhuepf/git-bob-manuscript/pull/9)\n * [Deleting files](https://github.com/haesleinhuepf/git-bob/issues/412)\n * [Converting tables to key-value pairs](https://github.com/haesleinhuepf/git-bob-playground/issues/103)\n * [Exporting Google Scholar profile as bibtex](https://github.com/haesleinhuepf/git-bob-playground/issues/114)\n * [Deciding for file formats: JSON versus YAML](https://github.com/haesleinhuepf/git-bob-playground/issues/117)\n * [Generating Galaxy workflows](https://github.com/haesleinhuepf/git-bob-playground/issues/123)\n * [Count citations of given DOIs](https://github.com/haesleinhuepf/git-bob-playground/issues/141)\n* Graphical User Interfaces\n * [Interactive drawing on an ipcanvas](https://github.com/haesleinhuepf/git-bob-playground/issues/121) \n* Statistics\n * [Filtering data and counting records](https://github.com/NFDI4BIOIMAGE/training/issues/299)\n * [Selecting ranges of columns](https://github.com/haesleinhuepf/git-bob-playground/issues/47)\n * [Summarizing data and plotting](https://github.com/NFDI4BIOIMAGE/training/issues/250)\n * [Writing text about well-known statistical methods](https://github.com/haesleinhuepf/git-bob-playground/issues/161)\n* Plotting\n * [Violing plots with simulated data](https://github.com/haesleinhuepf/git-bob-playground/issues/44)\n * [UMAPs with simulated data](https://github.com/haesleinhuepf/git-bob-playground/issues/41)\n * [Plotting a circle of triangles (in gitlab)](https://gitlab.com/haesleinhuepf/git-bob-gitlab-playground/-/issues/8)\n * [Pairplots with simulated data](https://github.com/haesleinhuepf/git-bob-playground/issues/48)\n * [Word clouds](https://github.com/haesleinhuepf/git-bob-playground/issues/76)\n* Science Communication\n * [Making slides for Deep Learning training](https://github.com/haesleinhuepf/git-bob-playground/issues/97)\n * [Making slides for Research Data Management training](https://github.com/haesleinhuepf/git-bob-playground/issues/96)\n * [Visualizing how Fourier-Transform works](https://github.com/haesleinhuepf/git-bob-playground/issues/22)\n * [Making Jupyter Notebooks for training](https://github.com/haesleinhuepf/git-bob-playground/issues/92)\n * [Making slides about text](https://github.com/haesleinhuepf/git-bob-playground/issues/98)\n* Fun\n * [Playing Tic-Tac-Toe](https://github.com/haesleinhuepf/git-bob-playground/issues/91)\n * [Story Telling for kids](https://github.com/haesleinhuepf/git-bob-playground/issues/82)\n * [PowerPoint Karaoke](https://github.com/haesleinhuepf/git-bob-playground/issues/99)\n * [Solving Advent of Code 2024 puzzles](https://github.com/haesleinhuepf/git-bob-advent-of-code)\n * [Solving the Halting Problem](https://github.com/haesleinhuepf/git-bob-playground/issues/156) [[2nd attempt](https://github.com/haesleinhuepf/git-bob-playground/issues/157)]\n* Things that did't work well\n * [How to use aider from python](https://github.com/haesleinhuepf/git-bob/issues/437#issuecomment-2539865080)\n * [How to use the atproto API](https://github.com/haesleinhuepf/git-bob-playground/issues/136)\n\n## Installation for development\n\n```\ngit clone https://github.com/haesleinhuepf/git-bob.git\ncd git-bob\n```\n\n### Usage as command-line tool (for development)\n\nYou can also install git-bob locally and run it from the terminal. \nIn this case, create a [GitHub token](https://github.com/settings/tokens) and store it in an environment variable named `GITHUB_API_KEY`. \nAlso 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-20241022\" or \"github_models:gpt-4o\".\nThen you can install git-bob using pip:\n\n```bash\npip install git-bob\n```\n\nYou can then use git-bob from the terminal on repositories you have read/write access to. \nIt is recommended to call it from the root folder of the repository you want to interact with.\n\n```bash\ngit clone https://github.com/<organization>/<repository>\ncd <repository>\ngit-bob <action> <organization>/<repository> <issue-number>\n```\n\nAvailable actions:\n* `review-pull-request`\n* `comment-on-issue`\n* `solve-issue`\n* `split-issue`\n\n## Limitations\n`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.\n\nAt the moment, these limitations can be observed:\n* `git-bob` was tested for Python projects mostly. It seems to be able to process Java and C++ as well.\n* It can only execute code in Jupyter Notebooks. \n* It sometimes hallucinates, especially in code reviews. E.g. it [claimed](https://github.com/haesleinhuepf/git-bob/pull/70) to have tested code, which was certainly not true.\n* 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. \n When using GitHub models, the maximum file length is 4k tokens. When using Anthropic's Claude, the maximum file length is 8k tokens.\n* When changing multiple files, it may introduce conflicts between the files, as it does not know about the changed contents of the other files.\n* It has only limited logic to control who is allowed to trigger it. \n If you are a repository member, you can trigger it. \n If others send a pull request, a repository member must allow the action to run manually.\n* `git-bob` is incompatible with locally running open-source/-weight LLMs. \n This might make sense when being executed locally only. In the GitHub-CI this might be impossible.\n* Recently tested `claude-3-5-sonnet-20241022`, `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.\n* `git-bob` is not allowed to modify workflow files, because it also uses GitHub workflows.\n* As git-bob is installed as part of git-hub workflows, its [download statistics](https://pypistats.org/packages/git-bob) might be misleading. There are not as many people downloading it as the numer of downloads suggest.\n\n## Similar projects\n\nThere are similar projects out there\n* [Claude Engineer](https://github.com/Doriandarko/claude-engineer)\n* [BioChatter](https://github.com/biocypher/biochatter)\n* [aider](https://github.com/paul-gauthier/aider)\n* [OpenDevin](https://github.com/OpenDevin/OpenDevin)\n* [Devika](https://github.com/stitionai/devika)\n* [GPT-Codemaster](https://github.com/dex3r/GPT-Codemaster)\n* [GitHub Copilot Workspace](https://githubnext.com/projects/copilot-workspace)\n* [agentless](https://github.com/OpenAutoCoder/Agentless)\n* [git-aid](https://github.com/Torantulino/git-aid)\n* [SWE-agent](https://github.com/princeton-nlp/SWE-agent)\n\n## Contributing\n\nFeedback and contributions are welcome! Just open an issue and let's discuss before you send a pull request. \nA [human](https://haesleinhuepf.github.io) will respond and comment on your ideas!\n\n## Citation\n\nIf you use git-bob, please cite it:\n```\n@misc{haase_2024_13928832,\n author = {Haase, Robert},\n title = {{Towards Transparency and Knowledge Exchange in AI- \n assisted Data Analysis Code Generation}},\n month = oct,\n year = 2024,\n publisher = {Zenodo},\n doi = {10.5281/zenodo.13928832},\n url = {https://doi.org/10.5281/zenodo.13928832}\n}\n```\n\n## Acknowledgements\n\nWe acknowledge the financial support by the Federal Ministry of Education and Research of Germany and by S\u00e4chsische Staatsministerium f\u00fcr Wissenschaft, Kultur und Tourismus in the programme Center of Excellence for AI-research \u201eCenter for Scalable Data Analytics and Artificial Intelligence Dresden/Leipzig\", project identification number: ScaDS.AI\n",
"bugtrack_url": null,
"license": "BSD-3-Clause",
"summary": "git-bob uses AI to solve Github-issues. It runs inside the Github CI, no need to install anything on your computer.",
"version": "0.16.0",
"project_urls": {
"Bug Tracker": "https://github.com/haesleinhuepf/git-bob/issues",
"Documentation": "https://github.com/haesleinhuepf/git-bob#README.md",
"Homepage": "https://github.com/haesleinhuepf/git-bob",
"Source Code": "https://github.com/haesleinhuepf/git-bob",
"User Support": "https://github.com/haesleinhuepf/git-bob/issues"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c9e98dcc8ae280e5eb5a4d96f7b004c9b97560de25578cb98aea6f9435814592",
"md5": "086743bd93c2a80845e74237a3b4ddce",
"sha256": "8b1404e2b0765f770304eaf08c0b950458f6fbc6143df03b3883e02fb5f7ff3f"
},
"downloads": -1,
"filename": "git_bob-0.16.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "086743bd93c2a80845e74237a3b4ddce",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 75604,
"upload_time": "2024-12-15T15:06:14",
"upload_time_iso_8601": "2024-12-15T15:06:14.147739Z",
"url": "https://files.pythonhosted.org/packages/c9/e9/8dcc8ae280e5eb5a4d96f7b004c9b97560de25578cb98aea6f9435814592/git_bob-0.16.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "87f5a83991436c7d36d5a36ad235698cd42bbac2d5db39e9da159407ce17cd74",
"md5": "82291096ba3e913546cf6a467f3f516b",
"sha256": "cbec8eaaebe63e0d2c074b4118310f584fd7f6a1ee42404db0e7737f1b8b93d6"
},
"downloads": -1,
"filename": "git_bob-0.16.0.tar.gz",
"has_sig": false,
"md5_digest": "82291096ba3e913546cf6a467f3f516b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 82645,
"upload_time": "2024-12-15T15:06:16",
"upload_time_iso_8601": "2024-12-15T15:06:16.655761Z",
"url": "https://files.pythonhosted.org/packages/87/f5/a83991436c7d36d5a36ad235698cd42bbac2d5db39e9da159407ce17cd74/git_bob-0.16.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-15 15:06:16",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "haesleinhuepf",
"github_project": "git-bob",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "anthropic",
"specs": []
},
{
"name": "openai",
"specs": []
},
{
"name": "google-generativeai",
"specs": []
},
{
"name": "pygithub",
"specs": []
},
{
"name": "toolz",
"specs": []
},
{
"name": "azure-ai-inference",
"specs": []
},
{
"name": "nbconvert",
"specs": []
},
{
"name": "nbformat",
"specs": []
},
{
"name": "Pillow",
"specs": []
},
{
"name": "matplotlib",
"specs": []
},
{
"name": "numpy",
"specs": []
},
{
"name": "scipy",
"specs": []
},
{
"name": "requests",
"specs": []
},
{
"name": "ipykernel",
"specs": []
},
{
"name": "setuptools",
"specs": []
},
{
"name": "wheel",
"specs": []
},
{
"name": "urllib3",
"specs": []
},
{
"name": "requests-toolbelt",
"specs": []
},
{
"name": "twine",
"specs": []
},
{
"name": "python-gitlab",
"specs": []
},
{
"name": "python-pptx",
"specs": []
},
{
"name": "mistralai",
"specs": []
},
{
"name": "docx2markdown",
"specs": []
}
],
"lcname": "git-bob"
}