可以从ChatGPT学到什么(二)—— 利用AI自动生成git commit信息

简介: 自从上一次写完可以从ChatGPT学到什么(一),简单对ChatGPT有一定了解后,其背后的技术原理是基于OpenAI GPT-3协议去实现的智能对话的。

背景


自从上一次写完可以从ChatGPT学到什么(一),简单对ChatGPT有一定了解后,其背后的技术原理是基于OpenAI GPT-3协议去实现的智能对话的。


再加上我看到国外有很多相关基于GPT开发的开源应用,因此萌生了自己动手搞一个,加上之前自己翻译了一篇文章有了GPT-3,再也不用手写commit message,他是基于Rust语言写,想着直接对着他照搬一个到Node.js版本,通过这种小项目实践,我们可以学习到:

  • OpenAI提供了哪些模型算法
  • 不同模型算法分别可以应用到哪些场景
  • 真正调用OpenAI需要注意哪些事项


接下来我们开始动手吧!这里基本前提是你得拥有OpenAI API keys,可以到[OpenAI]。


首先我们先来看看node-gptcommit是做什么的。

node-gptcommit


node-gptcommit是基于gptcommit实现思路去开发的node版本工具命令,可以根据项目中git的diff文件列表去生成git commit信息。


具体效果可以参考以下步骤:

1.安装

npm install node-gptcommit -g

2.设置openai的apikey

ngptcommit config --set openai.apiKey=sk-xxxxx

3.开始使用

请到某个git仓库的根目录使用,具体如下:

cd xxx
ngptcommit preview

就可以看到具体返回的信息,具体下文所示:

"🤖 GPT-3 返回的总结内容如下:"
feat: 
- 更新项目配置,加强 TypeScript 的选项。
- 添加了包含了推荐和 Prettier 的扩展,设置特定规则和排除的 `tslint.json` 文件。
- 包含了文档配置的 `typedoc.js` 文件。
- 在新的 `tsconfig.json` 中添加严格的 TypeScript 选项。
- 在新的 `tslint.json` 文件中添加了推荐和 Prettier 的扩展。
- 配置了特定规则的排除和 false 选项。
- 添加了文档配置的 `typedoc.js` 文件。

OpenAI使用说明


OpenAI API说明文档,地址:openai docs


首先,我们需要了解几个概念:

  • Model 模型,是AI算法模型,根据不同模型可以推算出不同的结果
  • Completion 任务结果,指的调用模型后返回的结果
  • apiKey api秘钥,openai对调用api方的鉴权token

Model模型


OpenAI提供了几个模型,主要分别以下几种:

基于GPT-3模型开发的模型:

  • GPT-3.5-turbo,最新的GPT-3.5模型,主要针对对话聊天的自然语言和代码处理,也能处理传统的任务,成本只有text-davinci-003十分之一
  • text-davinci-003,对各类型语言都友好支持,比其他模型更加擅长输出更多更长更高质量的文案,而且还会在文案补全相关逻辑


除了GPT-3模型,openAI还提供了几个其他模型(包括:beta版本),如下:

  • DALL·E,根据自然语言生成图片。
  • Whisper,语音识别模型,已经开源的模型
  • Embeddings,检测词语的关联关系,能实现搜索、分类、推荐、异常检测、多样性测试、标签等
  • Codex,基于GPT-3生成专门针对代码优化的模型,最擅长的是Python语言,精通十几种语言,包括JavaScript、Go、Perl、PHP、Ruby、SWIFT、TypeScrip、SQL,甚至是Shell等。
  • Moderation,按照OpenAI内容安全使用策略,识别内容是否非法。

使用


1.安装依赖

npm install openai

2.初始化

import { Configuration, OpenAIApi } from 'openai';
const config = new Configuration({
    apiKey,
});
this.openai = new OpenAIApi(config);

3.根据不同模型调用

// gpt-3.5-turbo
const prompt = '请问你是谁?';
const response = await this.openai.createChatCompletion({
    model: "gpt-3.5-turbo",
    messages: [{
        role: "user", // system: 机器人, user: 用户, assistant: 助手
        content: prompt
    }]
});
// debug('调用openai接口返回内容:', response.data)
return response.data.choices[0]?.message?.content ?? "";
// 生成一张黑色暹罗猫的图片
const response = await openai.createImage({
  prompt: "a black  cat",
  n: 1,
  size: "1024x1024",
});
image_url = response.data.data[0].url;
// 

生成猫的图片:

1db0daa19051f8152b51a5d5e58a3cc.png

了解到OpenAI提供了如此多的API,是否可以利用他们来开发一些辅助工具来提升我们开发幸福感呢?


目前已经有很多这种开源小工具了,比如:gptcommitBibiGPTroomGPT等。


接下来我们以gptcommit为参考,尝试自己去实现。

开发ngptcommit的背后


gptcommit实现原理


gptcommit是基于Rust开发,但是从看代码的过程中发现Rust其实和Typescript差不多类似的语法,所以很容易上手。


下面有张图,大概就是gptcommit实现的过程:

727abcb4b1d8d3648985675c7166ddc.png

Node命令行工具


既然知道了gptcommit实现原理,那么要开发一个node的命令行工具,具体有哪些步骤呢?

1.在package.json里配置命令行名称bin:xxx:

{
    ...
    "bin": {
        "ngptcommit": "bin/ngptcommit.js"
    }
    ...
}

2.针对命令行工具,node.js要求在文件开头必须表明#!/usr/bin/env node

#!/usr/bin/env node
import run from '../dist/cli.js';
run();

到了这里,我们基本就开始动手撸代码了,这里我还推荐一些npm包,能帮你快速开发命令行工具,有以下这些:

  • rollup,比webpack更加适合开发js库的构建工具
  • debug,更好打印debug日志,而不是所有都console.log
  • cac,非常轻量的库,能帮你更快开发一个命令行工具
  • picocolors,可以将在命令行输出的带颜色文字
  • progress,可以在命令行显示进度条

遇到的问题


1.国内openAI无法连接上? 需要在代码预先判断连接,设置一个10秒超时,避免已经失败了,还要再继续去请求。

2.openAI访问频率有限制,如何解决? 需要加上每次请求后等待缓冲时间,避免因为多次请求导致失败。利用p_limit库,加上每次请求利用setTimeout设置缓冲等待时间,避免多次高并发请求,后续可以优化模板内容,避免多次重复请求。

3.失败重试如何实现? 通过失败次数,加上递归自己,实现通过失败次数实现失败重试。

总结


经过开发这个工具,对OpenAI的有了更深入的了解,也明白为什么会有人说以后会出现一个岗位,叫AI驯服师或者AI提问者


目前我个人对OpenAI类似的AI,可以认知到点如下:

  • 要学习如何向AI提问,更高效的向AI提问,可能会成为未来的一种趋势
  • AI更多是一种辅助工具,而不是会替换现有的岗位上的人,能帮忙人更高效的完成当前的工作
  • 会有越来越多AI平台出现,甚至可能会出现一种大语言模型,或者面向AI编程语言,只需要写少量代码实现功能

参考资料


目录
相关文章
|
2天前
|
机器学习/深度学习 人工智能 编解码
VideoVAE+:AI 生成视频高保真重建和跨模态重建工具,基于文本信息指导视频重建,提升视频细节质量
VideoVAE+ 是香港科技大学推出的先进跨模态视频变分自编码器,通过时空分离压缩机制和文本指导,实现了高效视频压缩与精准重建。
25 7
VideoVAE+:AI 生成视频高保真重建和跨模态重建工具,基于文本信息指导视频重建,提升视频细节质量
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
PeterCat:一键创建开源项目 AI 问答机器人,自动抓取 GitHub 仓库信息、文档和 issue 等构建知识库
PeterCat 是一款开源的智能答疑机器人,能够自动抓取 GitHub 上的文档和 issue 构建知识库,提供对话式答疑服务,帮助开发者和社区维护者高效解决技术问题。
41 7
PeterCat:一键创建开源项目 AI 问答机器人,自动抓取 GitHub 仓库信息、文档和 issue 等构建知识库
|
24天前
|
机器学习/深度学习 Web App开发 人工智能
Amurex:开源AI会议助手,提供实时建议、智能摘要、快速回顾关键信息
Amurex是一款开源的AI会议助手,提供实时建议、智能摘要、快速回顾关键信息等功能,帮助用户提升会议效率。本文将详细介绍Amurex的功能、技术原理以及如何运行和使用该工具。
77 18
Amurex:开源AI会议助手,提供实时建议、智能摘要、快速回顾关键信息
|
14天前
|
存储 人工智能 安全
从AI换脸到篡改图像,合合信息如何提升视觉内容安全?
从AI换脸到篡改图像,合合信息如何提升视觉内容安全?
从AI换脸到篡改图像,合合信息如何提升视觉内容安全?
|
29天前
|
人工智能 关系型数据库 数据库
Perplexideez:开源本地 AI 搜索助手,智能搜索信息来源追溯
Perplexideez 是一款开源的本地 AI 搜索助手,旨在通过智能搜索和信息来源追溯功能,提升用户的搜索体验。它支持多用户、单点登录(SSO),并提供美观的搜索结果展示。Perplexideez 基于 Postgres 数据库,集成了 Ollama 或 OpenAI 兼容的端点,使用 SearXNG 实例进行网络搜索。
86 14
Perplexideez:开源本地 AI 搜索助手,智能搜索信息来源追溯
|
7天前
|
人工智能 分布式计算 供应链
高效提取图片信息:AI技术赋能企业数字化转型
本文介绍了如何通过AI技术高效提取图片中的结构化信息,提升企业运营效率。具体应用场景包括票据与合同管理、电商商品信息管理、保险理赔和物流单据处理等。AI技术能将传统人工录入流程缩短至秒级,准确率高达99%,减少人为错误,提升客户满意度。方案优势在于易于扩展、灵活高性价比的调用模式及便捷安全的云产品接入。文中还详细描述了部署应用、访问示例应用及使用官方示例进行信息提取的操作步骤,并提供了参考链接和源码下载途径。
|
8天前
|
人工智能 搜索推荐 iOS开发
OpenAI推出适用于iPhone的ChatGPT,与Apple实现具有里程碑意义的AI整合
OpenAI推出适用于iPhone的ChatGPT,与Apple实现具有里程碑意义的AI整合
|
2月前
|
人工智能 搜索推荐 API
Perplexica:开源 AI 搜索引擎,Perplexity AI 的开源替代品,支持多种搜索模式、实时信息更新
Perplexica 是一款开源的 AI 驱动搜索引擎,支持多种搜索模式和实时信息更新,适用于个人、学术和企业等不同场景。
189 6
Perplexica:开源 AI 搜索引擎,Perplexity AI 的开源替代品,支持多种搜索模式、实时信息更新
|
11天前
|
机器学习/深度学习 人工智能 安全
合合信息亮相CSIG AI可信论坛,全面拆解视觉内容安全的“终极防线”!
合合信息在CSIG AI可信论坛上,全面拆解了视觉内容安全的“终极防线”。面对AI伪造泛滥的问题,如Deepfake换脸、PS篡改等,合合信息展示了其前沿技术,包括通用PS检测系统和AIGC与换脸检测系统,有效应对视觉内容安全挑战。公司在国际赛事中屡获殊荣,并联合多方发布《文本图像篡改检测系统技术要求》,推动行业标准化发展。通过技术创新,合合信息为金融、政企等领域提供可靠保障,守护社会信任,引领视觉内容安全新方向。
30 0
|
2月前
|
人工智能 自然语言处理 算法
【通义】AI视界|OpenAI最新发布!ChatGPT搜索功能强势来了,挑战谷歌?
本文由【通义】自动生成,精选24小时内的重要资讯:OpenAI推出ChatGPT搜索功能挑战谷歌,微软披露130亿美元投资OpenAI,Reddit首次盈利股价暴涨20%,软银CEO孙正义看好英伟达及“超级AI”前景,谷歌云与沙特PIF共建全球AI中心。更多内容请访问通通知道。