本文正在参加 人工智能创作者扶持方案
1.前言
之前给大家写了ChatGPT对接企业微信的教程,详细可看知乎链接:zhuanlan.zhihu.com/p/611555021
文章结束说了教程只能适用于小规模运用,网上能找到的其他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.详细实现
现在方案按上面的架构规划实现一版体系,有运用需求的能够联系我,
后续还会更新架构中用到的技能点的文章,欢迎大家继续关注