关于 ChatGPT 的个人理解和前端实践

4,999 阅读8分钟

前言

本篇文章的内容,包括项目都是 ChatGPT 辅助完成的,有很多简介,专业术语、代码实现都是问的 TA,边问边写。

开篇会以 ChatGPT 介绍为主,文末会重点介绍如何搭建专属行业的数字人(这里会涉及到前端一个比较有意思的技术点),文末有小程序体验二维码

下面某些场景会以“TA”来代指 ChatGPT,当然,我相信有一天“TA”会变成“他”和“她”~

ChatGPT 是什么

TA 是一种基于人工智能技术的自然语言处理工具,它可以模拟人类的对话方式,实现与人类的交互。TA 的核心技术是GPT(Generative Pre-trained Transformer)模型,TA 是一种基于Transformer架构的自然语言生成模型,由OpenAI公司开发。

ChatGPT 的优势

TA 通过学习大量的语言数据,可以模拟人类的语言表达方式,理解人类的语言意图,并且可以根据对话上下文生成自然流畅的回复。

ChatGPT 应用场景

TA 可以应用于多个领域,例如客服机器人、智能助手、智能客服甚至能完成撰写邮件、设计素材、视频脚本、文案、翻译、代码,写论文等任务。 TA 的应用场景非常广泛,它可以为企业提供高效的客服解决方案,减少客服人员的工作量,提高客户满意度。同时,TA 还可以为智能家居、智能汽车等领域提供智能化的语音交互解决方案,让人们更加方便地使用智能设备。

周围已经很多朋友开始训练各行业模型了,比如说帮大学生写论文(当然不推荐),保险行业导师、生成特定图片素材等等,目前我主要把TA当作工具来用,比如写文章、写脚本和格式化特定数据文件等。

总之,ChatGpt是一种非常有前景的人工智能技术,它可以为人们带来更加智能化、高效化的语言交互体验,为企业提供更加优质的客户服务。

呃~以上官方话术很多是 TA 自己介绍的自己

ChatGPT 如何使用

知乎:只需访问 chat.openai.com 并创建一个 OpenAI 帐户即可访问 ChatGPT。登录后,您就可以开始使用 ChatGPT 聊天了...

image.png

当然很扯,看上图就知道没那么简单了

实际上需要做:

1. 国外服务器代理

国内是无法直接访问的(香港🇨🇳服务器也不行),所以得挂个代理,伪装在日本、新加坡或者美国,我们租的是日本服务器

2. 拥有一个美国手机号

接码平台注册:打开网站:sms-activate.org/  使用邮箱注册,选择充值1$,可以用支付宝,充值完毕会随机分配一个手机号。

我们使用的手机号是之前创业的一个合伙人的手机号,他是定居美国,所以直接用的他的。

3. 注册 OpenAI

打开链接 beta.openai.com/signup  选择使用 Google 登录即可,第二步中输入分配给你的手机号,然后发送验证码,回到刚刚的接码平台,就能看到收到的验证码了(20min有效)

4. 访问

重新登录:chat.openai.com/auth/login

然后访问:chat.openai.com/chat

和注册美区 Apple ID 差不多的流程,当然也支持公司账户注册

ChatGPT 怎么收费?

最新官方定价——每1k个token的价格为0.002美元,比现有的GPT-3.5模型便宜10倍!

没错,是按字收费的,中文的话按两个 token 计算,因为 TA 的成本主要集中在服务器成本和算力成本,光参数都不到2000亿个,可想而知成本是相当大的,这个也是和传统搜索引擎相比最大的一个缺点,毕竟搜索是免费的,所以这些成本会均摊在用户请求的每个字符上,按 token 计费

注册账号后每个账户会发放18$的赠送金额,如果用完了是需要付费的

ChatGPT 开发专属数字人

训练范围

那有了账号之后可以随时和 TA 进行问答了,但是问题也来了,大家都用一个 TA 问问题,训练模型,那 TA 听谁的呢? 举个例子:

小红问:乾隆和雍正什么关系

TA:乾隆是雍正他爹

小红:啊?应该是雍正是乾隆他爹啊,记住了吗?

TA:记住了


小明问:乾隆和雍正什么关系

TA:乾隆是雍正他爹

小明:雍正是乾隆他爷爷,记住了吗

TA:记住了

这时候小强也问了同样的问题,那么 TA 怎么回答?

答案是:各自回答各自账号训练范围内的答案。

其实不难理解,就像 gitlab 代码仓库管理一样,TA 也会有一个基座数据,相当于代码主仓库,每个账户是基于基座数据 fork 出来的个人仓库,允许在个人仓库训练特定行业数据,但是不允许合并到基座。一句话理解:不能 merge 到基座, 只能 rebase 基座数据到个人仓库。

基座数据目前只更到2021年,所以需要用户去手动训练一些新的数据(如果有需求的话),当然由于 TA 是一个持续更新的模型,数据会随着时间推移而不断的更新。

OpenAI API

OpenAI提供了API接口,通过这个接口,开发者可以使用 chatGPT 等 OpenAI 模型来构建自己的应用程序。

也就是我们可以通过调用开源接口来搭建自己的专属应用,也就是某个行业专属的数字人。

上下文记录

体验过的可能了解 TA 是能记录并且分析上下文的,在 API 中每个请求支持的最大 token 数为 4000,一般会设置回答占 2000 token,上下文用 2000 token,这样当你提问的时候 TA 会优先结合存储的上下文给出 TA 认为最匹配的回答,这也是能进行持续性对话的基础。

前端er需要搞点什么

既然有开源接口,那后端需要做的是作为 client 向 server 发送请求来调用开源 API(国外服务器挂代理的原因)

前端需要做的是实现一个和 TA 有相同功能的 UI 界面(就以聊天对话场景为例):

1. 需要做聊天交互组件

比如说需要支持文字,文件,视频,图片等展示,推荐一个开源 UI 库:ChatUI

这个是阿里小蜜团队开源的聊天组件,也就是淘宝里的机器人客服的 UI

2.服务端推送数据接收-字节流

体验过 TA 的聊天方式的人不难看出,TA 在回答问题的时候是逐字逐句回答的,每一个字或者每一句都有可能停顿,然后再返回,像极了人类在思考或者输入的状态,那 TA 是怎么做的呢?

因为涉及到聊天,所以作为前端来说第一想到的是需要升级 http 协议为 websoket,然后通过服务端广播,客户端监听接收来实现;

然而并不用这么麻烦!!!重点来了!!!👇

OpenAI API 是一个字一个字生成的边生成边输出,接口返回的是 generator 格式,也就是流式文本数据。

通常来说普通的 http 请求我们会设置 content-type:application/json,也就是是获取带有结构体的 json 数据,如果在这种请求场景下,你让 TA 写一篇长篇小说,那得等很久才能看到结果~,因为数据量太大了而且需要计算,等接口返回的时候是所有数据加载完的结果。

如果是 generator 格式,对应的 content-type:application/octet-stream,那么通过 ES6 中的 async/await 关键字以及 fetch API来接收 generator 对象并将其循环输出到网页上即可(下面是 ChatGPT 给出的示例代码):

6e28889cb70d88c524c642343b6f89df.jpg

其实流对于前端来说并不陌生,很多文件的下载都是基于流文件处理的,但是这种 generator 的结构我是第一次有场景用到,所以感觉还挺有意思的~

简单放了 generator 的动图,因为有大小限制所以不太清晰,文末有完整小程序体验链接码,感兴趣的可以扫码体验下

51a78c7e-d9fd-48cc-ba08-64ca3e13a0c6.gif

上图可以看到左侧文字一直在输出,右侧接口请求 response 并没有内容,只是 time 一直在 pendding

3.利用 ChatGPT 写代码

其实对于开发来讲,TA 比查文档解决问题的效率高的不是一点半点,注解比某些官方文档写的都细致,比如

下面是用python 生成微信 js-sdk 签名的代码示例:

image.png image.png image.png image.png image.png

个人觉得比微信文档写的要清楚多了...

效果演示

ChatGPT 项目体验

微信小程序搜索“猿记忆”或者扫下面二维码即可体验(入口放到了小程序首页)👇 gh_ca8057dba0b4_1280 (1).jpg

image.png

上面是一个开放的小程序作为示例体验,回答的问题可能比较基础,没有针对某个行业做单独训练,模型比较干净👆;朋友公司是保险行业,已经用这个训练出保险行业的数字人,据说已经训练了上百万条数据,期待最近能有好的收获,但是由于数据比较敏感只能贴几张图(已训练好行业模型的示例)👇。

20681678627854_.pic.jpg 20691678627866_.pic.jpg 20701678627881_.pic.jpg

训练好的模型已经支持文本、图片、视频、文件等

ChatGPT 发展前景

未来每个行业可能都会需要训练出一个专属的模型,来做一些重复性的低级别的工作,来提效降成本,所以所有参与者,开发者未来都会充当一个调参师的角色,所以高效的训练模型是未来 B 端业务值得做的一件事。

总结

说了这么多,目前还没有看到某个行业广泛使用,基本上都是图个新鲜在观望,那原因我分析现在有两个门槛摆在开发者面前,一个是国内未开放,要接入到国内成本还是比较高的,另外一个是行业数据手动训练的成本也很高,所以希望百度能够解决这两个问题,还是很期待三月份文心一言的上线,到时候体验体验👊

以上都是周末短时间内的个人理解,如有错误欢迎评论指正~

本文正在参加 ✍🏻 技术视角深入 ChatGPT 征文活动