基于AI的用于处理GitHub问题和pull-requests的助手
项目描述
git-bob
git-bob使用AI来解决GitHub问题和审查pull-requests。它运行在GitHub CI中,无需在您的计算机上安装任何东西。
在内部,它使用Anthropic的Claude或OpenAI的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_KEY
、ANTHROPIC_API_KEY
或GH_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的推荐工作流程
- 创建一个问题,描述问题或任务。
- 在问题上评论
git-bob comment
或git-bob think about this
(comment
的别名)以触发git-bob制定计划。 - 对git-bob的任何澄清或附加信息做出回应。
- 在问题上评论
git-bob solve
或git-bob implement this
(solve
的别名)以触发git-bob。 - 等待git-bob创建解决该问题的pull request(PR)。
- 审查PR,并在需要时在PR或原始问题上评论。
- 等待git-bob创建新的PR或修改现有的PR以包含所需更改。
- 如有必要,重复步骤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-20240620
、gpt-4o-2024-08-06
、github_models:gpt-4o
和github_models:meta-llama-3.1-405b-instruct
模型,它们可以产生有用的结果。模型gemini-1.5-flash-001
也受到技术支持,但其结果并不太有用。
类似项目
存在类似的项目
贡献
欢迎反馈和贡献!请在发送拉取请求之前打开问题并让我们讨论。一个人类将回应并评论您的想法!
致谢
我们感谢德国联邦教育与研究部以及萨克森州科学与文化部在“人工智能研究卓越中心‘可扩展数据分析与人工智能德累斯顿/莱比锡中心’”项目中的财务支持,项目识别号:ScaDS.AI
项目详情
下载文件
下载适用于您平台的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。
源码分发
构建分发
git_bob-0.4.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 02e078db0795b141caed1478c046dd0a291b1ca9ac0a0e43154dbfaf8e2465a7 |
|
MD5 | aa117398680c96f5b77782a7cd0739ee |
|
BLAKE2b-256 | d953d76d4e26bcb561f4e7fb0e7a03187811908f28e1d2be87a7316f17e08d90 |
git_bob-0.4.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1412c3eea234d0a305b48adf872a022ab5f20ebd9e121e770c58bbd075890b40 |
|
MD5 | b830b95c2b3ce8584fa0c266e13c4b75 |
|
BLAKE2b-256 | a46a760d6943be5d6a06b133d29eb602e1d50d3882e04d0093b54e3de2945dc0 |