发布于 2026-01-05 7 阅读
0

AI 生成的 Git 提交消息

AI 生成的 Git 提交消息

在我长达十年的开发生涯中,我见过一些最糟糕的提交信息。我并不责怪开发者,因为在提交代码的时候,很难记住自己刚刚做了什么。

图像是使用midjourney生成的

在这为期9 天的 OpenAI 系列中,我将研究 AI 项目及其代码,以帮助揭开任何开发人员如何构建 AI 生成项目的神秘面纱。

使用OpenSauced查找更多人工智能项目

我最不想做的就是在高效编码一天后,还要花时间去查看git diff并找出问题所在。我喜欢Nutlope/aicommits

GitHub 标志 Nutlope / aicommits

一款利用人工智能自动生成 Git 提交信息的命令行工具。

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}`,
  },

  ...
Enter fullscreen mode Exit fullscreen mode

我目前还没有使用 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';
}
Enter fullscreen mode Exit fullscreen mode

最后,我仔细查看了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
});
Enter fullscreen mode Exit fullscreen mode

还有很多东西我想深入研究,但剩下的就留给你们自己去探索吧。我建议在本地安装 aicommits 来试用。记得注册 OpenAI 账号并添加你的令牌。

aicommits 在命令行上的演示

如果我需要修改什么,或者您对代码有什么见解,请留言。我很享受阅读代码并了解其工作原理的过程。感谢 Nutlope 与我们分享,也请务必向上游贡献代码。开源万岁!

另外,如果您有使用 OpenAI 的项目,请在评论区留下链接。我很乐意查看并将其纳入我的“OpenAI 九天”系列文章中。

保持你的俏皮劲儿。

文章来源:https://dev.to/bd​​ougieyo/ai- generated-git-commit-messages-4j7g