如何让AI 帮你生成 git 提交信息

在协同开发的项目中,我们肯定避免不了使用git提交代码,所以经常会看到了一些描述不清的提交信息。当遇到种情况时,我们也不必为此责怪开发人员,因为我们确实很难记住你在 git 提交时刚刚做了什么。

GitHub Nutlope / aicommits

一个使用 AI 帮您编写 git 提交消息的 CLI

什么是 Nultope/aicommits?

Aicommits 是一个 CLI(脚手架),它可以使用 AI 为你编写 git 提交消息。

未知的推文媒体内容

它是如何工作的?

本篇文章本意是着重介绍代码的 AI 部分,但一打开 GitHub,我惊奇地看到了 TABS、jk的使用。这就很有意思,因为 CLI 工具cleye这个工具也是用到了TABS、jk,它给我留下了深刻的印象。我以前也搭建过一些 CLI,而这个 cleye 是在命令行上构建 aicommits 交互的首选工具。这是它很优秀的地方。

如果您想查看 CLI 实现,可以快速阅读src/cli.ts。

// src/cli.tsconst 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.tsif (response.statusCode === 500) {errorMessage += '; 查看 API 状态: https://status.openai.com';
}

最后,看一下createCompletion函数,这才是真正实现功能的地方。

我在下面留下了关于每一行在做什么的解释

// src/utils/openai.tsconst completion = await createCompletion(apiKey, {model, // text-davinci-003 - 用于更长的输出和一致的指令prompt, // nutlope提供的promptTemplatetemperature: 0.7, // 数字越大,输出越随机top_p: 1, // 类似温度但结果不同frequency_penalty: 0, // 降低模型重复同一行的可能性presence_penalty: 0, // 增加模型谈论新话题的可能性max_tokens: 200, // 这将要花你多少钱?stream: false, // 部分消息发送关闭n: completions, // 为每个输入消息生成多少个聊天完成选项
});

还有很多我想深入挖掘,但我把剩下的留给你们看。我建议在本地安装 aicommits 进行试用。前提是你已经注册了 OpenAI 已经添加了你的令牌。

aicommits 在命令行上的演示

本文正在参加「金石计划」

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/28629.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux内核中user、sys、iowait计算

Linux源代码路径: kernel/sched/cputime.c void account_user_time(struct task_struct *p, u64 cputime) {int index;/* Add user time to process. */p->utime += cputime;account_group_user_time(p, cputime);index = (task_nice(p) > 0) ? CPUTIME_NICE : CPUTIM…

编译原理:代替LR的MP:2.遇到的问题

用指针加速 MP是multi-pass,多遍分析法,它是从“先乘除后加减”中得来的灵感。在实践中,发现C语言优先级有15级,如果将源代码处理15遍,每一遍都从头开始找,势必很慢。所以,有了用指针加速的想法…

Attention机制到底是什么?

AI算法之一 的Attention机制到底是什么,你知道吗? 这里写目录标题 1. Attention 的本质2. Attention的3大优点3. Attention的原理3.Attention的类型3.1计算区域3.2 所用信息3.3 结构层次 4. 模型方面5. 相似度计算 1. Attention 的本质 Attention(注意…

Redis 面试热点(二)

在前一篇文章中,我们介绍了 Redis 的基础知识和一些常见面试问题。本文将继续探讨 Redis 面试中的一些高级话题,包括 Redis 的事务、Lua 脚本、缓存一致性、热 Key 问题以及 Redis 与其他数据库的对比。 1. Redis 事务 Redis 事务的特性 原子性: Redi…

构建数字化校园,开启创新教育模式

在当今信息化时代,教育的转型升级已成为推动社会进步与发展的关键力量。构建数字化校园,不仅是对传统教育模式的革新,更是开启一场以技术赋能教育、创新驱动成长的教育革命。这一进程旨在通过深度融合信息技术与教育教学实践,重塑…

hive on spark 记录

环境&#xff1a; hadoop 2.7.2 spark-without-hadoop 2.4.6 hive 2.3.4 hive-site.xml <property><name>hive.execution.engine</name><value>spark</value> </property> <property><name>spark.yarn.jars</name>&l…

【代码随想录——动态规划——第三周】

1.目标和 这里设置背包的最大长度为2100即可&#xff0c;因为题目中有说数组之和小于1000.但考虑到我们需要实行jnums[i]所以保守起见我们设置的数应该稍大于2000即可&#xff0c;这里我们设置为2100。 1.1 我的解法&#xff08;粗糙了&#xff09; func findTargetSumWays(n…

Jackson指定json的key

指定json的key ‍ ‍ 要在序列化JavaBean时指定JSON的key&#xff0c;可以使用JsonProperty​注解来指定JavaBean属性序列化到JSON时使用的key。以下是一个简单的示例&#xff1a; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.da…

品质主管的面试题目

在品质主管的面试中,面试官可能会提出一系列问题来评估应聘者的经验、技能和专业知识。以下是一些常见的品质主管面试题,你可以提前准备,以更好地展示自己的能力和适应性。 一、自我介绍与背景了解 请简单介绍一下自己,包括教育背景、工作经验等。你在过去的工作经历中,主…

数据分析------知识点(六)

如何用数据说话 确定问题 如何写好数据分析报告中的确定问题部分 数据分析报告是数据分析师展示工作成果、影响业务决策的重要工具。而确定问题是数据分析报告的第一个也是最关键的部分。只有正确地确定了问题&#xff0c;后续的分析才能有的放矢&#xff0c;产生真正的价值…

BetterZip 5软件安装包下载

BetterZip是一款功能强大的Mac解/压缩软件&#xff0c;可以满足用户对文件压缩、解压、加密和保护等方面的需求。以下是关于BetterZip软件的主要功能、特点和使用方法的详细介绍&#xff0c;以及对其用户友好度、稳定性和安全性的评价。 安 装 包 获 取 地 址: BetterZip 5-安…

R语言 | 绘制带P值的差异柱状图

原文链接&#xff1a;R语言 | 绘制带P值的差异柱状图 本期教程 小杜的生信笔记&#xff0c;自2021年11月开始做的知识分享&#xff0c;主要内容是R语言绘图教程、转录组上游分析、转录组下游分析等内容。凡是在社群同学&#xff0c;可免费获得自2021年11月份至今全部教程&…

Docker配置代理

有时候我们在使用docker下载镜像的时候可能想要配置代理区下载那么本文就给大家分享一下docker怎么配置代理。 假设你已经有了代理&#xff0c;那就编辑/usr/lib/systemd/system/docker.service 在[Service]下添加 Environment"HTTP_PROXYhttp://127.0.0.1:6666/" E…

免费公开的源代码

虽然免费公开的软件被称为免费软件&#xff0c;但是一般不会公开源代码。另外&#xff0c;公开了源代码&#xff0c;并且可以免费使用&#xff0c;而且谁都可以自由进行修改并再次发布的软件被称为开源软件。 开源软件并不是特定企业开发的&#xff0c;大多数是由有关人士组织…

Spring 事务传播行为之Propagation.NESTED REQUIRES_NEW等探讨

当一个事务方法&#xff08;标记为Transactional(propagation Propagation.NESTED))被另一个活动事务调用时&#xff0c;它会创建一个“保存点”&#xff08;Savepoint&#xff09;作为新的事务开始点。这意味着&#xff0c;如果这个嵌套事务方法内部发生异常并导致回滚&#…

深入探讨:Spring与MyBatis中的连接池与缓存机制

深入探讨&#xff1a;Spring与MyBatis中的连接池与缓存机制 引言 在现代应用程序开发中&#xff0c;性能优化是一个永恒的话题。而在企业级Java应用开发中&#xff0c;Spring和MyBatis是两种非常流行的框架&#xff0c;它们的连接池和缓存机制对应用程序的性能有着至关重要的…

Vue55-TodoList案例-本地存储

一、TodoList案例-本地存储 此时&#xff0c;修改对象里面的属性&#xff0c;watch监视不到&#xff01; 需要深度监视&#xff0c;就不能用简写形式&#xff01; 二、jeecg-boot中的本地存储 jeecg-boot中&#xff0c;浏览器的本地存储&#xff0c;存储的是token&#xff01;…

kali - 配置静态网络地址 + ssh 远程连接

文章目录 观前提示&#xff1a;本环境在 root 用户下kali 配置静态网络地址打开网络配置文件 kali 配置 ssh 远程连接 观前提示&#xff1a;本环境在 root 用户下 kali 配置静态网络地址 打开网络配置文件 vim /etc/network/interfaces出现一下内容 # This file describes …

Parallels Desktop 19 for mac破解版安装激活使用指南

Parallels Desktop 19 for Mac 乃是一款适配于 Mac 的虚拟化软件。它能让您在 Mac 计算机上同时运行多个操作系统。您可借此创建虚拟机&#xff0c;并于其中装设不同的操作系统&#xff0c;如 Windows、Linux 或 macOS。使用 Parallels Desktop 19 mac 版时&#xff0c;您可在 …

git 如何撤销已经 push 的 merge

今天在合并代码时, 发现自己失误把另外一个分支 B 的代码合并到了自己分支 C, 于是想到要撤销这次 merge 一般地, 如果我们想要撤销某次 commit 可以 git revert <commit-id>. 然而, 对于 merge 类型的 commit 不能直接 git revert <commit-id> 这里举个例子: 我…