最近的 ChatGPT 应该不必我多说了,不过防止有朋友还没收到相关推送,我仍是简略介绍两句:
了解 ChatGPT
ChatGPT 是 OpenAI 的一个产品,是继GPT-3.5 系列的主力模型之一,这一模型能够与人类进行说话般的交互,能够答复诘问,连续性的问题,供认其答复中的过错,指出人类提问时的不正确条件,回绝答复不适当的问题。
进行了简略测验,包裹但不限于以下事情他都能够做:
- 让他给你写代码,乃至是 sql,乃至是规划架构
- 让他给你写文章,或许概括文章
- 让他给你写的代码生成 commit 音讯,也便是你只管写代码他来描述你做的工作
- 让他给你重构代码
- 让他为你讲解代码
- 你能够随意运用中文或英文或其他言语和他对话,他能运用相当的言语答复你
- 各种问答,基本没有显得刻意,十分流通…
以下简略出几张图:
各种技能就不逐个罗列了,当然,我走过最深的路,便是你的套路
这句话充分说明了要是真玩起来,人都玩不过人,所以咱们不要盼望机器是先知,是上帝,答复有点不如意就以为他不过如此。
进入正题
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
指令行方式,即可便利运用,也可便利集成到其他程序,仍是 js 的,那就说明假设有定制化的需求也不怕掉头发啦。
# 安装
npm i @abhagsain/ai-cli -g
# 运用
ai ask 来一段express示例
运转成果
便是这么丝滑!然而并没有。
问题呈现
万丈高楼平地起,蚱蜢先从 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
我的目光开端闪耀,笑脸逐步消失。
我再次把我的目光注视着他,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),以及重现进程给写上。
最好再加上一些剖析、结论、建议啥的,但现在比较忙,就不先写剖析这些了。
丢给他一个问题,我回身头也不会的走了。这次没有再奢求他会答复我什么。
(写其他代码去了。)
评论问题
过大约一小时,收到了一封邮件,或许是广告但仍是翻开看了一下,没想到是他的消息。我忍住不表现出自己的欢喜拆开它。
看起来他让我选检查当时 a-cli
的配置文件,然后又测验挑选一个 model。
然而,我其实并不知道他在说些什么。
只要这样,才能勉强壮概或许知道他在说什么的姿态,我好不幸……
为了防止自己不理解他的意图而给到他过错乃至是为难的答复,所以我干脆 都给你,请自取
:
由于我运用的是 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 了!总算看清了他的面貌,于是我不再懦弱,不再让步,我现在要义正言辞的告知他:
我知道引号一般都是在参数含有空格或特别字符时才需求增加的,你不要忽悠我,而且我也是测验过的,我证明给你看,我要让你无话可说,渣男!
他无话可说,他开端自我置疑 古怪
,但是他还在企图挣扎,他给了我一条 curl 指令,让我增加参数看一下是不是 OpenAI 的问题仍是他的 ai-cli 的问题。
增加自己的 key 运转 curl?当然没有问题。但他又说要保证有 OpenAI 的运用权?这可唬到我了,不过不怕,我一起接招:
直接告知他,我的账号在网页平台上运用是没有问题的,以下所给 curl 请求的报文,请检查过错。
注:在运转别人给的指令时,
请保证知道指令做的是什么事。
假如在沟通进程中有灵敏信息(例如 curl 报文中的 key),
请做脱敏处理。
但是,总感觉这样的沟通不知何时是头,尽管他是渣男,但咱们的一起目标都是解决问题,我决定伸出援手,向他供给更多更有价值的剖析和参考问题都这么明显!你!你!你!。
好家伙,这下总算供认了代码过错了吧~
解决问题
其实在为他供给信息的进程中,我现已基本找到问题的原因了。理论上,以 github 上的沟通情怀而言,我应该自动修正代码解决问题,并向他提出申请把代码合并。
提(PR)仍是不提,这是个问题。由于他现在现已知道过错在代码中,并正在排查过错位置。
尽管我现已从调试进程中知道了过错位置,但假如我要提 PR ,应运用完整的流程已防止一些问题显得蚱蜢是个正经人,例如 Fork 代码到自己的名下,并 Clone 到本地,然后从他的主分支新建一个分支,命名比较简练而且能表明此分支专用于修复当时评论的 issues 。
切换到新分支之后,应从源码修正,而不是从 build 后的文件中修正。在修正时,应留意运用 最少修正
、最少影响范围
、符合原代码格局规范
等规则,修正之要查询库房中有没有测验用例,假如有,应该先把测验用例跑通,防止对之前的功能造成问题。
提(PR)仍是不提,这是个问题。由于我要提这个 PR,要处理的进程仍是蛮多的,假如我刚好提了 PR,他又刚好推送了修正,修正的地方又不相一起,这时分是要我的呢?他岂不是很没面子?要他的呢我岂不是没面子。
说着说着我现已 Clone 了代码并修正完了,当我测验编译的时分:
先下手为强
我现已很难了,为什么还要这么难!
后来
后来,我总算学会了怎么去爱,惋惜你早已远去,消失在人海……
不好意思刚走错片场了,后来在他修复的进程中,我运用本地已解决问题的版别成功运用了他这个 ai-cli 。
发现并不是我想要的姿态,毕竟仍是错付了。