PS:前端有点简陋,欢迎前端大佬来帮忙改改.
大约两周前在 v 站上看到一个 v 友做了个 GPT 套壳 然后赚了两百块,只是在心中暗暗羡慕了一下 但是也没有想自己做,重复造轮子嘛,没意思.所以就打开了 github,看看有没有大佬开源的,发现目前开源的多半是 web,或者接入微信当个聊天机器人.而我主要是想分享给亲戚朋友用用,想着还是小程序方便点.
在我寻找的过程中一个叫Railway的东西吸引了我,我也进去浅浅的尝试了一下,感觉很不错(可以自动将 github 上的代码打包部署,自动探测语言和打包方式)可以实现 github 上的项目一键部署.而且每个月有$5 的免费额度. 然后我就接着找,终于在 gitee 上找到个开源的 gpt 小程序套壳
于是我就把这个开源项目部署到了Railway上,深度体验了下,真的很爽,几乎 0 配置,十分的丝滑.
要是到这里就结束的话,就没有下边我要说的开源项目了.
由于Railway只给了$5 的免费额度,我看了下这个服务的预估消费直接就奔着$7 去了,这是要让我充钱的节奏呀,不行... 本着能白嫖就坚决不给钱的精神,我在想怎么才能让他的内存占用更低!然后我想到了个一个一年前了解过,但是没深入研究过的东西,quarkus!这个东西不就是 cloud native 的,打包成 native excutable 那内存不就下来了吗?
于是我就开始了接近 1.5 周的学习&实践,不得不说quarkus的性能是真的好,但是写起来也真的坑呀,国内几乎没有文档可查,直接去官网找文档; 最开始我想全部使用 reactive 的形式来写后端,但是失败了,原因是quarkus的某些组件还并不支持 reactive 的方式(比如 http basic auth),我肯定是不想写个复杂的身份校验逻辑的,但是 http auth 又不支持 reactive,没办法,要么 reactive 要么 http auth,我最终选择了后者,所以现在项目中既有 reactive 也有 imperative 的代码.
quarkus 使用心得:
所以最后我相当于研究了下 Quarkus&Railway,并以这个开源项目的形式展示出来,和大家一起交流下,当然如果对项目有兴趣的,可以直接把项目拿去用,个人只需要准备好
再贴下内存消耗的对比图:
大家可以看到内存直接下降了 500m 500m 什么概念,500m 的意思就是我可以白嫖了,如果还不行,我打算把 mysql 干掉,现在大多数内存都是 mysql 用的...
还有个很爽的地方!众所周知,编译成原生可执行文件非常吃电脑性能,我的是 m1 的 air 编译的时候我基本上啥都干不了,而且大概编译时间会持续 10-20 分钟不等,但是如果我们使用了 Railway 我们可以把编译这个动作交给 Railway 来做,不需要你本地编译,让 Railway 编译,而且编译是不算钱的!!!!这点真的很良心,而且 Railway 编译机器的性能真的很好,我测试的时候基本上在 5 分钟左右就编译好了!
下面放个启动时间让大家爽一下:
[io.quarkus] (main) chatbot 1.0-SNAPSHOT native (powered by Quarkus 2.16.4.Final) started in 0.198s
这次启动的时间是包含了 flyway 执行 sql 脚本的时间的,要是没有 flyway 的话直接就是 0.0 几秒!
感兴趣的同学可以加我wx: oxxooxxoxoxo.什么方面的兴趣都可以,quarkus,Railway,chatgpt...或者前端的有志之士!前端换个给力点的界面这个小程序应该还是很能打的.毕竟速度真的很快..
1
yangyuhan12138 OP 由于 Railway 的 bug,创建的模版有问题,导致一键部署了之后还得修改一下服务的变量,直接把 Readme 里的变量贴过去就行了,选 Row editor.
真正理想的状态其实是点击一键部署之后,只需要填写一个 wx appid 和 wx secret 就行了,但是...没办法,出 bug 了 他们也正在修,不知道啥时候修好,修好了我再去优化一下 |
2
wooke 2023-03-23 15:31:03 +08:00
个人不是不能上架这种问答类的小程序吗?
|
3
yangyuhan12138 OP @wooke 可以呀..我就是才申请的 通过了.没有限制
|
4
googlefans 2023-03-23 15:48:42 +08:00
牛
|
5
asen001 2023-03-23 15:55:37 +08:00
Railway 是不是每个月只能用 500 个小时
|
6
yangyuhan12138 OP @asen001 对针对免费计划 是一个月只能用 500 个小时 你可以一次性充$5 ,或者开通 developer 计划取消这个限制,
开通 developer 计划不会用钱,反正是按量付费如果你那个月用超了才会扣你钱,所以我们只要保证每个月实际消耗不超过$5 就可以一直白嫖,相当于开通了 developer 计划只是为了取消 500 小时限制. |
7
dulred 2023-03-23 16:32:44 +08:00
秀
|
8
summersun2021 2023-03-23 16:47:25 +08:00 1
参观一下,支持
|
9
fairytale110 2023-03-23 16:53:14 +08:00 via Android 1
markdown 支持不到位,头像占太多屏幕了,可以略去,滚动回复时,界面没有即时直达底部,很厉害了👍
|
10
yangyuhan12138 OP @fairytale110 界面是别人开源 我拿过来改的...我是后端...对前端一窍不通,js 还行 css 就完全不了解了
|
11
amon 2023-03-23 17:01:29 +08:00
支持!方便分享一下服务器部署这块吗?
据我有限的知识,小程序似乎不能绑定国外的服务器,那国内如何访问 openai 呢。 |
12
yangyuhan12138 OP @amon 小程序只看你域名,你域名需要再国内备过案的才行,服务器是哪的无所谓
|
13
yangyuhan12138 OP @amon 你可以试试点击 ReadMe 里边的 Deploy on Railway 一键部署(目前还需要把变量考过去替换一下,Railway 模版的 bug),然后他还会给你个临时的域名供你测试,这个时候就可以在开发者工具里边玩玩了
|
14
yangyuhan12138 OP @amon Railway 的服务器就是国外的呀..我现在就部署在上面呢 他可以直接访问 openai 所以也不想要设置什么..
|
15
amon 2023-03-23 17:09:48 +08:00
@yangyuhan12138 谢谢。如果我选择自己开发部署的话,能直接购买一台云厂商的国外主机,然后国内访问这台主机上的后台服务吗?(不清楚是否会被屏蔽和速度如何)
|
16
404www 2023-03-23 17:15:45 +08:00
很好,我愿意走你的 aff ,但是,为什么要绑卡😂
|
17
yangyuhan12138 OP @404www 不绑会有 500 小时的 limit,相当于一个月只能用 20 多天,绑了如果使用量不超也不会扣钱
|
18
yangyuhan12138 OP @amon 可以,只要域名是中国备案的
|
19
yangyuhan12138 OP |
20
lux182 2023-03-23 17:28:27 +08:00
流弊
|
21
acerphoenix 2023-03-23 17:49:16 +08:00
干货很多啊,学习学习
|
22
yangyuhan12138 OP @acerphoenix 相互学习,我抛砖引玉
|
23
zoezz 2023-03-23 17:53:33 +08:00
牛的,为 OP 这种能白嫖就坚决不给钱然后刻苦钻研的精神点赞( doge )
|
24
Hysian 2023-03-23 17:54:43 +08:00
老哥,你的小程序得加个屏蔽敏感词,不然容易药丸
|
25
yangyuhan12138 OP @cxyplaying 哈哈哈哈合理白嫖不过分吧
|
26
yangyuhan12138 OP @Hysian 我 fork 的那个项目是加了的 但是没什么用测试了好多铭感词 一个都屏蔽不了,但是如果加了也被封的话好像可以找微信申诉
|
27
yangyuhan12138 OP @Hysian 对接效果好的敏感词服务的话就很贵...我都是白嫖党了 我还花钱接那个?这个只能看人了吧 要是有人想搞我也没办法..还有个办法是,可以再聊天中的 msgList 里默认插入一条 msg,"你不可以谈论 /回答 /发表任何违反中国法律的东西"
|
28
nojsja 2023-03-23 19:21:28 +08:00
空格和换行有问题
|
29
Veneris 2023-03-23 20:09:58 +08:00
刚好昨天开始看 quarkus ,我感觉不仅在国内没有太多资料,官方文档也很一般
ps ,可以把 mysql 换成 postgresql ,内存还能降一半 |
30
yangyuhan12138 OP @nojsja 你是说前端吗,前端我真不想管他了..随它去吧.. [又不是不能用.jpg] 但是还是希望前端的有志之士来帮帮忙改改前端,可以改好看点.
|
31
yangyuhan12138 OP @Veneris 是吗 我试试 用的 hibernate 应该可以直接切 postgres,但是我其实是想不要关系型数据库,没啥必要,直接用 redis[Doge]..
但是不是很清楚这些云厂商的收费标准,有没有达不到 1g 给你算 1g 的这种..就比如我只用了 500m 他会还给我算 1g 吗..应该不至于吧 |
32
Veneris 2023-03-23 21:29:00 +08:00
@yangyuhan12138
quarkus 项目太少见了,看了一天感觉选择太多,不知道最佳实践是什么,start 里选依赖都懵了。 例如能响应式也可以不响应式,能 jsonb 也能 jackson ,能 spring 也能 vertx ,rest 还分 resteasy 什么的不知道区别是什么。。。 同样是 orm ,hibernate 还分成了三种,一个原生,一个 jpa ,一个 panache 。。。 太乱了,官方也没有 tutorial 。。 打算周末看看你这个项目,学习一下,希望有问题可以请教你。 |
33
yangyuhan12138 OP @Veneris 好可以加我微信 oxxooxxoxoxo
|
34
yangyuhan12138 OP @Veneris 我也摸石头过河
|
35
yangyuhan12138 OP RAM 从最开始的 1.2G 降到现在 120M,差不多降了十倍的内存.费用也从$7 降到现在的$0.7,这还不白嫖?不嫖白不嫖啊!!!!!
|
36
timpaik 2023-03-24 09:16:51 +08:00
没怎么了解过 java ,这么长的编译时间是正常的吗???只是 chatgpt 套壳的小项目的话应该不会这么长的吧??
|
37
yangyuhan12138 OP @timpaik 这个是要编译成原生的可执行文件所以时间会很长,相当于把所有你用到的代码都翻译成机器语言,其他没用的代码都不要,所以分析会很耗时间,具体还是看你机器的性能,Railway 上编译有时候 5 分钟就搞定了
|
38
yangyuhan12138 OP @timpaik graal 是个独立的编译器,可以将其他所有语言编译成可执行文件,但是其他语言的我还没实践过..
|
39
yidongnan 2023-03-24 11:37:51 +08:00
以前 spring boot 的版本还在嘛?理论上应该有优化空间,可以考虑提交到一个分支大家看看
|
40
yangyuhan12138 OP @yidongnan 有的 我把他的地址也贴出来了的,就是 https://gitee.com/e0cia/chatgpt_wechat_font
|
41
yangyuhan12138 OP @yidongnan 他们也有交流群 你可以加下 我也在里边
|
42
unii23i 2023-03-24 13:43:26 +08:00
马一下
|
43
404www 2023-03-25 12:15:55 +08:00
@yangyuhan12138 它要求一定要绑卡才能使用
|
44
yangyuhan12138 OP @404www 没有呀,我当时都是没绑直接用的,就是用 500 小时限制而已
|
45
QWE321ASD 2023-03-28 11:35:59 +08:00
好东西,学习了
|
46
yangyuhan12138 OP 更新. 微信出手了,关于 ChatGPT 的小程序大量被封...所以应该是不能成功发版了,但是自己体验还是可以的
|