AI 生成的 Git 提交消息
在我长达十年的开发生涯中,我见过一些最糟糕的提交信息。我并不责怪开发者,因为在提交代码的时候,很难记住自己刚刚做了什么。
图像是使用midjourney生成的
在这为期9 天的 OpenAI 系列中,我将研究 AI 项目及其代码,以帮助揭开任何开发人员如何构建 AI 生成项目的神秘面纱。
使用OpenSauced查找更多人工智能项目
我最不想做的就是在高效编码一天后,还要花时间去查看git diff并找出问题所在。我喜欢Nutlope/aicommits。
Nutlope/aicommits是什么?
Aicommits 是一个命令行工具,它利用人工智能自动生成 Git 提交信息。在我参加 OpenAI 的 9 天活动中,你会经常看到@nutlope的项目。他一直在发布很棒的项目,并在 Twitter 上分享。
它是如何运作的?
这篇文章原本是想重点介绍代码中的 AI 部分,但当我查看 GitHub 时,却惊讶地发现居然用了制表符(JK)。让我眼前一亮的是一个名为cleye(名字起得真巧妙)的命令行工具。我以前也写过一些 CLI 工具,而 cleye 正是我用来在命令行中构建 aicommits 交互的工具。以后我会深入研究 cleye,或许还能用它做点什么。
如果您想查看 CLI 实现,可以快速阅读src/cli.ts文件。
// src/cli.ts
const request = https.request({
port: 443,
hostname: 'api.openai.com',
path: '/v1/completions',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': postContent.length,
Authorization: `Bearer ${apiKey}`,
},
...
我目前还没有使用 OpenAI 构建任何东西,但这是一个很好的例子,展示了如何着手使用它。
现在查看代码src/utils/openai.ts,可以看到 OpenAI 被调用并使用了/v1/completions路径。根据 README 文件,这并非 ChatGPT 的文本补全,而是常规的 GTP-3 文本补全。
REST 调用之后,会对响应进行一些清理工作,并运行这个智能错误检查器。这是因为 OpenAI 经常出现停机维护和服务器负载较高的情况。
// src/utils/openai.ts
if (response.statusCode === 500) {
errorMessage += '; Check the API status: https://status.openai.com';
}
最后,我仔细查看了createCompletion函数,这才是真正实现魔法的地方。我发现它比阅读 OpenAI 的文档更容易理解,OpenAI 的文档对我来说有点晦涩难懂。我希望它能有搜索功能(为什么没有搜索功能?)。
我在下面留下了对每一行代码作用的注释。
// src/utils/openai.ts
const completion = await createCompletion(apiKey, {
model, // text-davinci-003 - made for longer output, and consistent instruction
prompt, // promptTemplate provided by nutlope
temperature: 0.7, // higher the number, the more random the output
top_p: 1, // like temperature but different results
frequency_penalty: 0, // decreasing the model's likelihood of repeating the same line
presence_penalty: 0, // increasing the model's likelihood of talking about new topics
max_tokens: 200, // how much will this cost you?
stream: false, // partial message sending is off
n: completions, // How many chat completion choices to generate for each input message
});
还有很多东西我想深入研究,但剩下的就留给你们自己去探索吧。我建议在本地安装 aicommits 来试用。记得注册 OpenAI 账号并添加你的令牌。
如果我需要修改什么,或者您对代码有什么见解,请留言。我很享受阅读代码并了解其工作原理的过程。感谢 Nutlope 与我们分享,也请务必向上游贡献代码。开源万岁!
另外,如果您有使用 OpenAI 的项目,请在评论区留下链接。我很乐意查看并将其纳入我的“OpenAI 九天”系列文章中。
保持你的俏皮劲儿。
文章来源:https://dev.to/bdougieyo/ai- generated-git-commit-messages-4j7g
