小白晋级大师如何设计一个支持10万人用的ChatGPT对接系统

Posted 卷福同学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小白晋级大师如何设计一个支持10万人用的ChatGPT对接系统相关的知识,希望对你有一定的参考价值。

不停地书写,方能不失在人海茫茫。

1.前言

之前给大家写了ChatGPT对接企业微信的教程,具体可看知乎链接:
【奶奶看了都会】ChatGPT3.5接入企业微信,可连续对话

文章结尾说了教程只能适用于小规模使用,网上能找到的其他ChatGPT对接钉钉、飞书、自定义网页等等教程,原理都是一样的,写个中转程序,在ChatGPT和你用的交互工具之间中转一遍。是个简单的单体系统,逻辑看下图

这种单体系统设计简单,很快就能开发完成并应用。缺点就是性能瓶颈限制在单台服务器上,无法支持高并发场景,举例说明,现在有10万人要用这个系统,系统会直接崩溃。

2.分布式ChatGPT对接系统

基于此,我们需要设计一个分布式系统,整体架构看下图

2.1 交互层

交互层就不多说了,就是用户直接使用ChatGPT的工具,可以是企业微信、钉钉、网页等等。这些工具都有对应的官方文档,简单说就是输入和输出接口

2.2 客户端层

  • 负责接收交互层传入的文本信息,转发给服务端;
  • 同时接收服务端的响应信息,回传给交互工具;
  • 缓存对话上下文,支持连续对话

这里的构想是客户端有多个请求入口,比如每个公司都有自己的企业微信,给每个公司分配指定IP的客户端。

这样做的好处是流量入口不会单一,不需要再做一层负载均衡流量分发。链路图可参考下面:

2.3注册中心

注册中心的作用:

  • 服务注册:服务端启动后,将自己的信息注册到注册中心,包括IP、端口、服务接口等。
  • 服务发现:客户端通过注册中心获取路由表,查询服务端的IP和端口,从而调用服务
  • 负载均衡:平衡流量,将客户端请求服务端的流量按特定分发策略,分配到不同的服务器上
  • 服务健康检查:维护注册中心和服务端的心跳检查,在某个实例故障时能从注册中心上移除,避免服务调用失败

简单地说,有了注册中心后,可通过给服务端水平扩容提升系统的并发能力,能支持更多人使用系统。

2.4 服务端

服务端作用:

  • 接收客户端传入的信息,包括:对话上下文、GPT key
  • 和ChatGPT API交互,接收API回传的信息文本,并回传给客户端
  • 服务降级,支持手动降级,在ChatGPT不可用时,能降级到ChatGLM、文心一言等等对话大模型,保证对话功能仍然可用。

2.5 数据存储层

主要作用:

  • 存储对话上下文数据

  • 支持数据设置过期时间,到期自动删除

  • 要求读取数据和写入数据响应时间短

3.技术选型

系统整体架构设计完后,具体用哪种语言去实现就根据自己擅长的了,这里说说我用的

  • RPC框架:Dubbo
  • 编程语言和框架:Java8、SpringBoot
  • 存储中间件:Redis
  • 注册中心:Nacos
  • 链路追踪和服务监控:Skywalking(可选)
  • 代码托管和自动化部署:阿里云-云效

4.具体实现

目前计划按上面的架构设计实现一版系统,代码不会开源,有使用需求的可以联系我

后续还会更新架构中用到的技术点的文章,大家可以点下关注,文章更新时会及时通知到的

在腾讯做只有10万人用的产品,这群工程师竟然还很高兴

鱼羊 明敏 发自 凹非寺
量子位 | 公众号 QbitAI

用眼睛打字是一种怎样的体验?

用眼睛按顺序盯一下键盘上的“a”、“l”、“g”,就能顺利打出“奥利给”这个词:

眼神示意键盘打出“我要”,输入法立马开始揣摩心意,推荐后文,同样只要给到一个眼神,就能完成输入。

这不是科幻片,也不是尚在实验室里的技术,而是已经有人实实在在使用的产品。

或许你会问,这不就是如今键盘打字的常规操作吗?

但实际上,对于不能方便地使用普通键盘的人群而言,这份我们习以为常的体验却已经等待了许久。

不动手,如何丝滑打字?

如果一个人口不能言,手不能动,那么他该如何与外界交流?

近十年来技术的进步为这个看似不可能的问题提供了多个解决路径——眼控设备目前是其中比较“平民”的一种。

简单来说,眼控仪基于眼球追踪技术,如瞳孔角膜反射技术(PCCR),能够根据光源在眼睛中产生的反射图像,通过角膜与瞳孔反射之间的角度来计算出眼动的向量,并由此判断视线的方向。

图源:Tobii Dynavox

配合上虚拟键盘,眼球控制方案便提供了一种解决输入问题的技术路径。

但输入的效率又该如何解决?举个例子,要依靠眼控打出“凉爽(liangshuang)”这样一个简单的词,就得盯着键盘完成11次点击操作,这还只是没有任何“误看”的条件下,其效率可想而知。

具体操作感受如何,不妨盯着下面这个键盘直接感受一下:

不过,得益于技术的进步,目前眼动仪在输入效率上已经有了很大的提升。

在硬件设备方面,以国际知名眼控仪厂商Tobii Dynavox的产品为例,他们对传统PCCR遥测式眼动追踪技术进行了改良——利用近红外光源在用户眼睛的角膜和瞳孔上产生反射图像,然后使用2个图像传感器采集眼睛和反射图像位置,结合图像处理算法和三维眼球模型,就能更加精确地计算出眼睛在空间中的位置和视线位置。

如此一来,对于一个熟悉眼控操作的用户而言,这样的眼控仪支持最低0.1秒的注视时间设置。

最快只要盯住按键0.1秒,就能完成1次点击操作。

解决了硬件的问题,想要进一步提升效率,减少操作步骤便成了最好的选择,而这只能从软件侧发力。

说起来技术方案很清晰:通过支持缩写打字、智能联想等等功能,提供更准确的候选词汇,在减少输入操作的同时,提升输入的准确率。

事实却并非如此,虽然市面上面向普通人的输入法的技术方案已经非常成熟,但是想要在眼动输入上复制这些能力,依然存在不少障碍。

最主要的难点在于用户使用习惯的差异,对输入法背后的语言模型、语料库都提出了全新的要求。

再直白一点说,就是不仅算法模型得重新调参,语料库往往也需要重新筛选整理。

纠错算法为例,对于普通的键盘输入而言,由于打字通常比较连贯、速度较快,算法通常是聚焦于音节层来实现纠错。

但对于眼动输入这样逐字符点击的输入方式,更多时候,错误会出现在字符层上。需要通过定位按键位置、联系上下文等方式,让语言模型对错误输入进行重新计算。

“把应该做的事情做了”

不难看出,想要做成眼动输入这么一件更多面向少数群体的“小事”,并不是那么容易。

作为科技观察者,我们也不由好奇,研发团队为何会关注到这样“小众”的需求?这并不符合商业逻辑,因为与投入相比收益几乎可以忽略不计。

可真当我们联系上了背后输入法方案的提供方——腾讯旗下的搜狗输入法团队,却发现,站在他们自身的角度,这件事顺理成章得有些不值一提。

总结起来就简简单单一句话,“把应该做的事做了”。

搜狗输入法无障碍产品专家赵义涛解释,一开始,他只是偶然看到了公司内网的一个帖子,内容涉及Tobii Dynavox正在寻求的输入法技术助力:

搜狗输入法有眼控仪版本吗?

赵义涛当即产生了兴趣。此前,他的团队曾负责开发搜狗输入法中点点输入的功能——仅靠鼠标点击就能实现高效打字,这同样是一个面向特殊人群开发的输入方式。

点点输入

Tobii是眼动控制领域的专家,他们缺少的是输入法专家的帮助。搜狗做了15年输入法,我觉得特别适合参与到这个项目当中。

虽然,按照互联网的既有思考模式,“眼动输入”这样一个项目,无疑级别很低——相较于用户数量超过4.5亿的搜狗输入法本体,大多数无障碍输入法服务的用户量级,可能也不过在十万左右。

但赵义涛的想法,却很快被推动着成为了现实。

甚至连一次程序员和产品经理之间的办公室“battle”都没有发生。

没太考虑过有没有搞头的事情。觉得这是个好事,大家就非常快地投入进去了。

赵义涛的技术同事邵亚飞还透露,眼动输入的需求过来的时候,他自身的工作排期其实已经比较满了。

但这个事情本身很有意义嘛,就觉得自己总能抽出时间,把活儿扛下来。

无关于KPI,也无关于自上而下的压力,这支团队透露出的讯息,更多就是“这件事需要有人去做,我们又具备能力去做,于是自然而然就做了”。

甚至是这样一种心态:

对的事我们看到了,就要去做,不能指望别人来做!

用科技的温度让每个人发声

正是抱有这种心态,在无障碍输入方面,搜狗输入法不仅做了眼动输入,还推出了点点输入、视障输入、长辈输入等一系列无障碍输入功能。

与诸多动辄上亿用户的应用相比,这些产品的DAU显得有些微不足道——以上线2年为例的点点输入为例,用户日均活跃度仅在10万左右。

但就是10万日活这么一个并不亮眼的数字,让赵义涛和他的同事们感到震惊。

因为,这个数字意味着,每天都有约10万个人只能用自己有限的肢体能力一点点拖动鼠标、敲击下自己心中的字符,才能与外界搭建起沟通的桥梁。

或许这还只是特殊人群的冰山一角。

据统计,我国有超过8500万特殊群体,相当于德国全体公民的数量。其中有超过1700万视障人士、超过600万脑瘫患者,且每年新增患儿达4.6万。

在如此现实下,仅凭一个产品、团队、公司“单打独斗”,多少有些势单力薄,无法满足整个社会的公益需求。唯有联动更多方的力量,才能将这块公益蛋糕做得更大。

搜狗输入法及其背后的腾讯,作为率先在国内信息无障碍领域迈出一步的科技力量,显然也想到了这条路。

最近,在中国残疾人联合会下属中国残疾人辅助器具中心的指导下,搜狗输入法联合深圳市信息无障碍研究会、全国残疾人用品开发供应总站共同发起“众声无障碍输入公益计划”。

计划包括两部分内容。

一方面,将由中国残疾人辅助器具中心和深圳市信息无障碍研究会专家、搜狗输入法产品专家、各合作企业产品专家及各特殊群体用户代表组成联合调研专家组,针对特殊人群生活交流需求进行深入调研,并形成公开报告,为行业内各类产品的无障碍优化适配提供参考,帮助产品更快速研发、更新、迭代。

另一方面,通过搭建无障碍输入开放平台,向行业免费开放包括视障输入、长辈模式输入以及OCR读图、AI手语翻译在内的技术方案,以降低行业重复“造轮子”的成本。

之所以大举开放技术,原因只有一个:独木不成林。

这也是此次腾讯发布该公益计划的最主要目的,就是期待发动行业内的力量,将搜狗输入法在无障碍输入上的经验模式延续到更多被忽视的社会角落中去,让更多特殊群体能够被社会看到、发出自己的声音。

每个人都可能是“少数派”

仓廪实而知礼节。放眼当下我们不难发现,利用最前沿科技提高少数群体生活质量,已经成为科技圈内的一种趋势。

去年5月,脑机接口帮助截瘫患者用“意念”打字曾登上顶级学术期刊《Nature》封面。

在这项研究中,一位已经丧失上肢能力十余年的70岁瘫痪患者,在斯坦福大学脑机接口团队的帮助下,可以用“意念”以0.5秒一个字母的速度输出文字,正确率高达99.1%。

表面看,这一切聚焦的群体并不“主流”,生活中并不常见。

但背后更深层次需要思考的问题是,在这个科技日新月异的时代里,我们每个人都有可能成为“少数派”。

而这也是为何类似搜狗输入法程序员这样的举动,会如此令人感慨。

因为当技术的目光聚焦向少数人后,其意义将不再局限于一次产品开发、改善某个群体的生活质量那样单薄,而是透露出用技术填补社会差异鸿沟、让人人都不被忽略的希望。

科技浪潮奔腾翻滚,希望再小众的少数派,都不会被遗落在社会的角落里。

以上是关于小白晋级大师如何设计一个支持10万人用的ChatGPT对接系统的主要内容,如果未能解决你的问题,请参考以下文章

使用系统经验-小白的独白

赛事快报完美大师赛战报 Eclipse晋级胜者组决赛

2021-2022-2 ACM集训队每周程序设计竞赛(10) - 问题 E: 十万人如何交换名片- 题解

历经10年,我写了一个没人用的编程语言

小白晋级达人必备 电视接口使用介绍

绝了!晋级必备MyCat性能调优笔记,图文并茂,细节好评