跳转到主要内容

基于AI的用于处理GitHub问题和pull-requests的助手

项目描述

git-bob

git-bob使用AI来解决GitHub问题和审查pull-requests。它运行在GitHub CI中,无需在您的计算机上安装任何东西。

demo_fix_typos.png

在内部,它使用Anthropic的ClaudeOpenAI的chatGPT来理解文本,并使用pygithub与问题和pull-requests交互。

免责声明

git-bob是一个旨在简化软件开发项目中的GitHub交互的研究项目。在内部,它使用人工智能/大型语言模型来生成满足用户请求的文本和代码。用户有责任根据良好的科学实践验证生成的代码。

当使用git-bob时,您需要配置它以使用API密钥来访问AI模型。您需要为此付费,并且在使用软件时必须小心。如果您不了解成本和后果,请不要使用这项技术。

[注意] 当通过git-bob使用Anthropic、OpenAI或任何其他端点时,您将受各自公司或组织服务条款的约束。您输入的github问题、pull-requests和消息将被传输到他们的服务器,并可能在那里被处理和存储。请确保不要提交任何敏感、机密或个人数据。此外,使用这些服务可能需要付费。

作为Github动作的安装

有关如何将git-bob作为github动作安装到您的存储库的详细教程,请参阅此处。简而言之,要在您的Github存储库中使用git-bob,您需要

  • 设置像这个文件夹中所示的那样。
    • 请确保将pip install -e .替换为特定的git-bob版本,例如pip install git-bob==0.2.2
    • 通过指定环境变量GIT_BOB_LLM_NAME在流程文件中配置您想要使用的LLM。这些已经过测试
  • claude-3-5-sonnet-20240620
  • gpt-4o-2024-08-06(如果您处理大文件,建议使用,< 16k tokens)
  • github_models:gpt-4o
  • github_models:meta-llama-3.1-405b-instruct
  • 根据上述配置的LLM,配置一个名为OPENAI_API_KEYANTHROPIC_API_KEYGH_MODELS_API_KEY的Github密钥。您可以从以下位置获取这些密钥
  • 配置Github动作以在问题和pull-requests上运行工作流程。另外,使用GITHUB_TOKEN给工作流程提供写权限。

要触发git-bob,您需要用以下命令在问题或pull-requests上评论

git-bob comment

如果问题是复杂的,应该分成子问题,您可以使用以下命令

git-bob split

您还可以使用以下命令来触发git-bob解决一个问题。然后它将尝试解决问题并发送pull-request。此操作也可以用来修改pull-requests中的代码。

git-bob solve

推荐的工作流程

以下是使用git-bob的推荐工作流程

  1. 创建一个问题,描述问题或任务。
  2. 在问题上评论git-bob commentgit-bob think about thiscomment的别名)以触发git-bob制定计划。
  3. 对git-bob的任何澄清或附加信息做出回应。
  4. 在问题上评论git-bob solvegit-bob implement thissolve的别名)以触发git-bob。
  5. 等待git-bob创建解决该问题的pull request(PR)。
  6. 审查PR,并在需要时在PR或原始问题上评论。
  7. 等待git-bob创建新的PR或修改现有的PR以包含所需更改。
  8. 如有必要,重复步骤3-5,直到问题得到满意解决。

用例示例

解决github问题

git-bob可以修复拼写错误(问题pull-request

git-bob可以改进代码文档(问题pull-request

审查Pull-Requests

git-bob可以审查pull-requests并提供反馈(pull-request

分割问题

要将主问题分割成子问题,请使用命令git-bob split this issue

通用提示

git-bob还可以用来回答问题(问题)。

开发时的安装

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

作为命令行工具的安装(用于开发)

您还可以在本地上安装git-bob并从终端运行它。在这种情况下,创建一个GitHub令牌并将其存储在名为GITHUB_API_KEY的环境变量中。另外,创建一个名为GIT_BOB_LLM_NAME的环境变量,包含您要使用的LLM名称,例如“gpt-4o-2024-05-13”或“claude-3-5-sonnet-20240620”或“github_models:gpt-4o”。然后,您可以使用pip安装git-bob。

pip install git-bob

作为命令行工具的使用(用于开发)

然后,您可以从终端使用git-bob来访问您有读写权限的仓库。建议从您想交互的仓库的根目录调用它。

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

可用操作

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

局限性

git-bob是一个研究项目,存在局限性。它作为讨论和进一步发展的基础。一旦LLM变得更好,git-bob也会变得更好。

目前,这些局限性可以观察到

  • git-bob主要在Python项目中进行了测试。它似乎也能处理Java和C++。
  • 它不能解决需要运行和测试代码的问题。
  • 它有时会出现幻觉,尤其是在代码审查时。例如,它声称已经测试了代码,这显然是不正确的。
  • 它不能解决需要更改长文件的问题,因为LLM的输出受最大令牌数限制(例如,gpt-4o-2024-08-06为16k)。当使用OpenAI的模型时,它将多个请求的输出合并到最大文件长度约64k个令牌。这可能会导致在响应拼接处遗漏一些空格或换行符。当使用github模型时,最大文件长度为4k个令牌。当使用anthropic的claude时,最大文件长度为8k个令牌。
  • 当更改多个文件时,它可能会在文件之间引入冲突,因为它不知道其他文件的更改内容。
  • 它只有有限的逻辑来控制谁可以触发它。如果您是仓库成员,您可以触发它。如果其他人发送拉取请求,仓库成员必须手动允许执行操作。
  • git-bob与本地运行的开源/重量级LLM不兼容。当仅在本地执行时,这可能是有意义的。在GitHub-CI中可能不可能。
  • 最近测试了claude-3-5-sonnet-20240620gpt-4o-2024-08-06github_models:gpt-4ogithub_models:meta-llama-3.1-405b-instruct模型,它们可以产生有用的结果。模型gemini-1.5-flash-001也受到技术支持,但其结果并不太有用。

类似项目

存在类似的项目

贡献

欢迎反馈和贡献!请在发送拉取请求之前打开问题并让我们讨论。一个人类将回应并评论您的想法!

致谢

我们感谢德国联邦教育与研究部以及萨克森州科学与文化部在“人工智能研究卓越中心‘可扩展数据分析与人工智能德累斯顿/莱比锡中心’”项目中的财务支持,项目识别号:ScaDS.AI

项目详情


下载文件

下载适用于您平台的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。

源码分发

git_bob-0.4.0.tar.gz (29.4 kB 查看哈希值)

上传时间 源码

构建分发

git_bob-0.4.0-py3-none-any.whl (25.8 kB 查看哈希值)

上传时间 Python 3

支持