当前位置:首页|资讯|ChatGPT|OpenAI

Kotlin写个chatgpt client,然而却连不上?

作者:pathologyenigma发布时间:2023-03-07

Kotlin是个什么东西,想必各位都知道,尤其是一些安卓工程师应当是相当熟悉,最近正好openai的api更新了gpt-3.5的支持,找了一下官方和社区的各语言的binding,没有在下喜欢的rust,go语言虽会但不喜欢,crystal的那个3年未更新,scala看不出来是scala3还是scala2不敢随便动手,PHP嘛(虽然是“最好的”语言,但是我真的实际用过,所以就......),python这语言在下从未系统学过(大一新生的时候作为学院的计算机协会的考核科目,当时是安排所有人自学,然后考试来着,也就当时学了点皮毛),Ruby不熟(是的,crystal会一点,但ruby只能说不熟),R语言想必很多人可能甚至没有听说过,swift的嘛在下倒是安装了一个,但由于某些问题,在windows或者linux上其编译器总是有点水土不服,unity和虚幻的binding就有点过了,至于c#嘛,和不选择java的理由类似,语法太啰嗦了

说了那么多废话其实就是为自己开个kotlin的新坑找了点借口,具体内容如题

先简单的认识一下kotlin,各位可以在其官网选择为java开发者准备的文档,花上片刻便可快速上手,由于其买IDE送语言的特点,我们需要安装IntelliJ IDEA或者Android studio(不装也行,但vscode并没有足够好用的插件,最后还是得使用IDEA)

废话不多说,直接一个spring reactive webflux项目(在spring starter那里直接选就行了),这里我选择的java版本是19,语言当然要选择kotlin(不然岂不是java教程?),记得选gradle而不是maven

下载完成后,依赖大概是这样(阿b居然没有kotlin的代码块):

简单的写个route,看看能不能跑起来:

不出意外的话,8080端口下的/路径应当有一句unimplemented!

那么我们其实就很简单的需要搞一个页面来显示聊天,然后一个处理聊天信息并发给chatgpt,处理完以后返回给客户端的接口

我们可以很简单的就搞一个ws,来接收服务器消息,也可以直接作为返回值发给客户端

这里不妨升级一下难度,搞一个graphql api来处理请求和返回消息,此时其实就只有一个query和一个subscription或者只有一个query,但也能稍微熟悉一下语言(是的,其实我不会kotlin)

那么我们既然已经用了spring,就去找该框架下的graphql解决方案吧

由于spring的官方资料几乎99%都是java的,我们需要想办法替换为等价的kotlin代码,这里就不细说java版本直接给出kotlin的版本(毕竟人人都会点java对吧)

简单的编写一下schema:

简单来说该项目就只有两个接口,一个query(其实如果你需要在服务器记录聊天历史,保存聊天相关的东西,那么此时该行为应该为一个mutation,而且此时将需要额外的query来获取聊天历史记录),一个subscription

这里为了测试我们先将query的返回值改成String,毕竟核心逻辑失败了也就没有后续了

那么我需要加入一些依赖:

然后简单的修改一下controller(这里需要各位填写自己的token):

对于这个人均java高手的时代,这点代码想必也无需在下多言

然而,在下屡次尝试均只能得到连接超时的提示,多次尝试后,现在更是连openai的官网都进不去了

原因不清楚,但各位如果使用上述代码成功的话,不妨告知在下

为了确定是否为在下使用的技术栈的问题,在下分别尝试了官方的nodejs项目,和自己用普通的post请求发请求到api,均返回socket超时(是否科学上网情况下均尝试过,结果相同)

nodejs项目超时
直接发post请求超时

各位如果知道究竟是什么原因的,不妨指点在下一番,不胜感激

本文本来是找个接口尝试kotlin,但选择的项目以失败告终,或许还会有kotlin的系列,但考虑到在下本身更喜欢.net系的东西,可能会做F#的内容也不一定



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1