前段时间一直在玩stable diffusion和dreambooth,生成了我这个知乎头像。而对于chatgpt,我一直还只是把它作为我的个人助理,有一天被朋友问到能用chatgpt做些什么呢?那段时间一直苦于起名字的事,朋友说要不就做个起个名的小程序吧,说干就干,看看一个不懂前端的我能不能一周内上线个小程序
后端:后端其实比较简单,主要就是对接的openai的api,openai也给了各个语言的sdk,因为我的主力开发语言是java,引入maven依赖
封装下对应的api调用,openai要有complete和chat两种类型的api可以调用,如果是单纯起个名字不需要上下文信息其实使用complete就可以,然而openai说了gpt-3.5-turbo的价格更便宜,差不多在十分之一,本着省钱精神,自然选择了gpt-3.5-turbo,调用非常简单,构造一个List<ChatMessage>, 指定模型与temperature参数即可。
temperature这个参数取值为0-1,越大代表模型回答的发散性越大,考虑到我这个起名字应用是希望能有着更多样性的回答,我将temperature从一般的0.7调到了0.8,这里向大家介绍一个调试参数的s很轻,就是openai自身的playgroud: https://platform.openai.com/playground 可以在页面上指定各个参数
2. 前端:重点来了,因为我本身是一个后端程序员,不懂小程序开发,要在一星期内学会并真正开发出来时间是不太够的,所以我就直接问下了chatgpt
chatgpt基本把整个架子搭好了,运行下还是那么回事。随着自己对ui的要求改善,后续就是不断折磨chatgpt的过程,竟然有种产品经理指着程序员干活的感觉,比如我需要在首页的每个场景加个图片
再比如让他调整下样式(这里还说错了,可是gpt4依然理解的很好)
我现在觉得自己活脱脱就是一个拿着小皮筋的产品经理
终于在我百般折磨下,终于把整个UI搞定了,在专业UI看来也许很差,但对于我来说已经心满意足了
3. 部署: 这一块我使用的是云托管,这里真的要给腾讯点个赞,整个个开发部署流程非常流程,容器化部署,serverless,CICD,对于个人开发者来说真的节省了很大的部署部署运维成本。这一块按照官方文档来即可。
4. prompt engineering: 虽然这个应用很简单,但还是用到了一些prompt engineering的知识,主要体现在当用户为宝宝起名字的时候,即使用户给了姓名,大模型仍然不会给出连着姓的全名,这里需要增加一些例子给到prompt,也就是few shot prompt, 我的system message如下
当然这里还有一个bug,就是在起公司名字的时候,当用户指定的字数过多时,比如5个字,大模型仍然不能识别总的字数长度,我为了这个问题试了few shot prompting,甚至考虑加入思维连,但是效果都不是太令我满意,如果有大神有这方面的经验也欢迎指正
5. 上线: 小程序上线需要走审批上线流程,这里需要把基础的各个信息都填完整,第一次上线审批时间比较久,我差不多用了一天多的时间。
总结:
我算了一下,从第一次commit到最后正式上线正好用了一周时间,这个对于我一个完全不懂小程序的人来说还是非常短的一个时间,再次感叹AI的时代已经正式到来。希望这篇文章能帮到大家,如果有问题,也欢迎讨论,让我们更好地让AI为我所用(这篇文章全是人工完成,没有chatgpt参与,第一次写,大家多多包涵)
小程序: 小程序搜索 "起个名字啊"