有了GPT-3,再也不用手写commit message(翻译)

简介: 本文翻译的目的,主要想了解GPT3是什么,以及目前大家使用GPT3用来做什么,以及如何开发GPT3。

本文翻译的目的,主要想了解GPT3是什么,以及目前大家使用GPT3用来做什么,以及如何开发GPT3。

GPT-3


GPT-3是一个很多人或公司正在使用的协助开发的工具,比如:编写脚本、命令行等操作。

GPT-3指的是生成型预训练变换模型3(英语:Generative Pre-trained Transformer 3,简称GPT-3)是一个自回归语言模型,目的是为了使用深度学习生成人类可以理解的自然语言[1]。GPT-3是由在旧金山的人工智能公司OpenAI训练与开发,模型设计基于谷歌开发的变换语言模型。GPT-3的神经网路包含1750亿个参数,为有史以来参数最多的神经网路模型[2]。OpenAI于2020年5月发表GPT-3的论文,在次月为少量公司与开发人团释出应用程式介面的测试版。微软在2020年9月22日宣布取得了GPT-3的独家授权。 —— 维基百科 GPT-3

使用gitcommit,你将不需要花费时间去写git commit。 下面就让学习如何安装 gptcommit,以及享受一下GPT-3帮你写git commit。

背景


首先,我们先了解一下 git commit, git commit提交信息,是程序员与程序员之间交流他们开发代码的重要信息,特别在code review中。 尤其当代码发生重大变化或者写的代码极为复杂,我们需要一一详细描述代码块功能,非常的耗时而且无聊。 平时开发代码后,由于一不小心容易写fix: bug之类的提交记录,很想修改后,但是又没有什么好的办法。 同时复杂的这些随意的话术对code review也很难理解这段代码的真正含义是什么。 更糟糕的是,如果提交记录是fix: 修复文案错误等,会让code review更加毫无意义,甚至忽略掉需要code review的地方。 所以问题是写 git commit很费时,而且描述不准确又容易造成不必要误会,那么使用gptcommit会让你摆脱这些烦恼。

安装教程(几分钟)


环境准备


在安装gptcommit之前,你需要先准备以下几个环境:

安装Rust


Linux或Mac安装命令如下:

$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

OpenAI API Keys获取方式


国内没法正常访问,以下两种方式:

  • 这里去淘宝买一个API key
  • 或者翻墙出去购买一个

安装步骤


1.使用cargo安装gptcommit

cargo install --locked gptcommit

2.在本地某个仓库里安装执行一下命令,主要是初始化gptcommit git hook。这里需要你对这些仓库有git push的权限。

gptcommit install

3.设置全局变量OPENAI_API_KEY

export OPENAI_API_KEY="sk-..."

也可以直接将变量设置到全局文件中,如~/.bashrc, ~/.zshrc

demo实战


如果使用了后,会生成如下git commit:

Demo #1: the full installation and commit workflow, editing multiple rust files
Demo #2: a one-line change to a string inside a rust file.
Demo #3: Modifying non-code files, in this case a README.

参考对象


gptcommit参考之前的很受欢迎的commit 工具:

commitgpt目前已无法使用,因为它使用第三方的OpenAI API Key,由于官方OpenAI访问次数受限,必须要求每个用户都用自己的API key。


gptcommit集成了 git hook,可以直接用来git flow工作流的最后一步,同时,由于使用Rust,它执行速度会更快。


同时还参考gpt-commit-summarizer工具,它是直接作用在github Action持续集成中,而不是git 工作流。 总结commit记录是发生在PR阶段,而不是每次 commit。 该操作会直接将PR操作的commit进行汇总,然后直接提交,不需要再code review。


gptcommit参考gpt-commit-summarizer的设计点,但是主要针对是git commit的提交信息进行总结。

背后原理


git commit提交劫持主要分为两个部分:


首先,会将每个文件单独汇总,然后到OpenAI去生成commit 信息记录。


其次,汇总所有文件修改内容,也有两个要点,分别是:

  • 告诉AI生成一个修改的标题
  • 同时要生成修改的一些要点内容

最终输出的提交记录如下:

[title]
- [summary point 1]
- [summary point 2...]
[/changed/file A]
- [file summary point 1]
- [file summary point 2...]
[/changed/file B...]
- [file summary point 1...]
...

项目实战


接下来就在项目中实战吧。 执行命令cargo install --locked gptcommit安装或到github 仓库中去查看更多信息。 当然,你需要先在OpenAI里注册一个账号,同时拥有一个API key才能正在使用起来。

Github地址: github.com/zurawiki/gp…

下一步计划


后面也打算做一下更加有趣的功能:

  • 如何利用GPT-3去实现更加自动化 git flow工作流?
  • 如何跳过哪些大的总结?
  • 如何收集用户反馈,将commit信息更加有效?

最后,如果在使用过程有任何问题或者建议,请到Github开源地址写一个issue给我,我会很快处理。

参考资料


目录
相关文章
|
测试技术
读完这篇文章后,才发现Allpairs这款工具,让测试用例变得如此简单
读完这篇文章后,才发现Allpairs这款工具,让测试用例变得如此简单
437 0
|
1月前
|
Java
ChatGPT高效提问—prompt常见用法(续篇十二)
ChatGPT高效提问—prompt常见用法(续篇十二)
|
5月前
|
机器学习/深度学习 算法 计算机视觉
完全让ChatGPT写一个风格迁移的例子,不改动任何代码
完全让ChatGPT写一个风格迁移的例子,不改动任何代码
49 1
|
6月前
|
JSON Java 网络安全
使用chatgpt来生成一个接口试试
前几天开通了一个gpt账号,网上已经介绍非常多的信息了,自己也来试试gpt的强大功能。最近几天刚好在开发SSL证书相关的,来看看获取证书的开始时间和结束时间,就是证书的有效期。
64 0
使用chatgpt来生成一个接口试试
|
6月前
|
程序员 开发工具 git
【程序员英语 代码提交】C++工程师的代码提交艺术:git commit 时 精确表达与最佳实践
【程序员英语 代码提交】C++工程师的代码提交艺术:git commit 时 精确表达与最佳实践
177 1
|
6月前
|
数据采集 人工智能 搜索推荐
【ChatGPT 指令大全】怎么使用ChatGPT来辅助知识学习
【ChatGPT 指令大全】怎么使用ChatGPT来辅助知识学习
70 0
|
人工智能 自然语言处理 搜索推荐
不会出错的ChatGPT毫无意义
不会出错的ChatGPT毫无意义
113 0
不会出错的ChatGPT毫无意义
|
前端开发 Oracle 搜索推荐
代码冗余太多?给新人Code Review头都大了?
代码冗余太多?给新人Code Review头都大了?
104 0
|
人工智能 JavaScript 前端开发
不写代码,一句提示生成整个代码库,GPT-Engineer项目火了
不写代码,一句提示生成整个代码库,GPT-Engineer项目火了
279 0
|
数据采集 机器学习/深度学习 人工智能
论文修改100遍也别慌!Meta发布全新写作语言模型PEER:参考文献都会加
论文修改100遍也别慌!Meta发布全新写作语言模型PEER:参考文献都会加
129 0