最近的 ChatGPT 应该不必我多说了,不过防止有朋友还没收到相关推送,我仍是简略介绍两句:

了解 ChatGPT

ChatGPT 是 OpenAI 的一个产品,是继GPT-3.5 系列的主力模型之一,这一模型能够与人类进行说话般的交互,能够答复诘问,连续性的问题,供认其答复中的过错,指出人类提问时的不正确条件,回绝答复不适当的问题。

进行了简略测验,包裹但不限于以下事情他都能够做:

  • 让他给你写代码,乃至是 sql,乃至是规划架构
  • 让他给你写文章,或许概括文章
  • 让他给你写的代码生成 commit 音讯,也便是你只管写代码他来描述你做的工作
  • 让他给你重构代码
  • 让他为你讲解代码
  • 你能够随意运用中文或英文或其他言语和他对话,他能运用相当的言语答复你
  • 各种问答,基本没有显得刻意,十分流通…

以下简略出几张图:

问游戏

我为 OpenAI ChatGPT 生态处理一个致命 BUG 的经过

身份转化

我为 OpenAI ChatGPT 生态处理一个致命 BUG 的经过

解说代码

我为 OpenAI ChatGPT 生态处理一个致命 BUG 的经过

给你的代码查 bug

我为 OpenAI ChatGPT 生态处理一个致命 BUG 的经过

各种技能就不逐个罗列了,当然,我走过最深的路,便是你的套路 这句话充分说明了要是真玩起来,人都玩不过人,所以咱们不要盼望机器是先知,是上帝,答复有点不如意就以为他不过如此。

进入正题

ChatGPT 的确强壮,那怎么让他为咱们服务呢?比如简略的编程问题或常见的数据处理函数就不必谷歌了,直接问他就行,他能直接给你可运转的代码以及实现思路。

但是,他现在 不对该区域开放 ,而且注册有一些门槛,例如国内手机号是不支持的,国内网络是不能拜访的。争对这个问题,国内就呈现了许多方案,例如署理、vscode插件、镜像、国内版、同享KEY……

好啦,既然有办法能够运用,但怎么高雅的运用便是个需求考虑的问题了:

  • 官方页面 chat.openaI.com/chat 有一些痛点

    • 不支持保存聊天记录
    • 不便利二开
    • 要运用总得翻开浏览器
  • 那就先去 GITHUB 看看

    • chat-gpt-google-extension 在谷歌搜索时也显示 ChatGPT 的搜索成果
    • chatgpt-api 一个 nodejs chatgpt api
    • chatgpt-mac 在 mac 的菜单栏中直接运用 chatgpt
    • chatgpt-vscode 在 vscode 中运用 chatgpt
    • ai-cli 在 指令行中与 chatgpt 进行交互

ai-cli

我为 OpenAI ChatGPT 生态处理一个致命 BUG 的经过
根据 readme 和 star 来看,很酷很专业的款式,来,就你了。

指令行方式,即可便利运用,也可便利集成到其他程序,仍是 js 的,那就说明假设有定制化的需求也不怕掉头发啦。

# 安装
npm i @abhagsain/ai-cli -g
# 运用
ai ask 来一段express示例

运转成果

我为 OpenAI ChatGPT 生态处理一个致命 BUG 的经过

便是这么丝滑!然而并没有。

问题呈现

万丈高楼平地起,蚱蜢先从 hello world 开端~ 然而他这连 hello 都不可!

运转 ai 时需求先运用 ai auth 增加一个 key,这步没什么问题。

根据官网的示例:

ai ask "Check process running on port"

好像这串洋文有点复杂,蚱蜢先来个简略的:

> ai ask 你好
... !
    Error: Request failed with status code 400

这是仔细的?我给 AI 说 你好,然后 AI 甩我一脸 Error,莫非是 AI 不屑与我这个的废物沟通?我开端有点置疑自己……

但我假装淡定,不,一定不是!肯定是其他原因,再给他一次机会!

> ai ask 你好
... !
    Error: Request failed with status code 400

我的目光开端闪耀,笑脸逐步消失。

我为 OpenAI ChatGPT 生态处理一个致命 BUG 的经过

我再次把我的目光注视着他,ai-cli,看到他的 readme,图文并茂,看到他的 star,700+(当时舍入法),看到他的最终一次更新就在昨日,看到他的 issues 全都关闭了。看他的每一眼里,无不透露着他的自信、他的高傲,无不处处好像写着,是我自己的问题,是我不配。

忽然我灵光一闪,莫非是言语歧视?

然后我小心谨慎的向他说出,hello。一字一顿,生怕自己有半点过失。

>ai ask hello
... !
    Error: Request failed with status code 400

果然仍是错付了。这一次,我低下了头,突然发现!!!莫非是我太小了?莫非是我不够大?格局!格局!格局!

然后这些年的回想涌上心头,浮现在脑际。

  • 400?
  • 400?
  • 400?

毕竟是记忆中的伤痕发出一丝隐隐作痛,让我好像又找到一丝能够让他回眸的勇气。

这些年来做前端的回想,400 这个状况码让我意识到,或许是数据传错了。

但我就传了个 hello,也是按 readme 的格局传的。 ChatGPT 这么多人都在运用,应该问题不是出在那儿,出应该也是 500。

大概率是 ai-cli 呈现了问题,向 ChatGPT 传错了参数什么的。

提出问题

这一次我总算勇敢的抬起头,跑过去拉住他的手问他,这是我的问题吗?

嗯对,我提了一个 issues。

提 issues 之前先看看他有没有什么要求(issues 模板),
假如没有,那至少把体系(win10x64),宿主(nodejs 14.5.5),
版别(ai-cli 1.2.2),以及重现进程给写上。

最好再加上一些剖析、结论、建议啥的,但现在比较忙,就不先写剖析这些了。

所以有以下截图:

我为 OpenAI ChatGPT 生态处理一个致命 BUG 的经过

丢给他一个问题,我回身头也不会的走了。这次没有再奢求他会答复我什么。

(写其他代码去了。)

评论问题

过大约一小时,收到了一封邮件,或许是广告但仍是翻开看了一下,没想到是他的消息。我忍住不表现出自己的欢喜拆开它。

看起来他让我选检查当时 a-cli 的配置文件,然后又测验挑选一个 model。

我为 OpenAI ChatGPT 生态处理一个致命 BUG 的经过

然而,我其实并不知道他在说些什么。

只要这样,才能勉强壮概或许知道他在说什么的姿态,我好不幸……

我为 OpenAI ChatGPT 生态处理一个致命 BUG 的经过

为了防止自己不理解他的意图而给到他过错乃至是为难的答复,所以我干脆 都给你,请自取

我为 OpenAI ChatGPT 生态处理一个致命 BUG 的经过

由于我运用的是 window,我运用 type 指令来向他展现配置文件的完整路径,以及配置文件中的内容。然后再从头运转一遍 ai ask hello 来展现过错,这是为了向他表明,配置文件是没问题的,但程序仍是过错。

可是紧接着他的答复,让我逐渐理解,他便是个渣男!渣男!总是企图从我这边找问题。你看他说的,你们来评评理:

Oh, You need to pass the question in a string (double quotes) like this ai ask “Check running containers”. As I can see in the screenshot you’re passing without it.

他好像在说,我呈现这个问题是由于 ai ask hello 这条指令中的 hello 没有增加双引号。

还好我是上过小学的人,否则就被他 PUA 了!总算看清了他的面貌,于是我不再懦弱,不再让步,我现在要义正言辞的告知他:

我知道引号一般都是在参数含有空格或特别字符时才需求增加的,你不要忽悠我,而且我也是测验过的,我证明给你看,我要让你无话可说,渣男!

我为 OpenAI ChatGPT 生态处理一个致命 BUG 的经过

他无话可说,他开端自我置疑 古怪,但是他还在企图挣扎,他给了我一条 curl 指令,让我增加参数看一下是不是 OpenAI 的问题仍是他的 ai-cli 的问题。

我为 OpenAI ChatGPT 生态处理一个致命 BUG 的经过

增加自己的 key 运转 curl?当然没有问题。但他又说要保证有 OpenAI 的运用权?这可唬到我了,不过不怕,我一起接招:

直接告知他,我的账号在网页平台上运用是没有问题的,以下所给 curl 请求的报文,请检查过错。

注:在运转别人给的指令时,
请保证知道指令做的是什么事。
假如在沟通进程中有灵敏信息(例如 curl 报文中的 key),
请做脱敏处理。

我为 OpenAI ChatGPT 生态处理一个致命 BUG 的经过

但是,总感觉这样的沟通不知何时是头,尽管他是渣男,但咱们的一起目标都是解决问题,我决定伸出援手,向他供给更多更有价值的剖析和参考问题都这么明显!你!你!你!

我为 OpenAI ChatGPT 生态处理一个致命 BUG 的经过

好家伙,这下总算供认了代码过错了吧~

解决问题

其实在为他供给信息的进程中,我现已基本找到问题的原因了。理论上,以 github 上的沟通情怀而言,我应该自动修正代码解决问题,并向他提出申请把代码合并。

提(PR)仍是不提,这是个问题。由于他现在现已知道过错在代码中,并正在排查过错位置。

尽管我现已从调试进程中知道了过错位置,但假如我要提 PR ,应运用完整的流程已防止一些问题显得蚱蜢是个正经人,例如 Fork 代码到自己的名下,并 Clone 到本地,然后从他的主分支新建一个分支,命名比较简练而且能表明此分支专用于修复当时评论的 issues 。

切换到新分支之后,应从源码修正,而不是从 build 后的文件中修正。在修正时,应留意运用 最少修正最少影响范围符合原代码格局规范等规则,修正之要查询库房中有没有测验用例,假如有,应该先把测验用例跑通,防止对之前的功能造成问题。

提(PR)仍是不提,这是个问题。由于我要提这个 PR,要处理的进程仍是蛮多的,假如我刚好提了 PR,他又刚好推送了修正,修正的地方又不相一起,这时分是要我的呢?他岂不是很没面子?要他的呢我岂不是没面子。

说着说着我现已 Clone 了代码并修正完了,当我测验编译的时分:

我为 OpenAI ChatGPT 生态处理一个致命 BUG 的经过

我为 OpenAI ChatGPT 生态处理一个致命 BUG 的经过

先下手为强

我现已很难了,为什么还要这么难!

算了,直接告知他应该在哪改吧。

我为 OpenAI ChatGPT 生态处理一个致命 BUG 的经过

后来

后来,我总算学会了怎么去爱,惋惜你早已远去,消失在人海……

不好意思刚走错片场了,后来在他修复的进程中,我运用本地已解决问题的版别成功运用了他这个 ai-cli 。

发现并不是我想要的姿态,毕竟仍是错付了。